2012-01-10 40 views
0

猜我发现它自己:显然其他 - 如果块被检测为不可访问的代码,并没有编译到二进制文件。至少这是我现在的结论。已经快7点了。小睡一会后会进一步调查。在开发android应用程序时,过时的二进制文件隐藏在哪里?

我完全失去了,失去了一天已经深入挖掘。

我有一个android应用程序。在某些时候,我的更改无法再被调试。它着手于运行陈旧的代码。我已经做了所有明显的(刷新,项目清洁),不那么明显(日食我的项目 - 清洁,新鲜结帐)和我所做的最后一件事是:

  • 下载Eclipse
  • 安装善变和ADT
  • 安装Android SDK中
  • 结帐我的项目是处女的工作区
  • 运行在一个新创建的虚拟设备

猜测的应用程序,它仍然表现如下:

当我在“// breakpoint”处按F6(Step Over)时,虽然在// 1,// 2后面可以遍历“// 1”和“// 2”应该无法达到。另外,调试器知道在一无所知的变量否则,如果块,而我在// 1

} else if (column == 4) { // breakpoint 
    TextView cardSetLabel = (TextView) view; 

    String name = cursor.getString(cardSetColumnIndex); 
    name = name.substring(0, Math.min(15, name.length() - 1)); 
    cardSetLabel.setText(name); // 1 
    return true; 
} 
return false; // 2 

其实即使我删除周围的代码块的整体,它确实仍然是东西完好无损。这是巫术,对不起。 至少删除整个活动会导致活动在运行时消失,因此,过时的东西理论并不是真正的选择。

请,任何帮助赞赏:(

+0

您是否找到解决方案? – 2012-01-10 22:37:10

回答

0

显然,else-if块被检测为不可访问的代码并且未被编译到二进制文件中。至少这是我现在的结论。

其实我发现通过调试,“4”不是正确的数字,实际上是一个数字,从来没有“列”的价值,但我没有想到编译器知道在编译时:(

0

难道你打// 1在一个迭代// 2上的另一个呢?也许封闭的方法被称为连续两次。

也许尝试使用adb卸载/安装,手动输入路径以确保事物指向您认为的位置手动检查您的构建目录在干净和新建版本之间是干净的

在那里添加日志消息,并在logcat中注意确保您正在运行新代码。

+0

迭代?不,我按F6键(Step Over)。 卸载我也尝试了,但是因为没有工作,我将它安装到了新创建的android虚拟设备上,所以很确定这是我日食的最新创作 日志记录是我跳过的一个明显的步骤,但现在尝试了我没有日志输出 – Giszmo 2012-01-10 04:39:27

0

不要相信调试器。使用一些日志语句来验证语句实际上正在执行。

调试器很难被混淆,并跨越并未真正执行的行。

在程序启动时添加一些新的日志语句。你假设你正在运行陈旧的代码可能是不正确的。

+0

是的,我可能听起来很愚蠢,我接近视频录音,因为它是如此。 gahhh。但即使我删除了整个代码功能保持不变。 – Giszmo 2012-01-10 04:54:33

+0

听起来很沮丧! – 2012-01-10 04:56:18

+0

也许尝试使用ant从命令行构建和安装项目。确保eclipse不会在某个秘密的地方缓存某些东西。您可以通过在项目目录中运行“ant clean build debug”来完成此操作。 – 2012-01-10 04:59:25

相关问题