Android では、各種のリソース管理はアプリケーションプロジェクトに含まれるリソースのものが優先されるように作られています。
つまり、 ライブラリプロジェクトと同じ名前のリソースをアプリケーションプロジェクトに配置すると、アプリケーションプロジェクトのものが使われる ことになります。
意図しないリソースの競合を避けるには、ライブラリプロジェクト側の配慮が必要です。
幸いなことに、ビルドスクリプトでこれに対応することができます。
リソース名の接頭辞を宣言する
以下の様にすることで、自分のライブラリで使用する接頭辞を宣言します。
build.gradle
android {
resourcePrefix 'mylib_'
}
こうしておくと、 この接頭辞が付与されていないリソースに対して Lint による警告 が出力されるようになります。
本当は自動で接頭辞付けてくれたらいいんだけどな…
AndroidStudio における警告表示は、0.5.8 から対応しています。