1. 程式人生 > >通過cmake在Android中呼叫c語言,且生成so檔案

通過cmake在Android中呼叫c語言,且生成so檔案

1、  新建JniUtils類實現native方法

 

2、  在build中執行clean project 再rebuild project 生成class檔案。

注意:最新版本的AndroidStudio中classes檔案的路徑是在\app\build\intermediates\javac\debug\compileDebugJavaWithJavac\classes。而原來的版本classes路徑是在\app\build\intermediates\classes

3、  通過javah -jni 生成對應的.h檔案

注意:

3.1、在執行該命令時要在classes路徑下執行,否則會報找不到JniUtils的類檔案,且執行時不帶檔案字尾

3.2、生成的.h檔案也是在classes路徑下

.h路徑:

 

成功時:

失敗時:

 

4、  新建jni資料夾,把上述中的.h檔案拷貝到jni資料夾下,且在jni路徑下新建一個c語言檔案,實現.h中的方法(注意方法名要保持一致)

 

 

 

5、  接下來開始通過cmake生成so檔案

5.1、把CMakeList.txt檔案拷貝到app路徑下,注意CMakeList中的一些設定,在add_library中要設定需要編譯的原始檔,在target_link_libraries中要設定輸出的so檔名,eg設定為serial_port則生成的so名為libserial_port。

5.2、在app路徑下的build.gradle中配置cmake,且在JniUtils.java中設定System.loadLibrary注意libname為在CMakeList中設定的保持一致

5.3、點選sync工程之後,在clean Project時,如果報如下錯誤,則重啟AndroidStudio試下,大概率的能成功clean

5.4、通過上步的clean Project之後,再Rebuild Project會生成so檔案,路徑如下

 

6、  把上述生成的so庫拷貝到libs路徑下,執行即可。