我有一个项目正在使用ActionBarSherlock,Crouton和UnifiedPreference,它可以正常运行(在Android 2.3.3+上编译,运行时无需设备和模拟器运行)。我想添加HoloEverywhere,以便在Gingerbread设备上运行时可以保持统一的界面。一旦我将HoloEverywhere添加到混合中,我就会收到以下AAPT错误:
[2012-12-14 12:47:04 - MyApp] C:\git\myrepo\UnifiedPreference\library\res\values\atrs.xml:7: error: Attribute "id" has already been defined
[2012-12-14 12:47:04 - MyApp] C:\git\myrepo\UnifiedPreference\library\res\values\atrs.xml:11: error: Attribute "summary" has already been defined
[2012-12-14 12:47:04 - MyApp] C:\git\myrepo\UnifiedPreference\library\res\values\atrs.xml:13: error: Attribute "breadCrumbTitle" has already been defined
[2012-12-14 12:47:04 - MyApp] C:\git\myrepo\UnifiedPreference\library\res\values\atrs.xml:15: error: Attribute "breadCrumbShortTitle" has already been defined
[2012-12-14 12:47:04 - MyApp] C:\git\myrepo\UnifiedPreference\library\res\values\atrs.xml:19: error: Attribute "fragment" has already been defined
AAPT错误引用我的android库依赖项列表中的 first (UnifiedPreference或HoloEverywhere)中的任何库项目。我还发现所有违规属性都被定义为<declare-styleable name="PreferenceHeader">
的一部分我当前的Android依赖关系顺序和结构是:
MyApp
ActionBarSherlock
HoloEverywhere
UnifiedPreference
Crouton
HoloEverywhere
ActionBarSherlock
UnifiedPreference
ActionBarSherlock
Crouton
我尝试更改HoloEverywhere和UnifiedPreference的顺序,从一个删除ActionBarSherlock并使其依赖另一个,并尝试再次从git中删除它们。
有没有人知道如何让UnifiedPreference和HoloEverywhere一起玩得很好,因为它们都具有相同名称的属性?
答案 0 :(得分:2)
是的,你必须重命名一些属性才能摆脱AAPT问题。资源合并到项目后,您将无法拥有相同名称的属性。如果实际上这些是重复属性(意思是,碰巧在其各自项目中从头开始定义并且实际上与另一个相同),那么只需将它们删除,保留在包含这些属性的最高依赖项中,并从较低的属性中删除它们。