NDK笔记(二)-在Android Studio中使用ndk-build
前面一篇我们接触了CMake,这一篇写写关于ndk-build的使用过程。刚刚用到,想到哪儿写哪儿。
环境背景
Android开发IDE版本:AndroidStudio 2.2以上版本(目前已经升级到2.2.3)
计算机环境:Window 64位系统
Demo工程的创建与设置
1.新建一个工程,并在app/src/main路径下新建jni文件夹。
2.在java代码中,新建NdkBuildTest类(包含native方法),并用javah命令生成头文件。
这里需要注意几点:
(1)javah是JDK中的程序,所以需要将JDK的bin路径添加到计算机的环境变量path中,才能在terminal中使用这个命令。
(2)javah命令中,-d指定创建头文件的目标路径,-classpath指定类的路径,由于当前路径是main,所以指定其中的java即可。
效果如下:
3.新建C文件,实现native方法
4.在jni路径下新建Android.mk文件
5.在Module(app)的build.gradle中进行ndk-build配置
这里主要配置两点:
(1)在defaultConfig节点中,添加ndk,在这里作一个abi的过滤,(默认的abi好像是MIPS)
(2)在android节点中,添加externalNativeBuild节点,在里面配置ndkBuild的makefile路径。(用Cmake的话,也是在这里进行配置)
6.配置完成后,同步工程,在C文件中进行编程,就可以引入相应的头文件,并会有相应的代码提示。
注意:一般同步工程后,编辑器就可以找到相应的头文件,就不会标红报错。
当然,即使标红报错,提示找不到头文件,只要编译时能够Build Success,工程也是能够正常运行的。
其他
1.Google Developers中国网站
就在昨天,Google Developers中国网站开通了,喜大普奔~~23333~~
其微信公众号是谷歌开发者
2.关于Android.mk
关于Android.mk的编写,AndroidStudio上好像也没法自动生成,一直都是手动Coding。
昨天刚刚找到一个关于Android.mk的网站,先作记录,改天再研读一下。
这里写几点这段时间用到的经验吧:
(1)如果有多个文件夹,需要用一个Android.mk文件include所有子文件夹下面的Android.mk文件:
这个文件就是配置在build.gradle中的文件。
(2)如果在工程中需要链接一个非系统的so库(Android系统中找不到的库),则在Android.mk中,先对该库进行预编译,然后再在当前需要生成的module中链接该库:
这样,在生成的APK中,就可以看到libReady.so 和当前生成的libCurrent.so都被打包在libs路径中了。