android release app bundle build缺少本地库.so文件

时间:2019-08-20 14:44:32

标签: android android-studio android-ndk android-gradle-plugin android-bundle

案例

我有一个应用

当我在调试模式下使用它时,一切正常!

但是当我尝试构建要发布的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'

这是一些图片

android studio apk analysis

我无法截取整个页面的屏幕截图,但是它具有所有可能的abis

play console app bundle exploere

错误

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

请求

任何人都有任何线索,请告诉我 _/\_

谢谢

2 个答案:

答案 0 :(得分:1)

使用abifFilters从软件包中删除过时的ABI。您不需要armeabimips

答案 1 :(得分:1)

尝试一下:

sourceSets.main.jniLibs.srcDirs = ['src/main/jniLibs']