Unity3dBuilder Pluginを使ってJenkinsでUnityのビルドを自動化。Androidのapkを作ってみた

  • 29
    いいね
  • 0
    コメント

はじめに

UnityもJenkinsも初心者な筆者が、浅はかな知識でAndroidのapk出力までを自動化してみたチラ裏メモ。

前提

  • Unityは書籍とか公式ドキュメントをザッと読んでちょっとわかった気になったレベル
  • JenkinsもUnity同様ちょっとわかった気になったレベル
  • Unityの適当なサンプルプロジェクト用意して動かせる状態
  • Jenkins環境はMacのローカルで構築済みでジョブが動かせる状態
  • とりあえずUnityでアプリのビルドを自動化する流れを掴みたい
  • こまけぇこたぁいいんだよ!!

Unity3dBuilder Pluginを使う

Unityの知見が全然無いため「バッチモードで起動」とか言われてもちょっとよくわからなかったので、そのあたりを良い感じにやってくれるプラグイン『Unity3dBuilder Plugin』を使って楽することにした。

Jenkinsにプラグインをインストール

[Jenkinsの管理] - [プラグインの管理] - [利用可能] から「Unity3dBuilder Plugin」をインストールしてJenkinsを再起動

プラグインの設定

[Jenkinsの管理] - [システムの設定] - [Unity3d] の項目にて「名前」とUnityの「インストールディレクトリ」を設定

例)
名前:Unity5
インストールディレクトリ:/Applications/Unity/Unity.app

ビルド用のスクリプトを用意

  1. UnityプロジェクトのAssetsフォルダ配下に「Editor」フォルダを作成
  2. ビルド用のスクリプトを配置
Editor/MyBuilder.cs

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;

public class MyBuilder {
    // ビルド実行でAndroidのapkを作成する例
    [UnityEditor.MenuItem("Tools/Build Project AllScene Android")]
    public static void BuildProjectAllSceneAndroid() {
        EditorUserBuildSettings.SwitchActiveBuildTarget( BuildTarget.Android );
        List<string> allScene = new List<string>();
        foreach( EditorBuildSettingsScene scene in EditorBuildSettings.scenes ){
            if (scene.enabled) {
                allScene.Add (scene.path);
            }
        }   
        PlayerSettings.bundleIdentifier = "com.yourcompany.newgame";
        PlayerSettings.statusBarHidden = true;
        BuildPipeline.BuildPlayer( 
            allScene.ToArray(),
            "newgame.apk",
            BuildTarget.Android,
            BuildOptions.None
        );
    }
}

ジョブの設定

Invoke Unity3d Editor

  1. ジョブの設定 [ビルド] - [ビルド手順の追加] で [Invole Unity3d Editor] を選択
  2. 「Unity3d installation name」にシステム設定で指定したUnityの名前を選択
  3. 「Editor command line arguments」にUnityをバッチモードで起動するコマンドを指定
-quit -batchmode -executeMethod MyBuilder.BuildProjectAllSceneAndroid

ビルド後の処理

  1. ジョブの設定 [ビルド] - [ビルド後の処理追加] で「成果物を保存」を追加
  2. 「保存するファイル」を指定(例:newgame.apk)

ビルドの実行

  1. Jenkinsでビルド実行
  2. ビルドが成功すればJenkinsのジョブ画面に「最新成功ビルドの成果物」としてapkのダウンロードリンクが張られている
  3. apkを実機にインストールするなどして動作確認する

おわり。

追記:iOSのXcodeプロジェクトを自動作成する

iOS向けにXcode用プロジェクトを自動化するスクリプトも書いたので、本件と合わせてGitHubに上げておきました。
UnintyアプリのビルドをJenkinsで自動化するためのスクリプト

関連記事も書いたのでご参考までに。
UnityのiOSビルドで出力されるXcodeプロジェクトの設定自動化。ファイル毎のARC無効設定を追加する - Qiita
UnityのiOSビルドで出力されるXcodeプロジェクトのEnable Bitcodeを自動でNoにする - Qiita

参考

UnityのビルドをJenkins氏に任せて楽したい。 - ともち屋
Jenkinsを使ったUnityのバッチビルド | TRIDENT Mobile & Network Lab. Blog