7157


Android StudioでModuleが2つある場合の優先順位についてです。

1つのプロジェクトにappというアプリケーションとhogeというライブラリが存在しています。  
appはbuild.gradleで`build.apply plugin: 'com.android.application'`宣言をしており  
hogeはbuild.gradleで`build.apply plugin: 'com.android.library'`宣言しています。  
app、hogeともにjavaソース、res配下のvaluesやlayout、AndroidManifest.xmlを保持しています。

Project Structureでappからhogeへの関連付けを行いappのコードでhogeを呼び出して実行していますが。  
appの`values` -> `string.xml`がhogeのstring.xmlで実行時に上書きされているようで  
`string.xml`のapp_nameなどがhogeの値になっているので、  
appの`string.xml`を優先するにするにはどんな関連付けを行えばよいでしょうか?


CC BY-SA 3.0
2015-02-26T10:48:39.540
7148
2015-03-04T16:07:59.127
2015-02-26T14:05:42.403
7572
356
question
android android-studio gradle
Androidでライブラリのstring.xmlが優先される問題


Android Developers「[Managing Projects
Overview](http://developer.android.com/tools/projects/index.html#LibraryProjects)」の抜粋です。

> ### Resource conflicts
>
> Since the tools merge the resources of a library module with those of a
> dependent application module, a given resource ID might be defined in both
> modules. In this case, the tools select the resource from the application,
> or the library with highest priority, and discard the other resource. As you
> develop your applications, be aware that common resource IDs are likely to
> be defined in more than one project and will be merged, with the resource
> from the application or highest-priority library taking precedence.
>
> ### Use prefixes to avoid resource conflicts
>
> To avoid resource conflicts for common resource IDs, consider using a prefix
> or other consistent naming scheme that is unique to the module (or is unique
> across all project modules).

要約すると、同じリソースIDがあると競合(ライブラリのものが優先される)するので気をつけましょう。モジュールごとに一貫性のあるプレフィクスを付ける等して衝突しないようにしたりする事も検討しましょう、とのこと。

編集：認識違い・訳違いについてコメント頂いたので、原文段落を追加、要約に留めました。


CC BY-SA 3.0
2015-02-26T15:01:26.580
7157
2015-03-04T16:07:59.127
2015-03-04T16:07:59.127
7572
7572
7148
answer