当 debuggable 设置为 true 时,Proguard 不会缩小
Posted
技术标签:
【中文标题】当 debuggable 设置为 true 时,Proguard 不会缩小【英文标题】:Proguard not minifying when debuggable set to true 【发布时间】:2016-09-05 08:59:49 【问题描述】:我正在尝试测试已超过 64K 限制的应用。
我已将 minify 设置为开启,但在启用可调试时它不起作用。但是,如果我构建一个关闭可调试的版本,那么它会缩小 2/3!
我错过了什么吗?这是我的 Gradle 文件的相关部分:
buildTypes
release
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
debug
minifyEnabled true
debuggable true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
proguard-rules.pro:
-keep class .R
-keep class **.R$*
<fields>;
-keepattributes *Annotation*
-keepclassmembers class **
@org.greenrobot.eventbus.Subscribe <methods>;
-keep enum org.greenrobot.eventbus.ThreadMode *;
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent
<init>(java.lang.Throwable);
-dontwarn com.google.**
-dontwarn com.squareup.picasso.**
-dontnote com.google.**
-dontnote com.squareup.picasso.**
【问题讨论】:
【参考方案1】:启用 proguard 后,您的代码会被混淆,无法进行调试。这就是为什么当您想要调试并将标志设置为 true 时,proguard 不会激活,这就是为什么您看不到 apk 的缩小。
检查this post。它有一个类似的问题,将帮助您更好地了解条件。
【讨论】:
我在问之前实际上看过那个帖子。我的印象是它暗示它们可以混合。烦人的是,缩小后的方法少于29K。大部分被丢弃的来自谷歌。 我注意到的另一件事是,这只发生在我直接运行到设备时。如果我构建它(使用 Build->Build APK)然后缩小确实有效。以上是关于当 debuggable 设置为 true 时,Proguard 不会缩小的主要内容,如果未能解决你的问题,请参考以下文章
当 setAcceptDrops 设置设置为 True 时,如何检测 QListWidet 内部移动信号
当 watch 设置为 true 时,Webpack 运行不干净
当 edittext 设置为 setVisible(true) 时,带有选项卡的操作栏会上升