我想在Android中运行调试器,但我的问题是在调试版本中我已经开始了。原因是愚蠢的65K方法限制。我打开了proguard以帮助减少方法。这让我回到了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'
}
}
答案 0 :(得分:3)
你的ProGuard配置可能会遗漏一些条款。
我想你需要这个:
3333 2134 10 12345 22222 54367.05 34765.05
3333 NA NA 34567 12235 54298.05 34568.05
3333 2134 11 77777 22222 52765.05 32567.05
3333 NA NA 55555 11111 52875.05 36547.05
3333 2134 12 56347 46678 53789.05 34566.05
它将保留(顾名思义)源文件的名称和行号表。实际上,这个子句也应该用于释放,因为如果没有它,你就无法明确地反混淆堆栈跟踪。
为了调试它有额外的条款是好的:
-keepattributes SourceFile,LineNumberTable
这将保留局部变量名称。
或者,您可以考虑使用这些子句(代替或除了前面的子句)进行调试:
-keepattributes LocalVariableTable,LocalVariableTypeTable