运行 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
我想 运行 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