我使用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/" } }
依赖{ ... }
答案 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;)