1

現在、動作する 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 ライブラリの依存関係リストで最初にあるライブラリ プロジェクト(UnifiedPreference または HoloEverywhere) を参照します。問題のある属性はすべて、<declare-styleable name="PreferenceHeader">現在の Android 依存関係の順序と構造の一部として定義されていることも発見しました。

MyApp
   ActionBarSherlock
   HoloEverywhere
   UnifiedPreference
   Crouton
HoloEverywhere
   ActionBarSherlock
UnifiedPreference
   ActionBarSherlock
Crouton

HoloEverywhere と UnifiedPreference の順序を変更し、一方から ActionBarSherlock を削除して他方に依存させようとしましたが、もう一度 git から引き下げようとしました。

どちらも同じ名前の属性を持っているため、UnifiedPreference と HoloEverywhere をうまく連携させる方法を知っている人はいますか?

4

1 に答える 1

2

ええ、AAPT の問題を解決するには、いくつかの属性の名前を変更する必要があります。リソースがプロジェクトにマージされると、同じ名前の属性を持つことはできません。実際にこれらの属性が重複している場合 (つまり、それぞれのプロジェクトでたまたま最初から定義されていて、実際には他の属性と同一のもの)、それらを削除するだけで、それらを含む最上位の依存関係に残し、下位の依存関係から削除します。

于 2012-12-14T18:26:44.180 に答える