AS3.0上開發NDK演示DEMO步驟
阿新 • • 發佈:2018-12-11
Step1 建立NDK專案
注意勾選include C++ support
然後都是預設選項
Step2 建立本地JNI測試類
/** * @auther:HWQ * @description: * @date:2018-09-25 * @time:22:04 */ //建立JNI類 public class JNITest { //載入類庫名稱 稍後生成的so檔案與此處命名有關聯 static { System.loadLibrary("MyNDK"); } //寫一個測試JNI類的native方法 這裡就寫一個求和方法 最開始建立時報紅是正常的 public native int getSum(int a, int b); }
Step3 生成C++標頭檔案
進入到JNITest類下,然後輸入javah JNI類全路徑生成C++的標頭檔案。生成後需要稍等片刻才可以看見生成的標頭檔案。
Step4 將生成的標頭檔案複製到CPP資料夾下並改名。
例如改名為JNITest.h
然後建立cpp檔案JNITest.cpp,並補全cpp檔案中測試程式碼。然後刪除最初生成的標頭檔案com_ndk_archermind_myndk_JNITest.h。
//匯入jni.h標頭檔案 #include <jni.h> //匯入JNI本地類生成的JNITest.h標頭檔案 注意此處不能使用include <JNITest.h> 而要使用include "JNITest.h"這樣引入 不然會報錯 #include "JNITest.h" JNIEXPORT jint JNICALL Java_com_ndk_archermind_myndk_JNITest_getSum (JNIEnv *, jobject, jint a, jint b) { return a + b; };
然後同步程式碼,此時再看JNITest類native方法已經不再報紅,變成灰色
Step5配置CMakeLists檔案和Moudle下的build.gradle檔案
CMakeLists檔案修正如下 注意在CMakeLists下備註要在備註的前面加#符號
加//會不識別備註而報錯
其中類庫名稱是來自於JNITest這個本地類中的載入庫程式碼來的,兩者需要保持一致,即與下圖中的命名要一致
Moudle下的build.gradle檔案如下
Step6 在MainActivity中新增測試JNITest類程式碼
效果圖如下