旧版步骤
创建好项目后
- 打开gradle.properties,添加:
android.useDeprecatedNdk=true
- 打开local.properties,添加:
ndk.dir=NDK的路径
- 最后打开app内build.gradle,在android/defaultConfig下面添加ndk配置
ndk {
moduleName "JNISample" //moduleName 表示编译出的so文件的名字
}
- 任意在类中声明一个Native方法(C/C++写的方法)
public static native String getJniString();
- 进入到源代码目录,在终端中根据native方法所在文件路径,输入以下命令生成头文件
com_instructionextract_sdkdemo_sdkDemo.h
javah com.instructionextract.sdkdemo.sdkDemo
- 在main目录下创建jni目录存放Native层代码,将头文件移动到jni目录下
- 使用头文件的名称,创建cpp文件
com_instructionextract_sdkdemo_sdkDemo.cpp
来写代码,例如
#include <com_instructionextract_sdkdemo_sdkDemo.h>
//方法定义是从.h头文件中copy过来的
JNIEXPORT jstring JNICALL Java_com_instructionextract_sdkdemo_sdkDemo_Anti_1TraceMe
(JNIEnv *, jclass){
return env -> NewStringUTF("Hello World");;
}
- 在java层使用Native层方法,先加载库文件,文件名由moduleName定义
static {
System.loadLibrary("AntiDebug");
}
新版步骤
谷歌官方推荐参考向您的项目添加 C 和 C++ 代码,安装好NDK、LLDB,在新建项目的时候,在向导的 Configure your new project 部分,选中 Include C++ Support 复选框。
创建好项目后,原生代码都在cpp目录下即可,并且新建项目存在一个系统生成的原声demo方法可以参考