Android Studio 配置NDK
功能和作用就不用細緻的講了,就是利用C/C++對android程序的運行效率進行優化,或者是爲了當需要導入外部的C/C++代碼對底層進行控制的時候就需要用到NDK這樣的一個開發共組套件來進行開發。
NDK程序編譯的流程
- 在java源碼中聲明native函數的原型
- 使用javah創建頭文件
- 將創建好的頭文件include到我們將手動寫的C/C++代碼中
- 創建Android.mk和Application.mk文件
- 通過ndk-build將源碼編譯創建成共享庫
- 導入庫文件到你的java代碼中
NDK在AS中的下載和配置
現在開始來進行NDK在AS中的下載和配置:
NDK的下載
接下來配置gradle文件
1. 將file.bin放到SDK與android studio同級目錄中
2. Chmod + x file.bin修改文件權限
3. 執行命令:./file.bin
4. 重命名NDK目錄
下面正是進行配置:
-創建一個新的android工程
在onCreate前面添加這樣的語句
static {
System.loadLibrary("voice");
}
public native String getStringFromNative();
接下來簡單聲明一個TextView來獲取jni中的字符串
TextView textView = (TextView) findViewById(R.id.tv_phone1);
textView.setText(getStringFromNative())
-創建classes和Native Method函數
編譯make project
找到classes,這裏有生成的.class文件,就是要對這個文件來生成頭文件(.h)
-使用javah創建頭文件
進入app/src/main/下來進行
然後輸入指令:
javah -d jni -classpath D:\AndroidSDK\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug com.mjude.voicedemo.MainActivity
就能夠創建jni目錄下的頭文件,如圖所示:
-創建C代碼
#endif
JNIEXPORT jstring JNICALL Java_com_mjude_voicedemo_MainActivity_getStringFromNative
(JNIEnv *jniEnv, jobject jobject){
LOGE("log string from ndk");
return (*jniEnv)->NewStringUTF(jniEnv, "jni test voiceProject");
}
#ifdef __cplusplus
}
#enf
#endif
接下來在build.gradle中進行配置
下面就是配置的詳細代碼,供參考
ndk {
moduleName "voice"
ldLibs "log", "z", "m"
abiFilters "armeabi", "armeabi-v7a", "x86"
}
再Make project一次就完成了,會將三個庫生成,至此就已經完全配置好了。