はじめに
通常デバッグ版とリリース版の署名が違うことから、同パッケージ名でそれぞれをインストールしようとすることにより、毎回新規インストールが必要となってしまい、データの再入力などがメチャクチャ面倒です。
また、単純にパッケージ名だけを変えただけではランチャーアプリ上でリリース版とデバッグ版の見分けがつけづらく、この辺りを情報を毎回調べ直してしまっていたので自分用メモを残しておきます。
※デバッグビルド用のアイコンは適宜用意してください。
変更方法
パッケージ名
例えばパッケージ名の末尾に.debug
と付けたい場合は、app/build.gradle
の
buildTypes
> debug
に applicationIdSuffix
という項目を追加します。
buildTypes {
debug {
debuggable true
applicationIdSuffix ".debug" //←追加
}
}
com.masaibar.sample
というパッケージ名だとしたら、デバッグビルドはcom.masaibar.sample.debug
というパッケージ名になります。
パッケージ名が変わると端末内で別アプリとして扱われるため、リリース版とデバッグ版が共存できるようになります。
バージョン名
buildTypes
> debug
にversionNameSuffix
という項目を追加すると、バージョン名の末尾に任意の文字列を追加できます。
buildTypes {
debug {
debuggable true
versionNameSuffix "debug" //←追加
}
}
端末内にバージョン名を表示している際など「これ何ビルドだっけ?」が一目瞭然で分かるので地味に助かります。
アプリ名
アプリ名は、AndroidManifest.xml
上でandroid:label
としてstrings.xml
を参照しているものとします。
<application
android:label="@string/app_name"
/>
main
に並列する形でdebug
というディレクトリを掘り、その中に同じ構造でstrings.xml
ファイルを作成し、main
側と同じname
に対してデバッグビルド時に表示したいアプリ名を設定します。
<string name="app_name">アプリ名</string>
<string name="app_name">アプリ名[Debug]</string>
あくまで個人的な意見なのですが端末内のランチャーで横並びになってくれるよう、アプリ名+デバッグと分かる識別子
にしておくのが無難です。
(奇をてらって全く別のアプリ名を設定したり、上で挙げた例とは逆のデバッグと分かる識別子+アプリ名
だと頭文字が別物になってしまい、ランチャー内で見失いがちだったりします。)
アイコン
アプリ名は、AndroidManifest.xml
上でandroid:icon
として@mipmap/ic_launcher
を参照しているものとします。
<application
android:icon="@mipmap/ic_launcher"
/>
こちらもアプリ名同様、debug
ディレクトリ配下に、同じパス(今回は@mipmap/ic_launcher
)で参照できるよう設置することにより、デバッグビルド時にはそちらの画像が参照されます。
おわりに
アイコンに関してはgradle-android-ribbonizer-pluginというプラグインを使うことにより、専用のアイコン画像を用意せずに対応する方法もあるようです。
共存した上で見分けも付きやすくなり、開発におけるストレスが少しでも軽減できれば幸いです
今回のコードはこちらで参照できます。
https://github.com/masaibar/DistinguishableAppSample