2013-04-17 41 views
0

Android項目是否存在一些XML /佈局/資源限制/編譯工具鏈中的某些點?將一個(未使用的,任何內容)XML佈局文件添加到我的Android項目中會導致應用程序中其他位置出現渲染錯誤。刪除它可以修復它。這是編譯工具鏈某些部分的錯誤,我該如何診斷/修復它?添加兩個XML文件導致渲染錯誤/某事。笏?


一些額外的背景:

我有一個比較大的Android項目。今天,我在添加一個功能時遇到了一個問題:在我旋轉應用程序之前,無法渲染背景的按鈕。其他背景/風格/風格的按鈕仍然有效,但是這個背景在應用程序中隨處可見。旋轉修復了它所在的屏幕以及按鈕的後續實例,直到重新啓動應用程序的進程。

經過試驗和錯誤,並平分和實驗的很多,我有一個最小的再現是完全可靠的一些級別:增加了兩個XML佈局文件,以我目前的項目引發的bug。具體而言,在唯一的/ res/layout文件夾中添加第40個XML文件。刪除它可以使按鈕正確渲染,添加它會破壞它。

這些文件可以完全不用,完全從頭開始,任何內容和任何名稱。沒有其他項目更改。我正在運行最新版本的Eclipse和Android SDK - 如果需要,我可以獲得特定的版本號。它已經在同類設置的同事機器上覆制了這個項目。我已經清理,重建,手動刪除構建產品,重新啓動計算機,錯誤仍然存​​在。

必須有更具體的東西造成它,我很樂意提供幫助縮小範圍的建議。不幸的是,它超出了我對Android構建系統的瞭解,而且它似乎並不是我直接造成的。誰能幫忙?或者指點我一些更多的資源?


更多細節

  • (無法相信我忘了這一點)這似乎只在2.3.6設備我有發生。它可能會在其他2.x版本上發生,但是4.2.2會始終正確呈現按鈕(儘管我沒有/不能排除其他位置的錯誤)。我今天會嘗試模擬器。
  • 發生在多個Android設備上,儘管它們基本都是股票(沒有自定義主題等)。
  • 當前的應用程序設置是一個核心應用程序項目,其他三個項目使用該核心項目通過清單合併生成不同的構建(開發,生產等)。
  • 這個特殊的可繪製資源應該有一個唯一的R id,所以它不會在那裏發生碰撞。我沒有把它與系統的R值進行比較 - 有沒有一種好的方法來做到這一點?
  • 目標SDK = 17,最小= 8

也很有趣:重命名從 「rounded_teal_button_normal」 提拉文件 「rounded_teal_button_nrml」 並不能改變什麼,但將其更改爲 「rounded_teal_button_aargh」 確實是。只有重要的區別我可以看到,「nrml」不改變文件的字母順序,而「aargh」(有「_disabled」文件和「_pressed」)。但是,這會導致現在處於「正常」位置的繪圖停止繪圖。

更改項目的按鈕狀態,選擇的順序或狀態得到其繪製(甚至刪除所有其他樣式)沒有任何影響。

添加第三 XML文件導致消失的問題,它似乎並沒有被引起按字母順序附近可繪打破,但它是非常很難確定它的解決一切和「爲什麼'問題依然存在。

+0

將xml佈局添加到項目中沒有限制。但它會減慢你的應用程序。越來越多的android xml意味着更多的UI被誇大和渲染。 –

回答

1

一些更多的信息是需要能夠做出更多的猜測。一旦我遇到類似於GB版本發生但不在上面的問題,只有在Mac上進行編譯;如果在Windows上編譯,同樣工作正常;這個問題是背景圖片沒有顯示出來的按鈕。我的背景圖像是一個9-補丁,最後我注意到它是由於沒有將所有可繪製的 - [m | h | x] dpi中的相應圖像放在一起;我只有在drawable-xhdpi目錄下才修復這個問題。您可以檢查這些類型的問題。例如,這個問題只出現在某些屏幕密度或某些android版本等等。正如其他答案所說,40 xml遠沒有任何限制。

HTH, 阿里。

+0

它在根目錄'drawable'文件夾中繪製 - 它不是一個圖像,而是一個3項目,只有顏色和形狀。我不認爲(?)如果我將其添加到其他位置,它會產生變化,並且在我傾向於尋找其他位置之前它不是問題。 我用更多的信息更新了主要問題 - 介意看看?有沒有你想要的信息?我不確定什麼是有用的,我不能只是拋棄整個項目。 – Groxx

+0

當您導航到顯示問題的頁面時,嘗試監視日誌,並查看是否存在有關丟失ID或可以提供更多線索的任何錯誤。 –

+0

看起來沒有任何關聯。很多:'VFY:無法解析虛擬方法4109',然後是'VFY:替換0x000b處的操作碼0x6f'和'VFY:死代碼0x000e-000f',但是這些都在ActionBarSherlock庫中(似乎是版本化代碼被修剪)。除此之外,沒有任何東西看起來像是一個錯誤。 – Groxx