首页 文章

android release apk比调试apk更大

提问于
浏览
9

我正在使用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'
}

}

存储库{mavenLocal()maven {name "jcenter" url“http://jcenter.bintray.com/”}}

依赖

enter image description here

enter image description here

2 回答

  • 1

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

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

  • 1

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

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

    我通过Debug生成了一个apk,用另一个通过Build APK为同一个项目的相同变体和published the simplified output进行演示(also available as html) .

相关问题