Android Studio 配置NDK

Android Studio 配置NDK

功能和作用就不用細緻的講了,就是利用C/C++對android程序的運行效率進行優化,或者是爲了當需要導入外部的C/C++代碼對底層進行控制的時候就需要用到NDK這樣的一個開發共組套件來進行開發。

NDK程序編譯的流程

  1. 在java源碼中聲明native函數的原型
  2. 使用javah創建頭文件
  3. 將創建好的頭文件include到我們將手動寫的C/C++代碼中
  4. 創建Android.mk和Application.mk文件
  5. 通過ndk-build將源碼編譯創建成共享庫
  6. 導入庫文件到你的java代碼中

NDK在AS中的下載和配置

現在開始來進行NDK在AS中的下載和配置:
NDK的下載
NDK_download
接下來配置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
Make
找到classes,這裏有生成的.class文件,就是要對這個文件來生成頭文件(.h)
classes
-使用javah創建頭文件
進入app/src/main/下來進行
path
然後輸入指令:

javah -d jni -classpath D:\AndroidSDK\platforms\android-22\android.jar;..\..\build\intermediates\classes\debug com.mjude.voicedemo.MainActivity

就能夠創建jni目錄下的頭文件,如圖所示:
創建
-創建C代碼
.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一次就完成了,會將三個庫生成,至此就已經完全配置好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章