AndroidStudio現有專案新增NDK支援(ndk-build編譯)
阿新 • • 發佈:2019-01-30
此篇主要以案例講解在現有專案新增NDK支援,並且使用ndk-build編譯庫檔案;
1. 從IDE左側開啟Project視窗,從下拉框選擇Project檢視
2. 導航到app目錄下的src的main目錄下,右鍵->New Directory新建一個目錄jni;
3. 在main的java目錄下新增native函式;
新增 com.niubashaoye.demo.ndkdemo.JNITools.java
public class JNITools { static{ System.loadLibrary("NDKLib"); } public native int addNum(int num1,int num2); }
4. 新增javah自動生成標頭檔案配置,然後使用javah生成標頭檔案到jni目錄中;
5. 專案新增NDK路徑:File->Project Structrue ->SDK Location ->設定NDK路徑;
6. 在jni目錄下新建一個C/C++ Source檔案NDKLib.cpp;
7. 在jni目錄下新建Android.mk檔案,配置ndk的庫檔案編譯環境;
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := NDKLib LOCAL_SRC_FILES := NDKLib.cpp LOCAL_LDLIBS := -lm -llog include $(BUILD_SHARED_LIBRARY)
8. 新增C/C++引用到Gradle配置中
切換到Anroid檢視下,專案名右鍵 ->Link C++ Project with Gradle ->選擇ndk-build,然後選擇Android.mk的路徑
9. 在jni目錄NDKLib.cpp的實現標頭檔案的函式,引用標頭檔案並實現方法;
如果此處C/C++檔案不能自動補全,請參考:AndroidStudio NDK開發C/C++檔案自動補全設定
#include <jni.h> #include "com_niubashaoye_demo_ndkdemo_JNITools.h" JNIEXPORT jint JNICALL Java_com_niubashaoye_demo_ndkdemo_JNITools_addNum (JNIEnv *env, jobject obj, jint num1, jint num2){ return num1+num2; }
10. 呼叫JNI函式
int num = new JNITools().addNum(34,68);
Toast.makeText(getApplicationContext(), "34+68="+num, Toast.LENGTH_SHORT).show();
AndroidStudio現有專案新增NDK支援(CMake編譯)