LoginSignup
4
4

More than 3 years have passed since last update.

UnityのAndroidビルドをコマンドラインから行う (Mac用)

Last updated at Posted at 2019-06-22

Unity で Android の apk ファイルを
コマンドラインからビルドする手続きです。

ビルドはコマンドラインから行いますが、
詳細なビルド手続きは Unityプロジェクト内で記述しておく必要があります。

iOSビルドの手続きはこちらの記事に記載しています。

環境

Mac : 10.14.5 (Mojave)
Unity : 2018.3.0f2

unity側でのビルド手続き

UnityでBuilder.csというファイルを作成します。
(一応 Asset/Editor 直下に作成したけど、場所はどこでも良いのかな??)

ここで定義したクラス名と関数名は Builder.Build という形で
シェルスクリプトの UNITY_BUILDE_NAME で参照されます。

outputPath で指定したパスにapkファイルが出力されます。
今回の状態では、Unityのプロジェクトフォルダ直下に生成されます。

Builder.cs
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
using System.Linq;

public static class Builder
{
    public static void Build()
    {
        var paths = GetBuildScenePaths();
        var fileName = "app.apk";
        var outputPath = $"./{fileName}";
        var buildTarget = BuildTarget.Android;
        var buildOptions = BuildOptions.Development;

        var buildReport = BuildPipeline.BuildPlayer(
            paths.ToArray(),
            outputPath,
            buildTarget,
            buildOptions
        );

        var summary = buildReport.summary;

        if (summary.result == UnityEditor.Build.Reporting.BuildResult.Succeeded) {
            Debug.Log("Success");
        } else {
            Debug.LogError("Error");
        }
    }

    private static IEnumerable<string> GetBuildScenePaths()
    {
        var scenes = new List<EditorBuildSettingsScene>(EditorBuildSettings.scenes);
        return scenes
            .Where((arg) => arg.enabled)
            .Select((arg) => arg.path);
    }
}

シェルスクリプト

コマンドラインからのビルド手続きをシェルスクリプトで書きます。

ビルドログは UNITY_LOG_PATH で指定したパスに出力されるので、
うまくビルドができない場合は、logファイルで原因を確認しましょう。

unityBuild.sh
#!/bin/bash

UNITY_APP_PATH=/Applications/Unity/Unity.app/Contents/MacOS/Unity
UNITY_PROJECT_PATH=Unityプロジェクトのパスを入力
UNITY_BUILDE_NAME=Builder.Build
UNITY_LOG_PATH=./build.log

$UNITY_APP_PATH -batchmode \
    -quit \
    -projectPath $UNITY_PROJECT_PATH \
    -executeMethod $UNITY_BUILDE_NAME \
    -logfile $UNITY_LOG_PATH

if [ $? -eq 1 ]; then
    echo "error!! check logfile: ${UNITY_LOG_PATH}"
    exit 1
fi
echo "success!!"
exit 0

ターミナルから実行

以下コマンドをターミナルから実行します。
Unityが起動した状態で行うとうまくビルドができないので、
Unityは終了させた状態で実行します。

ターミナルから実行
sh unitybuild.sh

実行後正常に完了したら、apkファイルがoutputPathに生成されますので、
実機にインストールして動作を確認しましょう。

github

プロジェクトはgithubにアップロードしてます
https://github.com/becky3/unity_command_build/tree/commandline_android

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4