天天看點

Android NDK: Native Development Kit 入坑篇Android NDK: Native Development Kit 入坑篇

Android NDK: Native Development Kit 入坑篇

**在android中加入NDK可以完成在Android裝置中調用、運作C/C++代碼。使用NDK可以內建Native 與 Java代碼,NDK可以讓我們的Java代碼直接使用JNI來調用C/C++代碼**
           

NDK的使用

一般情況下我們隻會在如下的幾種情況下才會使用到NDK

1. Java代碼運作的太慢而你需要提高它的效率,可以使用NDK來調用C/C++提高程式的運作效率進而達到提高運作效率的目的

2. 當使用到C/C++的庫時

3. 當你需要從外部導入C/C++代碼時 最常見的就是展現在人機互動的部分,因為本身Java能達到的運作效率已經很高了。隻有在特定的需要達到更高效率的時候才會考慮使用NDK

使用Android Studio開發NDK程式:

  1. 首先在需要調用的類中導入庫
  2. 聲明Native的函數
  3. 使用System.LoadLibrary調用C程式
  4. build需要調用Native函數的類生成classes
  5. 使用Javah生成頭檔案,并建立JNI檔案夾
  6. cmd進入app_path/app/src/main/:javah -d jni -classpath android_sdk_path/android.jar;classes_name
  7. 建立C/C++程式并included頭檔案
  8. 設定NDK路徑包括(local.properties) 及Gradle檔案(build.gradle)
  9. 編譯NDK程式并生成class_name.so檔案
  10. 配置Android程式的local.properties檔案:主要配置檔案中的NDK的路徑
  11. 配置Adnroid程式的app中的build.gradle檔案:主要配置defaultConfig中的ndk當中的ndkName一定要與System.LoadLibrary調用C程式名稱相一緻。abiFilters 指定生成适用版本*.so檔案
  12. 編譯運作~

注意:

編寫C檔案的時候名稱一定要與調用的類的類名相一緻,否則調用的時候庫找不到相對應的函數則會導緻Android SDK的崩潰