Android将将so库封装到库封装到jar包中并加载其中的包中并加载其中的so库库
Android将将so库封装到库封装到jar包中并加载其中的包中并加载其中的so库库
之前写过将jar包和so库封装到jar包中的文章,但是没有考虑别人调用时需要加载so库的问题。因为so库放入jar之后,so就不
是一个独立的.so文件了,用System.load()加载就会提示找不到这个库,所以要想加载这个so 就需要把so 从jar 中提取出来,
保存为临时文件,然后再加载。但是不能直接提取.so文件,需要把.so文件改成.jet文件封装到jar中,再进行提取拷贝。
如何建立一个项目以及项目的结构还有模块我就不说,可以看我之前的文章:Android
将
module
中的
jar
、
so
包打包成
jar
或者
aar
文件
我这里只是对so库封装到jar包做一些修改,这样方便后续项目加载so库。
1.将将so后缀改成后缀改成.jet,然后放到下图目录中,如果有多个,然后放到下图目录中,如果有多个cpu架构可以放多个。架构可以放多个。
2.修改修改build.gradle文件文件task makeJar(type: Jar)方法方法
apply plugin: 'com.android.library'
android {
compileSdkVersion 29
defaultConfig {
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
sourceSets {
main {
// jni.srcDirs = [] // jniLibs.srcDirs = ['src/main/jniLibs']//设置目标的so存放路径
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
lintOptions {
abortOnError false
}
}
task makeJar(type: Jar){
//删除存在的