android release apk比调试apk更大

时间:2016-09-22 10:09:01

标签: android android-studio proguard minify

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

申请插件:' 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'
}

}

知识库{     mavenLocal()     maven {         名字" jcenter"         url" http://jcenter.bintray.com/"     } }

依赖{     ... }

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:2)

进一步解释sosite's answer,似乎只有比较通过运行或调试构建的debug apk对特定设备(即使没有启用Instant Run)而不是{{1}通过Build>构建的apk构建APK(适用于任何支持的设备)。

通过 Build APK 构建的任何变体(偶数debug本身)都将包含该变体的所有资源。此外,运行/调试 apk包含特定于该单个设备的预定义类,而 Build APK 仅包含编译器确定安全的一些预定义类。所有支持的设备 - 当安装apk时,完全dexing只发生在设备本身。

我已经通过调试生成了一个apk,并通过 Build APK 为同一个项目的同一个变体生成了一个apk和published the simplified output示范(also available as html)。

答案 1 :(得分:1)

当您针对特定类型的手机在本地构建应用时,Android Studio仅附加必要的资源文件。当您构建发布版本时,您已附加所有类型的drawable,以便您的应用程序文件大小可以大幅增加。

我建议您尽可能多地使用jpg代替png并压缩它们 - 通常我使用tinyPNG网站或只使用Photoshop;)