早就知道Java有个jni可以调用本地化代码,一直没有动力去研究它,现在公司想通过在Android中调用本地化代码来申请较多的内存以突破Android对单个进程的内存限制,这确实是可行的:我的Nexus4内存2G,Android限制每个进程64M内存,而我用NDK写代码申请到了1,276,641,280字节。在学NDK开发的过程中遇到了各种问题,现在我将在解决问题过程中收集到的一些链接贴出来以助后人。
android NDK与Cygwin配置
ndk不大,只有400多M;Cygwin很大,全选有6G,安装后17G,我下了一天才下好的,所以不要全选。
Android NDK开发入门实例
这篇文章给我这种零基础的jni使用者大概地描述了NDK开发的全程,文中例子的例子改编自$(NDK)/samples/hello-jni,另注意: -classpath bin/classes(作者的开发工具可能比较老)
Android JNI知识简介这篇文章更深入地介绍了jni
在上面这篇文章中我学到了ndk-build clean,可是clean的时候报错了:
/cygdrive/d/android-ndk-r8e/build/core/build-binary.mk:52: recipe for target `clean-cocos_curl_static-armeabi' failed
百度到了解决方案:http://bbs.csdn.net/topics/390415433?page=1
Android NDK编译带STL的 C/C++ 程序
APP_CFLAGS += -fexceptions,以及LOCAL_SRC_FILES 也可以是树形结构的多源文件
java学习之JNI 学习五 处理数组
这篇文章讲了native中怎么操作java中的数组,jni真的是无所不能啊!
android开发--- jni使用RegisterNatives注册本地方法
RegisterNatives最好不要用,经过试验它没有提高调用native方法的效率,还经常导致无法解释的UnsatisfiedLinkError,但是这篇文章的宏定义值得COPY。