1、生成so 庫。
新建一個項目,勾選 Include C++ support.然後一直next。
在配置好NDK 的情況下,系統會直接生成一個調用C++ 的 例子,直接運行就可以。
配置NDK:https://blog.csdn.net/lijia1201900857/article/details/83576840
下面我們要生成 so 庫。詳細請看:https://blog.csdn.net/lijia1201900857/article/details/83615409
在CMakeList.txt 中添加如下代碼:
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI})
編譯運行後,會在jniLibs 中生成相應 abi 的so 庫
到此我們就可以使用這些庫,供其他項目調用了。
二、調用so 庫
新建任意一個項目,Include c++ support 勾不勾無所謂。這裏我不勾選
分4步:
1、複製so庫拷貝到新項目的libs 目錄下
2、app 下的 build.gradle 中添加 鏈接so庫的配置
3、創建和 so中 代碼相同包名+ 類名 的類
4、調用
1、將上個項目中生成的 so庫 複製到 libs 目錄下:
2、app 下的 build.gradle 中添加配置
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
總體結構如下:
3、創建和so中的代碼相同包名+類名的類
我們上個項目native 方法 所屬的包名 爲 com.example.com.jni , 類名爲 MainActivity
所以我們需要在新項目中也添加這樣一個 類:
新建的MainActivity 類中 添加如下代碼(和so庫中的調用代碼一致):
static {
System.loadLibrary("native-lib");
}
public native String stringFromJNI();
4、調用
然後在新項目的MainActivity.class 中調用
運行結果如下:
over!