かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Visual Studio Team ServicesでXamarin.FormsのDroidプロジェクトのビルドとapkの作成をしてみよう

プロジェクトの作成

まず、Xamarin.FormsのプロジェクトをVisual Studioで作成します。 作成したらWindows, WinPhone, UWPのプロジェクトを削除します。UWPあるとビルド通らなかったので…。

プロジェクト名は、ここではxfvstsにしました。

VSTS上のプロジェクトの作成

ソースをVSTS上にプッシュしておきます。ソリューションをソースコントロールに追加してチームエクスプローラーからさくっとできます。

f:id:okazuki:20160904205957p:plain

ビルドの定義の作成

VSTSのポータルにアクセスしてBuild & ReleaseからBuildにいって+ New definitionを選択しましょう。

f:id:okazuki:20160904210313p:plain

Visual Studioを選択してNext >を選択します。気になるのはXamarin.Android/Xamarin.iOSですが今回は無視しました。

f:id:okazuki:20160904210516p:plain

次の画面は、そのままCreateします。

f:id:okazuki:20160904210711p:plain

これで基本的なビルドが通るようになります。Saveを押してandroid buildという名前で保存しておきましょう。

ビルドの確認

保存したらBuildsAll Definitionsに行って...を選んでQueue new build...を選択します。

f:id:okazuki:20160904211130p:plain

出てきた画面でOKを押すとビルドが走ります。

ビルドが終わったら、そのビルドのArtifactsを見ると、dllとかが生成されてることがわかります。

apkの生成

APKを生成しましょう。Visual Studioでリリースビルドをして、xsvsts.Droidプロジェクトをスタートアッププロジェクトにします。その状態でメニューのツール -> Android -> Publish Android App...を選びます。 選べない人は、何回かビルドや、スタートアッププロジェクトの切り替え(いったんiosにするとか)してみてください。

f:id:okazuki:20160904211934p:plain

とりあえず初回なのでCreate New KeyStoreを選んでDroidプロジェクト直下にsample.keystoreファイルを作るようにします。パスワードは適当に。

次のページも適当に埋めます。

f:id:okazuki:20160904212323p:plain

次のページでCreateを押せば出来上がりです。

リポジトリにPushしておきましょう。

自動化したい

ビルドの定義を編集します。先ほど作成したビルドの定義を開いてEditします。 Add build step...があるので、押してVisual Studio Buildを追加して、既存のBuild Solution **\*.slnの下に移動させます。

f:id:okazuki:20160904212759p:plain

そしたら、Solution...を押してxsvsts.Droid.csprojを選びます。MSBuild Argumentsに以下の値を設定します。

/t:SignAndroidPackage /p:OutputPath=bin/Release;AndroidKeyStore=True;AndroidSigningKeyStore=キーストアファイル名.keystore;AndroidSigningStorePass=パスワード;AndroidSigningKeyAlias=指定したエイリアス;AndroidSigningKeyPass=パスワード

保存して、ビルドを実行してみます。apkが作られてることが確認できます。

f:id:okazuki:20160904220600p:plain

あとは、これをmasterブランチにプッシュのたびにやるようにしたりすれば、毎回apkが作られますね。