舊版步驟
創(chuàng)建好項(xiàng)目后
- 打開gradle.properties,添加:
android.useDeprecatedNdk=true
- 打開local.properties彭则,添加:
ndk.dir=NDK的路徑
- 最后打開app內(nèi)build.gradle鳍刷,在android/defaultConfig下面添加ndk配置
ndk {
moduleName "JNISample" //moduleName 表示編譯出的so文件的名字
}
- 任意在類中聲明一個(gè)Native方法(C/C++寫的方法)
public static native String getJniString();
- 進(jìn)入到源代碼目錄,在終端中根據(jù)native方法所在文件路徑俯抖,輸入以下命令生成頭文件
com_instructionextract_sdkdemo_sdkDemo.h
javah com.instructionextract.sdkdemo.sdkDemo
- 在main目錄下創(chuàng)建jni目錄存放Native層代碼输瓜,將頭文件移動到j(luò)ni目錄下
- 使用頭文件的名稱,創(chuàng)建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");
}
新版步驟
谷歌官方推薦參考向您的項(xiàng)目添加 C 和 C++ 代碼,安裝好NDK柬祠、LLDB芹缔,在新建項(xiàng)目的時(shí)候,在向?qū)У?Configure your new project 部分瓶盛,選中 Include C++ Support 復(fù)選框最欠。
創(chuàng)建好項(xiàng)目后示罗,原生代碼都在cpp目錄下即可,并且新建項(xiàng)目存在一個(gè)系統(tǒng)生成的原聲demo方法可以參考