如果经过apk分析后,如果超过60%的累积lib文件夹,如何减小apk大小?

时间:2018-07-10 06:40:45

标签: android

我已经使用Android build-> analysis apk从.apk中看到了下面的报告。 enter image description here

我用过类似的波纹管

  buildTypes {
    release {
        shrinkResources true
        minifyEnabled true
        zipAlignEnabled true
        //Other parameters
        debuggable false
        jniDebuggable false
        renderscriptDebuggable false

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

}

但是我的调试APK 大小为 26.9 MB 。当我要为发行apk 进行构建时,其大小将变为 23.5 MB 。它的大小很大。 请帮助我减少apk或减少至少60%。谢谢Enamul

3 个答案:

答案 0 :(得分:1)

拆分apk是一个很好的解决方案。但这又是一招。

如果您仅在自己的apk中包含armeabi-v7a,除非您支持<4.4 android版本,否则就可以了。

ARMv6自Android 4.4(10月13日)起不再受Android支持

请参阅此Unity Statics,您只需添加ARMv7Intelx86就可以100%支持设备。

现在您所要做的只是在您的应用程序中包含ARMv7x86。参见abiFilter

  • 将此添加到您的应用级别build.gradle

    buildTypes { release { ndk { abiFilters "x86", "armeabi-v7a" } }

  • 按同步

  • 构建并检查大小

image

答案 1 :(得分:0)

唯一的方法是为每个abi

建立apk

以下是简短示例

android {
    splits {
        abi {
            enable true
            reset()
            include "mips", "x86", "x86_64", "armeabi-v7a", "armeabi-v7a", "arm64-v8a"
        }
    }
}

使用单个JNI库,您将获得适用于不同体系结构的apk。

但是您还需要为其执行特殊的版本控制过程,因此将文件上传到 Google Play 中没有问题。

android {
    def abiCodes = ['mips':1, 'x86':2, 'x86_64':3, 'armeabi':4, 'armeabi-v7a':5, 'arm64-v8a':6]
    android.applicationVariants.all { variant ->
        variant.outputs.each {
            output ->
                def abiName = output.getFilter(OutputFile.ABI)
                output.versionCodeOverride = abiCodes.get(abiName, 0) * 100000 + variant.versionCode
        }
    }
}

答案 2 :(得分:-1)

使用棉绒并从代码中删除不需要的资源。 这是链接 Remove all unused resources from an android project

这可能会对您有所帮助。