一つのプロジェクトから複数のアプリを作る場合のリソースは最小限にできる
Android Studioはリソースをマージしてくれる
Android Studioで、一つのプロジェクトから複数のアプリを作成する方法 - Android Studioでアプリ開発!の補足です。
複数アプリを作成する場合、リソースを個別にしたい部分と共通して使いたい部分があると思います。Android Studioではビルド時にリソースをマージしてくれるので、必要最小限のリソースを準備するだけで済みます。
Android Studioで、一つのプロジェクトから複数のアプリを作成する方法 - Android Studioでアプリ開発!で使ったプロジェクトを元に具体的に説明します。
結論から言うと、共通して使いたい部分は main だけに準備すればよく、個別に使いたい部分は free、charge にだけ準備すればよいということになります。
実行時のイメージ
赤線が共通して使いたい部分、緑線が個別に使いたい部分だとします。
main の layout ファイル
main の layout ファイルは以下のように記述しています。
共通して使いたいTextViewは id が textView1 です。common_text を表示するように指定しています。
個別に使いたい部分は textView2 になります。kind_text を表示するように指定しています。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MyActivity"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/common_text" android:id="@+id/textView1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/kind_text" android:id="@+id/textView2" /> </LinearLayout> </RelativeLayout>
main の strings.xml
main の strings.xml には以下のように記述しています。共通して使う common_text のみを記述しています。個別で使いたい kind_text は記述していません。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="common_text">ここは全アプリに共通して表示するテキストです。</string> <string name="action_settings">Settings</string> </resources>
free の strings.xml
free の strings.xml には以下のように記述しています。共通して使う common_text は記述していません。個別で使いたい kind_text を記述しています。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Switching free</string> <string name="kind_text">このアプリは無料版です。</string> </resources>
charge の strings.xml
charge の strings.xml には以下のように記述しています。共通して使う common_text は記述していません。個別で使いたい kind_text を記述しています。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Switching charge</string> <string name="kind_text">このアプリは有料版です。</string> </resources>
まとめ
以上のように記述することで、ビルド時に Android Studio がリソースをマージして実行してくれます。もちろん、free や charge に common_text を記述しても問題はありません。しかし、同じ内容を別々のファイルに記述するのは冗長ですし、バグの温床になりかねません。共通して使う部分は main に固めて、個別で使う部分は free と charge それぞれのリソースだけに記述するのが望ましいと思います。
また、今回は strings.xml だけを取り上げましたが、レイアウトファイルやアイコンファイルなどのリソースも同様です。後々のメンテナンスを考えて、リソースの配置はできるだけ最小限にしましょう。
Android StudioではじめるAndroidプログラミング入門
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2014/04
- メディア: 単行本
- この商品を含むブログ (1件) を見る
- 作者: 柴田文彦,川口仁
- 出版社/メーカー: インプレス
- 発売日: 2014/01/16
- メディア: Kindle版
- この商品を含むブログ (1件) を見る