首页 > 解决方案 > android 发布应用程序包构建缺少本机 lib .so 文件

问题描述

案子

我有一个应用程序

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

但是当我尝试构建用于发布的 apk 包并尝试通过 Play 商店安装应用程序时,由于缺少 .so 文件,我对 apk 进行了反向工程,但找不到单个 .so 文件或任何 lib 文件夹

但是当我使用 play console 和 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'

这是一些图片

安卓工作室apk分析

我无法截取整个页面,但它具有所有可能的 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、splits、abis、禁用 progaurd 等放在 gradle 文件中

但没有运气

我想

播放控制台无法将库分发到相应的 abis

要求

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

谢谢你

标签: androidandroid-studioandroid-ndkandroid-gradle-pluginandroid-bundle

解决方案


将以下内容添加到gradle.properties,它应该会有所帮助:

android.bundle.enableUncompressedNativeLibs = false

推荐阅读