Android之NDK开发再探
通过SDK/NDK构建的基于本地功能的程序能够比较方便地迁移到实际的运行平台上。
一般对于SDK-eclipxe创建的JAVA应用程序,可以将整个工程目录复制到文件系统源码的development/samples之下,和SDK的一些例程放在一起,虽然不是最符合规范,但比较方便,基本不需要对mk文件进行任何配置和改变。
对于本地程序,NDK开发环境只提供了一些基本的C/C++库的支持,因此只适合简单功能模块的SDK/NDK联调或写一些stubs。对需要应用到更多的底层功能情形,应考虑直接在文件系统源码中直接开发本地程序,只要最终对JNI的入口是位于unix/linux体系的Shared Library(so扩展名文件)即可。在Android的makefile体系中,已经定义了各种目标形式的scripts,可以直接在底行中引入:
include $(BUILD_SHARED_LIBRARY)
即可完成Shard Library的创建。由于孤立的自行的创建库没有链入Android的prelink体系,需要将这个功能关闭,在mk中添加变量设置:
LOCAL_PRELINK_MODULE := false
这样最终就能在目标的/system/lib中生成以LOCAL_MODULE变量命名的so文件模块(libxxx.so)。在JAVA应用中只需load一下xxx即可。
enjoy every minute of an appless, googless and oracless life