Android Studio JNI開發(1)------CMake編譯原生庫

一、新建項目勾選上這個 include C++ Support,項目工程會自動在App.bundle中添加這個代碼和這個文件CMakeLists.txt,直接運行就能看到加載C++的native方法
  1. defaultConfig {
  2. applicationId "com.iteast.jnitest"
  3. minSdkVersion 15
  4. targetSdkVersion 25
  5. versionCode 1
  6. versionName "1.0"
  7. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  8. externalNativeBuild {
  9. cmake {
  10. cppFlags ""
  11. abiFilters "x86"//這個可以省略,省略後就會生成所有類型的動態庫文件
  12. }
  13. }
  14. }
  15. buildTypes {
  16. release {
  17. minifyEnabled false
  18. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  19. }
  20. }
  21. externalNativeBuild {
  22. cmake {
  23. path "CMakeLists.txt"
  24. }
  25. }




二、如果工程中途加入native方法,走如下步驟
  1. 打開一個項目,從菜單欄中選擇 Tools > Android > SDK Manager 

  2. 點擊 SDK Tools 選項卡。

  3. 勾選 LLDB,CMake  NDK 。如圖一:

  4. 創建本地方法

    1. /**
    2. * A native method that is implemented by the 'test_jni' native library,
    3. * which is packaged with this application.
    4. */
    5. public native String stringFromJNI();
    6. // Used to load the 'native-lib' library on application startup.
    7. static {
    8. System.loadLibrary("test_jni");
    9. }

  5. 使用javah生成頭文件(如果會直接寫頭文件,沒有必要使用javah),注意Android Studio項目,Terminal需要定位到程序包目錄(即src\java目錄下如圖二)
  6. main目錄下新建一個JNI Folder,如圖三
  7. 在jni文件中寫C\C++代碼
    1. #include<stdio.h>
    2. #include<stdlib.h>
    3. #include<jni.h>
    4. jstring Java_com_iteast_jnitest_MainActivity_stringFromJNI(JNIEnv* env,jobject obj){
    5. char* text = "哈哈哈,今天研究了一下JNI!!!";
    6. return (**env).NewStringUTF(env,text);
    7. }

  8. 運行項目即可執行C\C++方法
  9. so文件生成地方,如圖四,如果使用so文件,請在main目錄下,創建與java目錄平級的jniLibs目錄,把相應的so文件放入裏面





 
 
 項目地址:點擊下載源碼
 
 
 
 

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