Androidアプリ開発時に、開発環境・ステージング環境・本番環境 などの環境毎にFlavorを設定することがあるかと思います。
環境が違うアプリをひと目で見分けられるように、アプリ名とアプリアイコンを変更する方法をまとめておきます。
Flavorを設定する
アプリの build.gradle にFlavorの設定を行います。
今回は例として、 dev(開発)・stg(ステージング)・prod(本番) の3つの環境を用意するものとします。
android {
// 省略
// ここから追加
flavorDimensions "environment"
productFlavors {
dev {
dimension "environment"
applicationIdSuffix ".dev"
versionNameSuffix ".dev"
}
stg {
dimension "environment"
applicationIdSuffix ".stg"
versionNameSuffix ".stg"
}
prod {
dimension "environment"
}
}
// ここまで追加
}
Flavor毎にアプリ名を変更する
Flavor毎に strings.xml ファイルを作成します。
下記のように、「res/valuesを右クリック -> New -> Values Resource File」を選択します。

次に、 File name を strings にして、 Source set に dev を選択します。
この dev は先程Flavorで設定したものです。

これによって、 dev 環境用の strings.xml が作成されます。

この strings.xml の app_name に環境毎のアプリ名を設定することにより、アプリ名の変更が可能です。

同様に stg 用の strings.xml も作成し、アプリ名を設定します。
(Build Variants を stgDebug にしないと strings.xml(stg) は表示されません)
prod 環境はデフォルトの string.xml を使用したいため、別途 strings.xml は作成しません。
Flavor毎にアプリアイコンを変更する
今回は、easylauncher-gradle-plugin というライブラリを使用しました。
まずは、プロジェクトの build.gradle に設定を追加します。
buildscript {
// 省略
dependencies {
// 省略
classpath 'com.akaita.android:easylauncher:1.3.1' // <- ここを追加
}
}
次に、アプリの build.gradle に設定を追加します。
plugins {
// 省略
id 'com.akaita.android.easylauncher' // <- ここを追加
}
android {
// 省略
// 先程追加したFlavor設定
flavorDimensions "environment"
productFlavors {
dev {
dimension "environment"
applicationIdSuffix ".dev"
versionNameSuffix ".dev"
}
stg {
dimension "environment"
applicationIdSuffix ".stg"
versionNameSuffix ".stg"
}
prod {
dimension "environment"
}
}
}
// ここから追加
easylauncher {
iconNames "@mipmap/ic_launcher_foreground"
foregroundIconNames "@mipmap/ic_launcher_foreground"
defaultFlavorNaming = true
buildTypes {
debug {}
release {}
}
productFlavors {
dev {
filters = grayRibbonFilter()
}
stg {
filters = greenRibbonFilter()
}
prod {
enable false // 本番ではラベルをつけない
}
}
}
// ここまで追加
// 省略
ここまで設定すると、アプリ毎にアイコンが変更されます。
今回、適当なアイコンも設定しています。

とてもわかりやすくなりましたね!
ライブラリのその他の設定はドキュメントを参照してください。
