运行 Android Studio 中的调试器,Proguard 开启

Run Debbuger in Android Studio with Proguard On

我想 运行 Android 中的调试器,但我的问题是在调试版本中我有 proguard。这样做的原因是愚蠢的 65K 方法限制。我打开混淆器来帮助减少方法。这让我回到了 43K 方法,但现在在 IDE 中,我无法调试单步执行代码,因为 IDE 中的所有断点都变成红色 X,错误提示无法访问代码。如果我关闭调试器,断点将恢复正常。我需要在构建 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'
    }
}

您的 ProGuard 配置可能遗漏了一些子句。

我猜你需要这个:

-keepattributes SourceFile,LineNumberTable

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

为了调试,最好有这个额外的子句:

-keepattributes LocalVariableTable,LocalVariableTypeTable

这将保留局部变量名。

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

-dontoptimize
-dontobfuscate