我的主要目标是从apk中删除未使用的资产和库,以便我可以减小它的大小。我在浏览Resource Shrinking SO帖子时发现了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中是否可见?
答案 0 :(得分:3)
资源缩减只会发布在您的发布版本中,因为您已经在build.gradle中指定了这些内容。如果要在调试版本中缩小,可以将以下闭包添加到buildTypes,通常不会这样做。
buildTypes {
debug {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}