【问题标题】:Proguard not minifying when debuggable set to true当 debuggable 设置为 true 时,Proguard 不会缩小
【发布时间】: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.**

【问题讨论】:

    标签: android android-proguard


    【解决方案1】:

    启用 proguard 后,您的代码会被混淆,无法进行调试。这就是为什么当您想要调试并将标志设置为 true 时,proguard 不会激活,这就是为什么您看不到 apk 的缩小。

    检查this post。它有一个类似的问题,将帮助您更好地了解条件。

    【讨论】:

    • 我在问之前实际上看过那个帖子。我的印象是它暗示它们可以混合。烦人的是,缩小后的方法少于29K。大部分被丢弃的来自谷歌。
    • 我注意到的另一件事是,这只发生在我直接运行到设备时。如果我构建它(使用 Build->Build APK)然后缩小确实有效。
    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2011-09-15
    • 1970-01-01
    • 2011-10-03
    • 2021-09-26
    相关资源
    最近更新 更多