私は2つのAndroidプロジェクト、メインのもの(パッケージ名com.adip.sampler
)とmain(パッケージ名com.samples.projb
)に追加されるライブラリを持っています。 my_int_values
:リソースでそれらの両方で、私は、同じキーを持つinteger-array
を持っている主なプロジェクトでAndroidのリソースキーの衝突
:
<integer-array name="my_int_values">
<item>10</item>
<item>20</item>
<item>30</item>
<item>40</item>
<item>50</item>
<item>60</item>
<item>70</item>
<item>80</item>
</integer-array>
図書館にいる間:メインプロジェクトで
<integer-array name="my_int_values">
<item>34</item>
<item>35</item>
<item>36</item>
<item>37</item>
</integer-array>
活動からこれらの配列(メインプロジェクトとライブラリの両方)の値が何であるか調べていたら:
その後、私はLogcatでこれを見ている:
In Main: [10, 20, 30, 40, 50, 60, 70, 80]
In Libr: [10, 20, 30, 40, 50, 60, 70, 80]
メインプロジェクトは、ライブラリの配列で定義された値をオーバーライドしているようだ...私は正しいキーとし、その資源から読んでいた場合、私がチェック倍増します大丈夫ですか?私がそれぞれのR
クラスを見てみるまで、メインプロジェクトでは、これは私がcom.adip.sampler.R.array.my_int_values
のために持っているものです。
public static final class array {
public static final int my_int_values=0x7f060000;
}
com.samples.projb.R.array.my_int_values
ライブラリプロジェクトにいる間:
public static final class array {
public static final int my_int_values = 0x7f060000;
}
Androidのツールは、同じ値を生成しているので、不思議では私は、この動作を取得していないのです。整数配列の1つからキーを変更するとこの動作を取り除くことができますが、多くのリソース、依存関係ライブラリを持つ大きなプロジェクトがあるとしたら、遅かれ早かれこの種の問題にぶつかる可能性があります。同じキーの値を持つ同じ種類のリソース(私はstring
でチェックし、string-array
以上の動作も同様に表示されます)。したがって、質問は次のようになります。
- なぜこの問題が発生するのですか?それが問題ではない場合は、この動作を説明するものは何ですか?
- これを避けるにはどうすればよいですか?私は...トリックを行いますキーを定義する際に一意のいくつかの種類を持ってしようとしているが、開発者は怠惰になりがちという推測してい
これは、最新のADTとEclipseのバージョン(ジュノとインディゴの複数のバリアントを使用して表示されます)。 Windowsのみでチェックされます。
私はこれが答えであることを恐れていました:) Lintが異なるプロジェクト間で重複するリソースIDを検出することを意味するのかどうか知りましたか? – gunar
これはあなたのアプリケーションに任意のライブラリで定義されているリソースの動作や値を使用または再定義するための柔軟性を与えます。 Androidがメインプロジェクトのリソースを使用している場合、または優先度の高いプロジェクトから重複リソースをダンプする場合、柔軟性はどこですか? – gunar
答えが受け入れられましたが、StackOverflowでは22時間で賞金を払うことができます。 tacksåmycket! – gunar