當編譯具有多個apk庫中的一個的項目時,則多於一個R.java由aapt工具生成。每個庫一個,應用程序本身一個。爲R類中的相同資源生成不同的ID
每個R文件都會定義相同的ID。現在,這一切都沒有問題。事實上是幾年。但突然不再。現在相同的資源有兩個不同的ID。
目標/生成來源/ R/COM/viewpagerindicator/R.java:
public static int default_line_indicator_selected_color=0x7f04000b;
目標/生成來源/ R /淨/ sourceforge的/ UIQ3/fx602p/R.java:
public static final int default_line_indicator_selected_color=0x7f07000b;
有沒有人知道可能出了什麼問題?
更新:
我是雙等項目檢查。在那裏我注意到,除了final
R.java文件應該100%相同。尤其是:每個R.java文件都應該定義所有ID - 即使是不屬於庫的一部分的ID。
我的麻煩項目也不是這種情況。每個庫R.java只定義庫使用的ID。
快速和骯髒的修復
,直到我發現我使用下面的螞蟻任務作爲快速和骯髒的修復,真正的問題是什麼:
<copy
encoding='${project.build.sourceEncoding}'
file='target/generated-sources/r/net/sourceforge/uiq3/fx602p/R.java'
overwrite='true'
toFile='target/generated-sources/r/com/viewpagerindicator/R.java'
>
<filterchain>
<tokenfilter>
<replacestring
from='net.sourceforge.uiq3.fx602p'
to='com.viewpagerindicator'
></replacestring>
</tokenfilter>
</filterchain>
</copy>
我不知道爲什麼AAPT被稱爲有幾次,搜索和替換的副本也可以做到這一點。請注意,我也不會刪除final
。
是的,他們在不同的R.java文件 - 我已經把那麼在彼此的頂部,這樣可以發現一個字符的區別。但是你的問題表明這很混亂。我改變了文字。 – Martin
唯一重要的是你正在建設的項目中的一個。 – njzk2