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のプロジェクトフォルダ直下に生成されます。
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ファイルで原因を確認しましょう。
#!/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