14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ProductFlavor使用時のAndroidManifestのバリエーションの作り方まとめ

Last updated at Posted at 2015-07-30

ProductFlavorでアプリ名や画像などリソースファイルを切り替えるようなアプリを作った際、いくつか切り替え方法があったのでまとめた。今回自分が調べただけで、大きく3種類あった。
用途に応じてそれぞれ使い分けられそうなのでまとめた。

  • build.gradleのflavor定義のところに書く。
  • stringsなどのリソースファイルに書く
  • flavorフォルダにManifestを作って上書き

ここでいうflavorフォルダは、main/と同列に並んで作る、flavor名のついたフォルダのこと。res/とかAndroidManifest.xmlとか作れば、そのflavorを選択した時に読みに行ってくれる。

以下、それぞれ詳細。

build.gradleに書くパターン

applicationIdやversionCodeなど、一部の要素はここで記述可能。対応してればAndroidStudioが補完してくれる。

build.gradle
flavor_1 {
	applicationId = 'app.id.1'
	versionCode = '2'
	versionName = '1.1'
}
flavor_2 {
	applicationId = 'app.id.2'
	versionCode = '12'
	versionName = '2.3'
}

strings.xmlなどのリソースファイルに書くパターン

全てのflavorで必要だが、それぞれで値が異なるような場合は、この方法を使うと良さそう。例えば外部ライブラリのアプリIDやAPI keyといったものが該当しそう。

要素の記述自体はmain/AndroidManifest.xmlにしておく

main/AndroidManifest.xml
<meta-data android:name="some_name" android:value="@string/some_value">

次に、{flavor}/res/にxmlファイルを作り、@string/some_value を定義する。

<string name="some_value">hogefuga</string>

flavorフォルダに作るManifestをパターン

特定のflavorにしかない要素を作りたいときにはこの方法。

{flavor}/AndroidManifest.xmlを定義すると、ビルド時にmain/AndroidManifest.xmlとマージされたファイルができるようだ。
(/build/intermediates/manifests/full/{flavor}/{buildType}/AndroidManifest.xmlにできるので確認できる。)

例えば今回はappliction内で宣言されるmeta dataを宣言したときにはこんな感じ。

{flavor}/AndroidManifest.xml
<!-- package名は親と合わせておく -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="{main/AndroidManifext.xmlで定義したpackage}">
    <!-- 宣言したいmeta dataがapplicationタグ内のものであることを教える -->
    <!-- applicationの属性とかは指定しなくていい -->
    <application>
        <meta-data android:name="some_flavor_name" android:value="some_flavor_value"/>
    </application>
</manifest>

まとめ

  • 対応してれば簡単なのでbuild.graldeに書き、flavor毎に値が変わるのは{flavor}/res/に、flavorによって定義したりしなかったりするやつはマニフェストに書く。
  • 試してないけど、多分build typeにも応用できる。
14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?