Android開發主流工具已變成AndroidStudio,新版AS已經支援CMake編譯工具,可以用于編譯C/C++檔案,增強了Android調用jni代碼的便捷性。相比于之前繁雜的ndk配置方式,cmake較為簡單友善。
本文使用androidStudio3.5
1.環境配置
在SDK Tools裡選擇 CMAKE/LLDB/NDK點選OK 安裝這些插件.
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL3tGVPFTTU90MNpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5cDN3MjM0YTM0EDMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.建立CMakeLists.txt檔案
在Project 目錄下,右鍵app,點選建立File檔案,命名為CMakeLists.txt,并配置檔案
在CMakeLists.txt檔案裡添加如下代碼(具體含義自行百度):以下為我添加的
3.建立一個新類
在想要目錄裡建立一個新類Test_lib.java
在此類中添加代碼
package com.driss.myjnitext;
public class Test_lib {
static {
System.loadLibrary("test_lib");
}
public static native String getStr(String str);
}
4、在main下面建立jni目錄,建立test_lib.c檔案,名字必須與CMakeLists.txt檔案的源檔案所在目錄一緻,裡面可以暫時不添加任何東西
5、右鍵app,點選Link C++Project with Gradle
顯示如下,選擇CMakeLists.txt檔案所在路徑,點選ok
建構完後會自動生成一些配置,如圖所示
6、回到Test_lib.java檔案,選中getStr(),按下Alt+Enter,點選Create function...如下圖所示
此時會在test_lib.c檔案裡自動生成C/C++函數,接着在.c檔案裡編寫C/C++接口函數了。
7、然後Make Project成功後,會在如下目錄生成.so檔案,此時.so庫生成成功,可随時調用
8、在其他類中調用C/C++函數
現在使用CMake比傳統的jni調用方式要友善很多了