2016-09-22 92 views
9

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

应用插件: '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() 行家{ 名称“jcenter” url“http://jcenter.bintray.com/” } }

依赖{ ... }

enter image description here

enter image description here

+0

您是否使用即时运行进行调试? –

+0

请注意,ProGuard只处理类文件,而在屏幕截图中显然两个版本之间的资源不同。发行apk有更多的可绘制的。是否有可能对发布类型有额外的依赖关系? –

+0

我没有使用即时运行@MohammedAtif。 – Thinsky

回答

1

当你在本地建立你的应用程序对特定型号的手机,然后过Android Studio连接只需要资源文件。当你构建发行版本时,你已经附加了所有类型的drawables,这样你的app文件大小就可以大幅增加。

我建议你在尽可能多的地方,你可以使用JPG到位PNG和压缩,当然他们 - 我常常使用tinyPNG网站或只是Photoshop中;)

0

正如sosite说,还进一步打算,似乎这与在特定设备中比较旨在运行或调试的调试版本(即使没有启用即时运行)相比,而不是通过Build> Build APK构建调试版本。

我用zipdiff比较了这两个,并发布了输出html here。对不起,它不容易看到,但你仍然可以从源代码中获得它的要点。

基本上,运行变体似乎包含特定于所选目标设备的dexed类,并排除未使用的资源,而正常构建(也包括发布变体)仅包含一般dexed类和所有可用的资源。