第一步:創建Java方法,用于呼叫c層代碼
public class MyJni {
// 加載native-jni
static {
System.loadLibrary("demo");
}
//java調C中的方法都需要用native宣告且方法名必須和c的方法名一樣
public native static String getAAString();
}
第二步:編譯一下,點擊Make Project,或Clean Project + Rebuild Project一下
第三步:在專案TestDemo的java檔案層右擊選擇Open in Terminal
輸入javah -jni 該類所在的包+該類名稱.class,回車,會生成.h檔案,如果不會生成,我重啟一下電腦就好了,具體不知道什么原因
第四步:在src/main目錄下創建jni檔案夾,把.h檔案復制到這里
第五步:在jni檔案創建demo.c檔案:
#include<jni.h>
jstring Java_com_example_alarmmirrordemo_MyJni_getAAString(JNIEnv *env,jobject thiz){
return (*env)->NewStringUTF(env,"abcde隨便寫的");
}
注意:Java_com_example_alarmmirrordemo_MyJni_getAAString跟.h檔案的名稱一樣,方法也要一樣
第五步:在jni檔案創建Android.mk,內容如下:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := demo//so庫的名稱 LOCAL_SRC_FILES := demo.c//c檔案名稱 include $(BUILD_SHARED_LIBRARY)
第六步:在jni檔案創建Application.mk,內容如下:
APP_ABI := all
第七步:在build.gradle檔案添加ndk模塊:
defaultConfig {
ndk {
// // 設定支持的SO庫架構
moduleName "demo"
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}
第八步:在main/java右擊打開Terminal,或cd到java檔案,如cd main/java
輸入 ndk-build回車,則自動生成libs檔案里的so庫,(等一會兒就完成了)
第九步:呼叫方法:
TextView text = findViewById(R.id.tv_text); text.setText(MyJni.getAAString());
輸出:“abcde隨便寫的”,更多的輸出結果自行撰寫,在此記錄一下,以免以后忘記
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/208831.html
標籤:其他
上一篇:關于Android初學者需要知道的基礎知識以及Android Studio相關快捷鍵與提高效率的設定Setting(二)
