android ndk8 编译环境搭建及hellojni测试
参考文档:
http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html
http://blog.****.net/cboy017/article/details/8455629
为何要用到NDK?
我们正常的android应用开发是用不到NDK的开发的,SDK开发就够了,正常开发环境也就eclipse+sdk+adt就OK了。
但是,如果遇到一些移植的C/C++功能模块的时候,NDK的开发就显得尤为便捷。
概括来说主要分为以下几种情况:
1. 代码的保护,由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
2. 在NDK中调用第三方C/C++库,因为大部分的开源库都是用C/C++代码编写的。
3. 便于移植,用C/C++写得库可以方便在其他的嵌入式平台上再次使用。
到主页下载NDK
http://developer.android.com/tools/sdk/ndk/index.html
我们从安装说明中也可以看到需要安装cywin1.7以上的是为了c/c++代码的交叉编译
下载NDK后,在eclipse->preferences->android->ndk中选择正确的路径
安装cywin
编译NDK,在默认设置下,只需选择Devel(点击列表中Devel,将后面的Default改为Install,图中箭头所示)其它均为默认状态。
(其实NDK需要的不多,主要autoconf2.1、automake1.10、binutils、gcc-core、gcc- , g++、gcc4-core、
gcc4-g++、gdb、pcre、pcre-devel、gawk、make )
下载完成时间决定于你选择的安装包数量及网络连接速度。
配置cygwin
在命令行中进入cygwin目录,并执行cygwin.bat,如果你不是用Administrator账号登录的系统,那么会在cygwin 安装目录 \home\
文件夹中生成一个以你的登录名命名的新的文件夹。
修改新生成文件夹中的“.bash_profile ”文件,用UE或editplus等文本编辑器打开,
在最后增加: (d/android-ndk-r8是安装ndk的路径)
NDK_ROOT=/cygdrive/d/eclipse/android-ndk-r8e
export NDK_ROOT
然后保存关闭。
我们现在来导入ndk sample中的jni工程
cygwin还没有派上用场,现在就利用它来编译c++,在项目上点击 右键,在工程的属性 builders中new 一个编译规则:
按照下面的设置
Location:D:\cygwin\bin\bash.exe
Working Directory:D:\cygwin\bin
Arguments:--login -c "cd /cygdrive/d/eclipse/android-ndk-r8e/samples/hello-jni&&$NDK_ROOT/ndk-build"
然后在Build Options进行设置
最后然后将NDK_Builder移到最上面
最后编译工程,编译成功后显示成功生成了*.so库文件,运行OK
可能有同学队这个JNI工程有疑问,按个JNI中的头文件是如何而来的,或者我重新建一个NDK工程师如何开始的,请见该博客:
http://www.cnblogs.com/hibraincol/archive/2011/05/30/2063847.html