Edited at

Androidのデバッグ版とリリース版でパッケージ名、バージョン名、アプリ名、アイコンを変更する


はじめに

通常デバッグ版とリリース版の署名が違うことから、同パッケージ名でそれぞれをインストールしようとすることにより、毎回新規インストールが必要となってしまい、データの再入力などがメチャクチャ面倒です。

また、単純にパッケージ名だけを変えただけではランチャーアプリ上でリリース版とデバッグ版の見分けがつけづらく、この辺りを情報を毎回調べ直してしまっていたので自分用メモを残しておきます。

※デバッグビルド用のアイコンは適宜用意してください。


変更方法


パッケージ名

例えばパッケージ名の末尾に.debugと付けたい場合は、app/build.gradle

buildTypes > debugapplicationIdSuffixという項目を追加します。


app/build.gradle

    buildTypes {

debug {
debuggable true
applicationIdSuffix ".debug" //←追加
}
}

com.masaibar.sampleというパッケージ名だとしたら、デバッグビルドはcom.masaibar.sample.debugというパッケージ名になります。

パッケージ名が変わると端末内で別アプリとして扱われるため、リリース版とデバッグ版が共存できるようになります。


バージョン名

buildTypes > debugversionNameSuffixという項目を追加すると、バージョン名の末尾に任意の文字列を追加できます。


app/build.gradle

    buildTypes {

debug {
debuggable true
versionNameSuffix "debug" //←追加
}
}

端末内にバージョン名を表示している際など「これ何ビルドだっけ?」が一目瞭然で分かるので地味に助かります。


アプリ名

アプリ名は、AndroidManifest.xml上でandroid:labelとしてstrings.xmlを参照しているものとします。


app/AndroidManifest.xml

<application

android:label="@string/app_name"
/>

mainに並列する形でdebugというディレクトリを掘り、その中に同じ構造でstrings.xmlファイルを作成し、main側と同じnameに対してデバッグビルド時に表示したいアプリ名を設定します。


app/src/main/res/values/strings.xml

<string name="app_name">アプリ名</string>



app/src/debug/res/values/strings.xml

<string name="app_name">アプリ名[Debug]</string>


あくまで個人的な意見なのですが端末内のランチャーで横並びになってくれるよう、アプリ名+デバッグと分かる識別子にしておくのが無難です。

(奇をてらって全く別のアプリ名を設定したり、上で挙げた例とは逆のデバッグと分かる識別子+アプリ名だと頭文字が別物になってしまい、ランチャー内で見失いがちだったりします。)


アイコン

アプリ名は、AndroidManifest.xml上でandroid:iconとして@mipmap/ic_launcherを参照しているものとします。


app/AndroidManifest.xml

<application

android:icon="@mipmap/ic_launcher"
/>

こちらもアプリ名同様、debugディレクトリ配下に、同じパス(今回は@mipmap/ic_launcher)で参照できるよう設置することにより、デバッグビルド時にはそちらの画像が参照されます。

image.png


おわりに

アイコンに関してはgradle-android-ribbonizer-pluginというプラグインを使うことにより、専用のアイコン画像を用意せずに対応する方法もあるようです。

共存した上で見分けも付きやすくなり、開発におけるストレスが少しでも軽減できれば幸いです :pray:

今回のコードはこちらで参照できます。

https://github.com/masaibar/DistinguishableAppSample