くま's Tech系Blog

基本的には技術で学んだことを書き留めようと思います。雑談もやるかもね!

Androidでビルドのターゲット分けを行う

今回は、Androidでビルドのターゲット分けを行うようにするにはどうしたらいいのかを書いていきます。

ビルドのターゲット分けというのは開発環境と本番環境など向き先を変えるとうことです。

例えば、開発環境でapkを出力したり、本番環境で出力したりと変更できるようになります。

 ちなみに、iOSで同様なことを行う場合には下記を参照してみてください

kumaskun.hatenablog.com

Androidでターゲットを分ける場合にはプロダクトフレーバーを利用します。

プロダクトフレーバーに関しては、こちらに記載されています。

developer.android.com

では、実際にどうやってプロダクトに追加するか見ていきましょう!

プロダクトフレーバーの設定

プロダクトで設定をする前だとAPKを出力する際には下記のようになっていると思います。

f:id:kumaskun:20210711101839p:plain

実際の設定は下記です。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で設定した名前をproductFlavorsdimensionで設定します。

productFlavors配下には開発用と本番用ということでdevelopmentproductionを作成しています。

developmentの方にはapplicationIdSuffixという値が設定されていると思います。

applicationIdSuffixを追加することによってapplicationIdを変更させることができます。

今回の場合だと、開発環境のapplicationIdは「com.example.myapp.development」となります。

プロダクトの指定する内容によって変更してください。

ここまで指定して、ビルドもしくはsyncが成功するとAPKを出力する際には下記のようになると思います。

f:id:kumaskun:20210711103646p:plain

今回追加したdevelopmentとproductionそれぞれで元々あったDebug、Releaseが選択できるようになったと思います。

では、ビルドタイプによって設定値を変えたりする場合にはどうしたらいいでしょうか?

ビルドタイプによって定義を変える

ここでの定義を変えるというのは例えば、APIやWEB画面のURLを変えたりなど、設定値を環境によって変えるということです。

まず、Android Studioでファイル構成をプロジェクトに変えましょう。

そしたら、app配下にproductFlavorsで設定した名前でフォルダを作成します。今回の場合はdevelopmentとproductionでフォルダを作成します。

次に作成したフォルダそれぞれにjavaフォルダを作成して、javaフォルダ配下はapplicationIdの値でフォルダを作成します。

f:id:kumaskun:20210711105307p:plain

それぞれ、applicationIdの値でフォルダを作成したらその配下にConstantファイルなど定義を設定したファイルを作成します。

設定したファイルの値を呼び出せるようになると思うので、それで完成です。

結構シンプルにターゲット分けが行えるので試してみてください