我正在使用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/”}}
依赖
2 回答
当您在本地为特定类型的手机构建应用程序时,Android Studio仅附加必要的资源文件 . 当您构建发布版本时,您已附加所有类型的drawable,以便您的应用程序文件大小可以大幅增加 .
我建议你尽可能多地使用jpg代替png并压缩它们 - 通常我使用tinyPNG网站或只是Photoshop;)
进一步解释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) .