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


发布于 2017-07-25 00:38:32
进一步解释sosite's answer,似乎只有在比较通过运行或调试为特定设备构建的debug apk (即使没有启用即时运行)而不是通过Build > Build APK构建的debugapk (对于任何支持的设备)时,才会发生这种情况。
通过Build APK构建的任何变体(甚至是debug本身)都将包含该变体的所有资源。此外,运行/调试apk包括特定于单个设备的预解译类,而构建APK只包括一些通用的预解译类,编译器确定这些类对所有支持的设备都是安全的-完整的dexing仅在安装apk时发生在设备本身。
我已经压缩了一个通过Debug生成的apk和另一个通过Build APK生成的APK,用于相同项目的相同变体和用于演示的published the simplified output (also available as html)。
发布于 2017-05-21 00:23:33
当您在本地为特定类型的手机构建应用程序时,Android Studio只附加必要的资源文件。当你构建发布版本时,你已经附加了所有类型的绘图文件,所以你的应用程序文件大小可能会急剧增加。
我建议你在尽可能多的地方使用jpg来代替png,当然也要压缩它们--我经常使用tinyPNG网站或者只使用Photoshop ;)
https://stackoverflow.com/questions/39636182
复制相似问题