メモ > 技術 > IDE: AndroidStudio > 製品用、開発用などの切り分け
製品用、開発用などの切り分け
パッケージ名が同じアプリは上書きインストールされる
つまり、GooglePlayからインストールした本番アプリがあると、その端末には開発版をインストールできない
が、フレーバーを使用することによりこの問題を解消できる
flavorDimensionsによるflavorの指定方法 - Qiita
https://qiita.com/boohbah/items/389b159a1693247b15de
Android StudioでFlavor・BuildTypeを分岐させてアプリビルドする詳細手順 | PisukeCode - Web開発まとめ
https://pisuke-code.com/android-studio-build-variants/
開発環境・検収環境・本番環境での処理の分岐も、この仕組みで対応できそう
■前提
productFlavors
production ... 製品用
develop ... 開発用
buildTypes
release ... 製品用
debug ... 開発用
と設定するものとする
■プロジェクトの作成
新規 Android Studio プロジェクトの開始
↓
新規プロジェクトの作成
アプリケーション名: Build Test1
会社ドメイン: refirio.net
プロジェクトの場所: C:\Users\refirio\AndroidStudioProjects\BuildTest1 (アプリケーション名をもとに自動入力される)
パッケージ名: net.refirio.buildtest1 (アプリケーション名と会社ドメインをもとに自動入力される)
Kitlinサポートを含める: チェックする
「次へ」
↓
ターゲットAndroidデバイス
「API 19: Android 4.4 (KitKat)」にして「次へ」
↓
Mobile にアクティビティを追加する
「空のアクティビティ」が選択されているので、そのまま「次へ」
↓
アクティビティの設定
特に変更せず「完了」
エミュレータと実機で、アプリを起動できるかテストする
■Flavorの設定
app の build.gradle の
buildTypes {
の上(下ではない)に以下のコードを追加
flavorDimensions "mode"
productFlavors {
production {
}
develop {
applicationIdSuffix ".dev"
}
}
さらに
buildTypes {
の中に以下のコードを追加
(デバッグ版書き出し時に「.debug」を付けたくないなら、省略しても良さそう。要検証)
debug {
applicationIdSuffix ".debug"
}
さらに manifestPlaceholders を追加
(デバッグ版とリリース版で別のアプリ名を表示する準備)
android {
compileSdkVersion XX
defaultConfig {
〜 略 〜
manifestPlaceholders = [appName:"@string/app_name"]
}
〜 略 〜
productFlavors {
〜 略 〜
develop {
〜 略 〜
manifestPlaceholders = [appName:"@string/app_name_dev"]
}
}
}
app\src\main\AndroidManifest.xml のアプリ名を調整
(デバッグ版とリリース版で別のアプリ名を表示する準備)
android:label="@string/app_name"
↓
android:label="${appName}"
app\src\main\res\values\strings.xml で開発版のアプリ名を追加
(デバッグ版とリリース版で別のアプリ名を定義)
<string name="app_name">Build Test1</string>
<string name="app_name_dev">Build Test1 Dev</string> … 追加
■ビルドの切り替え
画面左端の「ビルド・バリアント」をクリックすると、その中の「ビルド・バリアント」部分でビルドを切り替えられる
「developDebug」と「productionDebug」を切り替えると、名前の違うアプリをそれぞれインストールできる
「developRelease」と「productionRelease」は何故かエラーになって実行できない
プロジェクト作成直後も「debug」と「release」から選択できるが、この「release」も実行できない
リリース版は署名の登録が必要…などがあるみたい
要勉強
Android Studio : debugビルドとReleaseビルドの切替、releaseビルドの追加方法、署名付きapk作成方法 - 生活を良くします-怠惰なプログラミング
https://www.what-a-day.net/entry/2016/12/11/001948
■ビルド設定によるプログラムの分岐
設定が完了した上で実行すると、以下にプログラムが自動作成される
app\build\generated\source\buildConfig\production\debug\net\refirio\buildtest1\BuildConfig.java
この内容を利用して、以下のように分岐する
if (BuildConfig.DEBUG) {
Log.d("TEST", "DEBUG")
} else {
Log.d("TEST", "RELEASE")
}
if ("develop".equals(BuildConfig.FLAVOR)) {
Log.d("TEST", "develop")
} else {
Log.d("TEST", "production")
}
■その他参考になりそうなページ
アプリケーション ID の設定 | Android Developers
https://developer.android.com/studio/build/application-id?hl=ja
https://developer.android.com/studio/build/application-id?hl=ja#%E3%83%93%E3%83%AB%E3%83%89_%E3%83%9...