0

プロジェクトに ActionBarSherlock を使用するのが好きです。最近では、再現可能なコードをライブラリに作成したいと考えています。

現在、私はこのドキュメント「ADTを使用したEclipseからのプロジェクトの管理」* http://developer.android.com/guide/developing/projects/projects-eclipse.htmlでプロジェクトをセットアップして使用しています。

今回、私のプロジェクトにはこれらの依存関係があります。

  • アクションバーシャーロック
    • マイプロジェクト1
    • MyProject2
    • MyProject3

以下のように変更したい

  • ActionBarSherlock (ライブラリです)
    • MyCommonComponent (ライブラリ)
      • マイプロジェクト1
      • MyProject2
      • MyProject3

MyProjectX シリーズは、ActionBarSherlock に依存するほとんど同じコードを持っているためです。

だから私はセットアップしました。しかし、ADT はいくつかのエラーを示します。

MyCommonComponent のライブラリ オプションをオンにすると、ADT は MyProject1 のコンパイル時にこのエラーを表示します。

java.lang.IllegalArgumentException: already added: Lcom/actionbarsherlock/R

依存関係の設定によって埋め込まれた ActionBarSherlock リソースが原因で、ADT は重複クラスのインポート エラーを表示します。

この状況について何か解決策はありますか?

つまり、「ライブラリ プロジェクトは別のライブラリ プロジェクトに依存できますか?」という意味です。

4

1 に答える 1

0

あなたの問題は、ライブラリの参照が間違っていることだと思います。正しく理解できれば、現在のプロジェクトの設定は次のようになります。

ActionBarSherlock (is Library)
 |    MyCommonComponent (is Library)
 |---|----MyProject1
 |---|----MyProject2
 |---|----MyProject3

つまり、最上位のライブラリだけでなく、すべてのプロジェクトが両方のライブラリを参照するようにします。ただし、正しい設定は次のようになると思います。

ActionBarSherlock (is Library)
 |----MyCommonComponent (is Library)
      |---MyProject1
      |---MyProject2
      |---MyProject3

つまり、参照するだけで、他のすべては参照するだけMyCommonComponentです。ActionBarSherlockMyCommonComponent

于 2012-04-27T05:19:20.827 に答える