我正在使用 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'
}
}
and
repositories {
mavenLocal()
maven {
name "jcenter"
url "http://jcenter.bintray.com/"
}
}
dependencies {
...
}
进一步解释索西特的回答,似乎只有在比较a时才会发生这种情况debug
通过运行或调试构建的 apk 适用于特定设备(即使没有启用即时运行),而不是debug
通过“构建”>“构建 APK”构建的 apk(对于任何支持的设备)。
任何变体(甚至debug
本身)通过构建构建APK将包括该变体的所有资源。另外,运行/调试apk 包含特定于该单个设备的预索引类,而构建APK其中仅包含一些编译器确定对所有支持的设备安全的通用预索引类 - 完整的索引仅在安装 apk 时发生在设备本身中。
我已经 zipdiff-ed 生成的 apkDebug与另一个通过构建APK对于同一项目的相同变体和发布了简化的输出用于演示(也可以作为 html 提供).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)