Experiments Never Fail

Azure Pipelines の Android アプリビルドでビルドタイプを指定する

Azure Pipelines で Android アプリ(Not Xamarin)をビルドする時、

普通にテンプレから作った gradle タスクは、 gradlew build を実行しますが、これはアプリのプロジェクトに含まれる全てのビルドタイプをビルドするため、多くの場合ムダです。[^1]

[^1]: Debug ビルドで単体テストを行い、同時に配布用 Release ビルドを生成したい、というケースでもあるのでしょうか?わからん。

例えば私のプロジェクトの場合、ビルドタイプは標準の「Debug」,「Release」に加え実験用の「Experiment」を用意していたので、タスクの実行に 12分 もかかっていました。

image.png

完了後、Debug, Release, Experiment それぞれの .apk が生成されていました。

image.png

Release のみをビルドする #

特定のビルドタイプのみ(ここでは Release とします)をビルドする場合、gradlew build の代わりに gradlew assembleRelease を実行すればよいのですが、既定で追加されている gradle タスクではなぜか変更できません。

image.png

仕方がないので、既存の gradle タスクは削除して、「+」 で gradle タスクを検索して追加します。

image.png

こちらの Tasks は変更できるので assembleRelease を設定します。

image.png

これで保存してパイプラインを実行すると、ビルドタスクの時間が 12分 から 8分 に短縮されました。

image.png

Artifacts にも Release 版の apk しか生成されていないのが確認できます。

image.png

@penguin_sharp さん、ありがとうございました。

おまけ #

上記はビルドAgent 「Hosted VS2017」 で作業してたんですが、これを 「Hosted macOS」 に替えたところ、 8分かかっていたビルド時間が 「2分50秒」 に短縮されました。

image.png

VS2017 が遅いのか Hosted macOS が早いのか分かりませんが、とりあえず Android アプリのビルドは Hosted macOS を使うとよさそうです。[^2]

[^2]: Xamarin.Android も Hosted macOS でビルドしたいなー、確か Xamarin.iOS しかビルドできないんだよなー

published at tags: Azure AzureDevOps Android