2

我想在 Android 中运行调试器,但我的问题在于我有 proguard 的调试版本。原因是愚蠢的 65K 方法限制。我打开了 proguard 来帮助减少方法。这让我回到了 43K 方法,但现在在 IDE 中,我无法调试单步执行代码,因为 IDE 中的所有断点都变成红色 X,错误提示无法访问代码。如果我关闭调试器,断点会恢复正常。我需要在 build gradle proguard 中做些什么来让它工作还是我只是被水洗了?

buildTypes {
    debug {
        debuggable true
        minifyEnabled  true
        shrinkResources false
        zipAlignEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled  true
        shrinkResources true
        signingConfig signingConfigs.release
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-samsung.txt'
    }
}
4

1 回答 1

4

您的 ProGuard 配置可能遗漏了一些条款。

我猜你需要这个:

-keepattributes SourceFile,LineNumberTable

它将保留(顾名思义)源文件的名称和行号表。实际上,这个子句也应该用于发布,因为没有它你不能明确地去混淆堆栈跟踪。

对于调试,最好有这个额外的子句:

-keepattributes LocalVariableTable,LocalVariableTypeTable

这将保留局部变量名称。

或者,您可以考虑使用这些子句(代替或除前面的子句之外)进行调试:

-dontoptimize
-dontobfuscate
于 2016-04-08T19:51:25.217 回答