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

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

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

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

Release のみをビルドする

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

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

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

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

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

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

おまけ

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

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

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

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

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077