android 发布的 apk 比调试 apk 大

Posted

技术标签:

【中文标题】android 发布的 apk 比调试 apk 大【英文标题】:android release apk bigger than debug apk 【发布时间】:2017-01-30 20:42:16 【问题描述】:

我正在使用 proguard 来减小我的 apk 大小。调试 apk 从 90mb 减少到 55mb,但签名 apk 是 71mb。这是我的 build.gradle 代码:

apply plugin: 'com.android.application'

android 

signingConfigs 
    XXXX 
        keyAlias 'xxxx'
        keyPassword 'xxxx'
        storeFile file('/Users/xxxx.jks')
        storePassword 'xxxxxx'
    

compileSdkVersion 23
buildToolsVersion "24.0.2"
defaultConfig 
    applicationId "com.xxxx"
    minSdkVersion 14
    targetSdkVersion 22
    versionCode 61
    versionName "4.1.8.1"
    multiDexEnabled true
    signingConfig signingConfigs.XXXX

    ndk 
        abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
    


buildTypes 
    release 
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.XXXX
    
    debug 
        minifyEnabled true
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.XXXX
    

productFlavors 


dexOptions 
    javaMaxHeapSize "4g"


packagingOptions 
    exclude 'META-INF/LICENSE.txt'


repositories 
    mavenLocal()
    maven 
        name "jcenter"
        url "http://jcenter.bintray.com/"
    
    

    dependencies 
        ...
    

【问题讨论】:

您是否使用即时运行进行调试? 请注意,ProGuard 仅处理类文件,而在屏幕截图中,很明显两个版本之间的资源不同。发布的 apk 有更多的可绘制对象。您是否可能对发布类型有其他依赖项? 我没有使用即时运行@MohammedAtif。 @T.Neidhart 是的,发布的 apk 有更多的可绘制对象。但是不知道为什么,大家有什么建议吗? @T.Neidhart 发布但未签名也是 55mb,但如果我签名它会增加到 71mb。 【参考方案1】:

进一步解释sosite's answer,似乎只有在比较通过运行或调试为特定设备(即使没有启用即时运行)构建的debug apk 而不是通过构建构建的debugapk 时才会发生这种情况>构建 APK(适用于任何受支持的设备)。

通过Build APK 构建的任何变体(甚至是debug 本身)都将包含该变体的所有资源。此外,Run/Debug apk 包括特定于该单个设备的预索引类,而 Build APK 仅包括编译器确定安全的一些通用预索引类所有支持的设备 - 完全 dexing 仅发生在设备本身,当安装 apk 时。

我已经将一个通过 Debug 生成的 apk 与另一个通过 Build APK 生成的 apk 压缩为同一项目的相同变体,published the simplified output 用于演示 (@987654323 @)。

【讨论】:

【参考方案2】:

当您为特定类型的手机在本地构建应用时,Android Studio 仅附加必要的资源文件。当您构建发布版本时,您已附加所有类型的可绘制对象,因此您的应用文件大小会急剧增加。

我建议您在尽可能多的地方使用 jpg 代替 png,当然还可以压缩它们 - 我经常使用 tinyPNG 网站或只使用 Photoshop ;)

【讨论】:

以上是关于android 发布的 apk 比调试 apk 大的主要内容,如果未能解决你的问题,请参考以下文章

APK 大小比预期的要大 - android studio

CocosIDE导出Android APK的注意事项

Android:如何禁用调试以上传 apk

安装文件比APK文件大4-5倍

React Native Android 发布 apk 是调试,不是发布

Android apk 调试模式工作正常,但发布模式给出太多警告