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程式:
- 首先在需要調用的類中導入庫
- 聲明Native的函數
- 使用System.LoadLibrary調用C程式
- build需要調用Native函數的類生成classes
- 使用Javah生成頭檔案,并建立JNI檔案夾
- cmd進入app_path/app/src/main/:javah -d jni -classpath android_sdk_path/android.jar;classes_name
- 建立C/C++程式并included頭檔案
- 設定NDK路徑包括(local.properties) 及Gradle檔案(build.gradle)
- 編譯NDK程式并生成class_name.so檔案
- 配置Android程式的local.properties檔案:主要配置檔案中的NDK的路徑
- 配置Adnroid程式的app中的build.gradle檔案:主要配置defaultConfig中的ndk當中的ndkName一定要與System.LoadLibrary調用C程式名稱相一緻。abiFilters 指定生成适用版本*.so檔案
- 編譯運作~
注意:
編寫C檔案的時候名稱一定要與調用的類的類名相一緻,否則調用的時候庫找不到相對應的函數則會導緻Android SDK的崩潰