2012-01-10 39 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

相關問題