通過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路徑下,執行即可。