我正在尝试使用选项Java Field Watchpoints
调试我的应用程序。我的变量是第一次在我的代码中出现(它的初始化),但此后我就遇到了这个错误:
找不到本地变量'variableName'
然后我不能遵循它的修改。
我一直在搜索并修改我的gradle文件,如下所示:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
debuggable true
testCoverageEnabled = true
}
}
我的有效构建版本为debug
(未发布),因此错误并非来自此处。
我正在使用Android Studio 3.6
Canary 11
有人遇到相同的问题吗?
答案 0 :(得分:1)
这可能是对工具链中某些部分的优化,例如删除无效代码,转义分析,或者甚至是运行时中的错误,请查看其中的一些可能性:https://www.guardsquare.com/en/blog/proguard-and-r8
也许单元测试您的代码并用调试日志对其进行注释会更成功。
答案 1 :(得分:0)
您的变量超出范围: 如果在局部作用域(例如循环)中声明了它,或者在函数内部使用try块或带有括号的任何类型的块声明了它。因此,如果在初始化变量之后,下一个执行的语句在该块之外,则您的变量将不再可见并且无法访问(这是Java中局部变量的工作方式)。所以不是错误。 为了进行验证,您可以在类级别声明变量,然后在本地块中进行初始化。在本地块外部仍可以访问该变量。
class MyClass{
private MyObject myObject;
public void myFunction(){
if(....){
myObject = new MyObject();
}else{
}
}
}