2011-08-07 14 views
0

Androidライブラリを使用する場合、複数のプロジェクト(メインまたはライブラリ)が同じリソースを定義している場合、優先度の高いプロジェクトのコピーが使用され、前のものに置き換わります。ライブラリ名の衝突を避けるカスタムビルドスクリプト?

これは、競合を避けるためにすべてのリソース名の前に付ける必要があるため、再利用可能なライブラリを作成する際に問題になります。このトピックの詳細については、Android Parcel Projectを参照してください。

私がしたいのは、コンパイルする前に、すべてのライブラリのすべてのリソースの名前にパッケージ名を付加するスクリプトです。このために私は、生成されたantビルドスクリプトを使用してカスタムステップを追加するつもりです。

これが可能かどうかご存じですか?この問題を解決するためのより良い解決策がありますか?

答えて

1

これが可能かどうかは分かりますか?

ライブラリのソースコードがある場合は、これを行うことができます。リソースIDを動的に参照する場所(リフレクション、getIdentifier()など)は手動で調整する必要があります。また、コードを変更したことを考えると、図書館の著者から助けを得ることができない場合があります。

私は、ライブラリの著者に、ライブラリの将来のエディションでリソースプレフィックスを追加するよう説得しようと努力しています。

+0

私はプラグイン可能な「モジュール」(それぞれがAndroidライブラリです)を使って拡張可能なアプリを作っています。だから私の場合、私はモジュールの作家に反射などを使わないように頼むことができます。あなたのParcelHelperに似たものを作っていきますが、それはIDを調べるときに自動的にパッケージ名を追加します。この方法では、モジュール開発者は衝突の問題を完全に無視することができます。 – MasterScrat

+0

モジュール開発者は、Antスクリプトを強制的に使用する場合を除いて、接頭辞自体を処理する以外に選択肢はありません。結局のところ、彼らはモジュールをテストする必要があります。 – CommonsWare

+0

さて、実際にAntスクリプトを必須にすることは本当に問題ではないので、いずれにしてもSDKなどが必要になります。接頭辞を使用するよりも、このように便利だと思います。 – MasterScrat

関連する問題