NDK
Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。
下载地址:https://developer.android.google.cn/ndk/downloads/index.html
截图中是最新版本
如果需要下载历史版本,点击 Revision History
NDK:android-ndk-r14b-windows-x86_64.zip
解压生成:android-ndk-r14b文件夹
windows-Preferences-Android-NDK
NDK Location 设置路径
选择ndk目录时提示“Not a valid NDK directory”, 在你安装的ndk的主目录下创建一个ndk-build空文件,然后重新打开对话框选择就可以了。
简单JNI调用
1、创建一个Android工程,名为firstjni;
2、在com.example.firstjni包下新建一个Jni接口类FirstInterface,这个类不需要继承java的接口类;
3、编译这个接口类,为c端调用的头文件。
工程目录:
命令窗口:运行cmd,cd进入到eclipse工作空间中firstjni工程目录,
输入javah-classpath bin/classes -d jni com.example.firstjni.FirstInterface编译接口类
编译完成后,刷新工程,就可以看到工程中自动创建了jni文件夹,其中包含编译好的.h头文件
4, 右键firstni工程选择Androidtools下Add Native Support选项,library name使用默认的工程名;
完成后,会在jni文件夹中添加一个Android.mk文件和firstjni.cpp文件;
5、然后给工程新建并配置一个Builder,能够自动生成so库在Android端代码进行调用。
①右键工程-Properties-Builders-New,在弹出对话框中点击Program。
②在Edit Configuration对话框中的Main选项卡中,添加路径;
Location中选择到NDK安装目录下的ndk-build.cmd;
WorkingDirectory中选择到firstjni工程目录。
点击Browser File System按钮选择。
③选择Refresh选项卡,在其中勾选如下
④在Build Options选项卡中勾选如下
点击上图中SpecifyResource,配置到firstni工程的jni目录即可。
到此点击ok,配置完成了,相比通过命令行编译的方法,至少方便很多。
完成后,会在firstjni工程libs文件下自动创建armeabi文件夹并包含编译好的libfirstni.so库文件,当工程有所改变的时候,就会自动编译so文件;
6、下面来填充firstjni.cpp,相信学过C++的朋友会觉得很熟悉,在这个cpp文件里面写接口的具体实现。
这里会出现JNICALL等类型无法识别等报错,需要导入一个NDK的include头文件库:
① 键工程,选择Properties -> C/C++ General -> Path and Symbols 中点击include选项卡,添加NDK安装目录下的include文件夹E:\android-ndk-r14b\platforms\android-23\arch-arm\usr\include
导入完毕之后就不会报错了。
7、首先将头文件Include进来,但是要遵循方法的命名规则:Java_(固定开头)com_example_firstjni(用"_"连接的包名)_ FirstInterface (类名)_ getHello (函数名) 再从接口.h头文件中把getHello方法复制过来,并修改参数,简单的返回一个字符串。
8、然后修改MainActivity.java代码,添加一个TextView并设置其文本为getHello()方法的返回值;添加static代码块,载入so库,之前右键工程add native Support的library名称就是在这里调用:
运行结果如下:
参考:http://www.aichengxu.com/android/1411740.htm