当编译具有多个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