今天搞一个apk,有so库的,run之后闪退,看了打印信息是提示加载so库失败,找不到so库,分析apk文件确实没有打包so库进去,问度娘和谷哥,都无法解决,后来我查看一下我其他那些可以打包成功的apk,发现build.gradle文件使用了如下的参数:
sourceSets.main {
jniLibs.srcDirs 'src/main/jniLibs'
jni.srcDirs = [] // This prevents the auto generation of Android.mk
}
而不是:
sourceSets {
main {
jniLibs.srcDirs = ['jniLibs']
}
}
更改后打包成功。
环境是Android studio4.0.1。
但是在Android studio中直接run app后还是不行,安装后没有so库文件,只能adb install安装运行,纳闷。
上面只能adb install的问题找到解决方法,就是在主app的defaultConfig中添加
ndk {
abiFilters "armeabi",'x86', 'armeabi-v7a', 'armeabi-v8a', 'arm64-v8a'
}
例如我的例子里面就是
defaultConfig {
applicationId "tv.danmaku.ijk.media.example"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
flavorDimensions "versionCode"
ndk {
abiFilters "armeabi",'x86', 'armeabi-v7a', 'armeabi-v8a', 'arm64-v8a'
}
}
本文介绍了一种解决Android应用在运行时因找不到so库而闪退的方法,通过调整Gradle配置,正确指定so库路径,并在defaultConfig中添加ABI过滤器,确保so库被正确打包和安装。
2230

被折叠的 条评论
为什么被折叠?



