Skip to content

Archive

Category: Mobile
今天CrystaX终于发布了从官方NDK r7修改而来的定制版Android NDK r7。主要的变化有: 宽字符 Google的NDK无法很好地支持宽字符,不管是在C还是C++里。CrystaX NDK含有完全兼容标准的宽字符支持,所以可以更容易地把使用了宽字符/string/stream的现有代码和新代码移植过去。 新的4.6.3工具链 从r7-crystax-1开始,CrystaX NDK包含了两个版本的编译器工具链:4.4.3(老的,和Google用的一样)以及4.6.3(新的)。 新工具链包含了GCC 4.6.3,它包含了Graphite framework,可以让gcc做一些高层内存优化。 为了兼容于Google的NDK,4.6.3工具链不是默认打开的。打开它需要在Application.mk里加一行: APP_TOOLCHAIN_VERSION := 4.6.3 ...
[zh] 继glloader移植到Android之后,KlayGE也可以在Android上执行了。虽然,严格来说,只是能跑最最基本的空框架。 由于我没有Android真机,模拟器又无法执行OpenGL ES 2,所以我的测试方法是在最老的Asus EeePC上执行Android x86。空框架EmptyApp目前可以顺利执行: [/zh] [en] After porting glloader to Android, KlayGE can be run on Android too. Technically, it's only a empty framework. Since I don't have a real Android device, and the emulator can't run OpenGL ES 2, I have to test it on an old Asus EeePC with Android x86. The empty framework "EmptyApp" runs well on it: [/en] [zh] ...
Android从NDK r5之后,就支持使用纯C/C++编写App。但按照NDK中的例子,纯C/C++写的代码总是异于其它平台。它的程序入口是void android_main(struct android_app* state),而不是其它平台通用的int main()。 就其本质,是因为android上没有其它平台的CRT来调用入口,而是通过android_native_app_glue这个库把native的代码和java端粘起来。所以,我们可以通过修改android_native_app_glue库,来实现和其它平台一样的int main()入口。 可以观察到,android_native_app_glue需要提供给android_main一个关键的参数:android_app指针。同时,android_main里面需要调用android_dummy()这个空函数来保证android_native_app_glue不会被优化器删 ...
glloader,作为KlayGE的一个子项目,是OpenGL扩展载入库,可以载入OpenGL 1.0-4.2,OpenGL ES 1.0-2.0,以及WGL、GLX等OpenGL扩展。只要编写xml脚本就能自动生成扩展载入代码。 在王锐的帮助下,glloader完成了移植到Android的工作。目前glloader可以用NDK r6和r7进行编译,在模拟器和真机Xoom上均测试通过。目前,支持Android的glloader代码可以在hg上找到。正式版本glloader 4.0将会在晚些时候发布。 这里有一个在Android NDK中使用glloader的例子,从NDK自带的native-activity修改而来。从这里可以看出,从原先的直接调用GLES改为使用glloader之需要修改#include和link选项。 native-activity.7z 需要注意的是,由于NDK r6的 ...
随着Android 4.0的发布,NDK也更新到了r7。不用白不用,我就下了一个试试。在初探的过程中,发现一些令人惊喜的地方。 惊喜1:不再需要Cygwin才能编译 这个惊喜其实在release note里就有提到,标记为Experimental features。 NDK r7提供了ndk-build.cmd和make等,可以直接在Windows上调用ndk-build了,不再需要Cygwin。但是ndk-gdb仍然必须有Cygwin才能debug。 惊喜2:wstring的支持 没有任何地方提到这一点,而且是默认关闭的。 原先的NDK在android-9下是支持wchar_t的,但是不支持wstring、wstringstream等。当需要用到那些的时候,就得用第三方定制的NDK,比如CrystaX NDK r6。但CyrstaX更新速度较慢,还没有对应于r7的版本。我 ...
From http://android-developers.blogspot.com/2011/11/updated-ndk-for-android-40.html Today we are releasing an updated version of the Android NDK, now in revision 7. The updated NDK lets developers who are using native code get started with the new native APIs available in Android 4.0. Android NDK r7 includes a number of build system improvements and bug fixes, but most importantly it gives you access to two new sets of APIs: Low-level streaming multimedia: A new API based on Khronos OpenMAX AL 1.0.1 provides a direct, efficient path for low-level streaming multimedia. The new path is ...
[zh] 本文的目的不是为了完整地把Python 3.2移植到Android,只是希望编译出能用在自己程序里的链接库。 完成boost 1.47的移植之后,下一个目标就是Python 3.2。目前Python只有2.6.2非官方地移植到了Android(见P4A),他们迟迟不开始移植3.x,主要原因是他们认为3.x没用-_-。看来这件事情只能自己做了。由于Python 3.x和之前的版本有着巨大的区别,其难度完全不可预测。 准备工作 需要下载 Python 3.2.0 Crystax's NDK r6 Cygwin P4A configure 按照linux平台的老习惯,很多配置是写在.in文件中,需要用configure来生成出对应的.c或者.h。这里需要特别注意的是,需要让configure用NDK的工具链: ./configure --host=a ...
[zh] 在PC上的C++开发中,boost已经很普遍。但对于Android这样的移动平台呢?由于KlayGE正在移植Android,作为依赖库之一的boost也必须移植过去。官方的boost并没有提供Android支持,看来得自己做了。 受MysticTreeGames的Boost-for-Android启发,我想用最新的Crystax NDK来编译boost 1.47。 准备工作 需要下载 boost 1.47 Crystax's NDK r6 MysticTreeGames的Boost-for-Android 补丁 首先,MysticTreeGames的补丁是基于boost 1.45和官方的NDK r5,在最新版上不一定能完美运作。因为有些源文件在1.45到1.47的过程中更改了,无法自动打上补丁。所以我手工地在原始的boost 1.47上根据补丁进行修改。其实不太难,因为只有12 ...
多年以来雷声大雨点小的MeeGo系统终于迎来了第一款手机。诺基亚在Nokia Connection 2011大会上拿出了这款传闻已久的N9。此次诺基亚带来的N9与之前传闻中的N9并不相同,因为诺基亚N9为全触屏设计,没有采用类似E7的侧滑布局。 以下内容来自mydrivers.com 诺基亚N9机身尺寸为116.45×61.2×7.6-12.1mm,重量为135克,整机采用聚碳酸酯材料,手感非常不错。配有一块3.9英寸854×480像素AMOLED屏幕,采用弧面设计,使用大猩猩玻璃保护屏,支持抗眩光。该机内置德州仪器OMAP 3630 1GHz处理器,内置PowerVR SGX530 GPU,拥有1GB RAM内存和16GB存储空间,安装MeeGo 1.2版系统。 诺基亚N9的宣传视频告知我们,N9采用800万像素卡尔蔡司镜头、 ...
在日前举行的MWC2011上,HTC正式发布首款Android平板电脑HTC Flyer。从发布现场的图片看,Flyer的配置不错: 7寸触摸屏,分辨率1024x600 1.5GHz高通单核处理器 双摄像头 WIFI,HSPA+ Flash 10,HTML 5 电池时间6小时 HD摄像 32GB Flash Memory 在Android 3.0正式发布之后,Flyer将可以通过OTA来更新。 以下是瘾科技现场所拍照片 边框有点厚,不知道是技术原因还是故意的。 以下是瘾科技现场所拍照片