# 为了不像以前一样学了就忘,决定对每天的学习内容做些笔记:
android studio 新建一个demo用于测试jni:
(参考链接:1学习内容建立https://www.cnblogs.com/xiaoxiaoqingyi/p/6676096.html
2写jni的例子: http://www.cnblogs.com/xiaoxiaoqingyi/p/6524165.html
3javah建立头文件的简单方法:http://blog.csdn.net/free555/article/details/51568476)
第一个demo步骤:
1 java目录下新建一个类,起名随意:NDKUtils,写一个方法:
public class NDKUtils {
public native String invokeCmethod();
static {
System.loadLibrary("NDKUtils");//导入生成的链接库文件
}
}
2、点击 菜单 Build =>Make Project,就会编译项目,然后在你的项目目录app\build\intermediates\classes\debug\com\example\ps\ndk3里
可以看到 NDKUtils.class 文件
3、进入as命令行页面:输入
cd app/src/main/java
javah -d ../jni com.example.ps.ndk.NDKUtils //("javah -d ../jni "+ 你自己的报名.刚刚创建的类名)
4
当上述的命令执行成功后,在app/src/main 多了一个 jni 文件夹,里面有一个
.h 文件。在该路径下copy 一个相同名,后缀 为 .c 的文件 com_example_ps_ndk3_NDKUtils.c
然后该文件就是C 语言的实现文件。需要把
com_example_ps_ndk3_NDKUtils.cpp中的内容复制到com_example_ps_ndk3_NDKUtils.c中,并修改参数
5、在jni 目录下创建 Android.mk 配置文件,内容如下:
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKUtils
LOCAL_SRC_FILES :=
com_example_ps_ndk3_NDKUtils
include $(BUILD_SHARED_LIBRARY)
6、在jni 目录下创建 Application.mk 配置文件,内容如下:
APP_PLATFORM := android-23
APP_ABI := armeabi
注意:armeabi 对应的是库文件生成所对应的手机CPU类型,这里的设置和下一步库文件的生成相对应
as中自动生成很多种,例如arm64、x86等等,用不到可以删去
第7部得到的.so库文件:
主要添加如下代码:
sourceSets{
main{
jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk
jniLibs.srcDir 'src/main/libs'
}
}
这样, native invokeCmethod 方法算是衔接好了,只有在MainActivity 上实例化这个类,然后
调用 这个方法,就能输出相应的字符串,这样就简单的实现NDK功能。
最后的总览,修改和添加的部分: