在使用Android Studio开发安卓项目时,有很多使用第三方的so库的场景。
引入第三方so库的方法:
- 在app目录结构下创建
libs
目录
- 建立关于
CPU架构
的目录
- 将so库
分别
复制
到相应架构
的目录
下
- 打开当前模块的
build.gradle
- 在
android
中加入
sourceSets {
main {
jniLibs.srcDirs = ["libs"]
}
}
如:
android {
compileSdk 30
defaultConfig {
applicationId "com.android.xxxtest"
minSdk 29
targetSdk 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildFeatures {
viewBinding true
}
sourceSets {
main {
jniLibs.srcDirs = ["libs"]
}
}
}
- 在建立
native接口
的时候,一定要准确确定native接口所在的包名
即与native接口原来所在的包名一致。并不是随便写个接口,写几个native方法,load一下so文件,就可以调用so中的方法的!
package com.test.jni;
public class NativeTest {
public static native String getVersion();
static {
System.loadLibrary("version");
}
}
- 编译后的so文件一般以
lib
+库文件名
+.so
命名 - 加载
so 文件
时,只写原库文件名
即可,不用附带lib
前缀和.so
后缀