案例
我有一个应用
当我在调试模式下使用它时,一切正常!
但是当我尝试构建要发布的APK捆绑并尝试通过Play商店安装应用时 缺少.so文件 我对apk进行了反向工程,找不到单个.so文件或任何lib文件夹
但是当我使用Play控制台和android studio分析捆绑包时,它包含带有相应.so文件的所有abi文件夹
这是我的应用gradle文件
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.test"
minSdkVersion 16
targetSdkVersion 28
versionCode 38
versionName "3.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// Enabling multidex support.
multiDexEnabled true
//render script
renderscriptTargetApi 28
renderscriptSupportModeEnabled true
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
arguments "-DANDROID_STL=c++_shared"
}
}
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
packagingOptions {
exclude 'META-INF/rxjava.properties'
exclude "lib/mips/libRSSupport.so"
exclude "lib/mips/librsjni.so"
}
compileOptions {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
}
dependencies {
//custom modules here
//libs and jars
implementation fileTree(include: ['*.jar'], dir: 'libs')
//other dependencies
}
apply plugin: 'com.google.gms.google-services'
这是一些图片
我无法截取整个页面的屏幕截图,但是它具有所有可能的abis
错误
Fatal Exception: java.lang.UnsatisfiedLinkError
dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.test-1/base.apk"],nativeLibraryDirectories=[/data/app/com.test-1/lib/arm, /data/app/com.test-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]] couldn't find "libnative-lib.so"
我曾经尝试过的一切
我尝试将ndkFilters,拆分,abis,禁用progaurd等放入gradle文件中
但没有运气
我认为
播放控制台无法将lib分发到相应的abis
请求
任何人都有任何线索,请告诉我 _/\_
谢谢
答案 0 :(得分:1)
使用abifFilters从软件包中删除过时的ABI。您不需要armeabi
或mips
。
答案 1 :(得分:1)
尝试一下:
sourceSets.main.jniLibs.srcDirs = ['src/main/jniLibs']