我的主要目标是从 apk 中删除未使用的资源和库,以便减小它的大小。我发现Resource Shrinking当我浏览this时所以帖子。
所以我将我的 gradle 文件更改为:
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId 'com.galleri5.android'
multiDexEnabled true
minSdkVersion 16
targetSdkVersion 23
versionCode 12
versionName "0.10"
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
为了检查这是否有效,我生成了 apk,apk 的大小与以前相同,没有缩小。因此,我尝试通过运行以下命令查看是否/哪些资源被删除:
./gradlew clean assembleDebug --info | grep "Skipped unused resource"
这是我得到的输出:
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Picked up JAVA_TOOL_OPTIONS: -javaagent:/usr/share/java/jayatanaag.jar
我没有看到资源被删除。我是否做错了什么或者我完全误解了这个工具?任何帮助将不胜感激。谢谢。
编辑 我只是检查使用上述配置运行应用程序后生成的 apk(apk-debug.apk) 的大小。当我生成签名的 apk 时是否会发生收缩,或者它在普通的 apk 中也可见吗?
最佳答案
资源缩减只会发生在您的发布版本中,因为这是您在 build.gradle 中指定的。如果您想在调试版本中进行缩小,您可以将以下闭包添加到 buildTypes 中,但通常不会这样做。
buildTypes {
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
关于android - 如何正确使用资源收缩来减小APK大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33852977/