今回は、Androidでビルドのターゲット分けを行うようにするにはどうしたらいいのかを書いていきます。
ビルドのターゲット分けというのは開発環境と本番環境など向き先を変えるとうことです。
例えば、開発環境でapkを出力したり、本番環境で出力したりと変更できるようになります。
ちなみに、iOSで同様なことを行う場合には下記を参照してみてください
Androidでターゲットを分ける場合にはプロダクトフレーバー
を利用します。
プロダクトフレーバーに関しては、こちらに記載されています。
では、実際にどうやってプロダクトに追加するか見ていきましょう!
プロダクトフレーバーの設定
プロダクトで設定をする前だとAPKを出力する際には下記のようになっていると思います。
実際の設定は下記です。build.gradle(app)
で行います。
android { flavorDimensions "test" defaultConfig { applicationId "com.example.myapp" } productFlavors { development { dimension "test" applicationIdSuffix ".development" } production { dimension "test" } } }
公式ドキュメントには下記のように記載があります。
プロダクト フレーバーの作成方法はビルドタイプと同じで、ビルド構成の productFlavorsブロックにプロダクトフレーバーを追加して必要な設定を含めます。defaultConfig が実際には ProductFlavorクラスに属しているため、プロダクト フレーバーでは defaultConfig と同じプロパティがサポートされます。
なので、flavorDimensions
で設定した名前をproductFlavors
のdimension
で設定します。
productFlavors配下には開発用と本番用ということでdevelopment
とproduction
を作成しています。
developmentの方にはapplicationIdSuffix
という値が設定されていると思います。
applicationIdSuffixを追加することによってapplicationIdを変更させることができます。
今回の場合だと、開発環境のapplicationIdは「com.example.myapp.development」となります。
プロダクトの指定する内容によって変更してください。
ここまで指定して、ビルドもしくはsyncが成功するとAPKを出力する際には下記のようになると思います。
今回追加したdevelopmentとproductionそれぞれで元々あったDebug、Releaseが選択できるようになったと思います。
では、ビルドタイプによって設定値を変えたりする場合にはどうしたらいいでしょうか?
ビルドタイプによって定義を変える
ここでの定義を変えるというのは例えば、APIやWEB画面のURLを変えたりなど、設定値を環境によって変えるということです。
まず、Android Studioでファイル構成をプロジェクトに変えましょう。
そしたら、app配下にproductFlavors
で設定した名前でフォルダを作成します。今回の場合はdevelopmentとproductionでフォルダを作成します。
次に作成したフォルダそれぞれにjavaフォルダを作成して、javaフォルダ配下はapplicationIdの値でフォルダを作成します。
それぞれ、applicationIdの値でフォルダを作成したらその配下にConstantファイルなど定義を設定したファイルを作成します。
設定したファイルの値を呼び出せるようになると思うので、それで完成です。
結構シンプルにターゲット分けが行えるので試してみてください