SNCreate
Tech
Unity

Unity Cloud BuildのGradleをバージョンアップしてビルドする!

作成日:2024年01月13日
最終更新日:2024年11月24日

業務で開発しているゲームの広告SDKアップデートに伴い、Gradleをv6.7.1以降にアップグレードする必要がでてきました。 ローカル環境でビルドする分には大した作業ではないですが、Unity Cloud Buildでビルドする方法についてはまとまった情報がなかったため、備忘録もかねてこちらでまとめました。
手順としては
[ 1 ] pre-build scriptを作成する
[ 2 ] Pre-Export methodを作成する
[ 3 ] Unity Build Automationの Configurationを編集する
という流れになります。順に解説していきます。

1. pre-build script を作成する

Unity プロジェクトのルート直下に .ci というディレクトリを作成し、その中に pre-build-script.sh (ディレクトリ、ファイル名は自身が分かれば何でも良いです)を作成します。 ディレクトリ構造は下記のようになります。

Terminal window
project_root
.ci
pre-build-script.sh
Assets
Packages
...

pre-build-script.shにはUnityクラウド環境に指定バージョンのGradleをインストールするためのスクリプトを記述します。(私の場合は6.7.1を指定しています。)

pre-build-script.sh
#!/bin/bash
set -euxo pipefail
cd "$USERPROFILE"
curl -LO https://services.gradle.org/distributions/gradle-6.7.1-bin.zip
unameOut="$(uname -s)"
case "${unameOut}" in
Darwin*) unzip "gradle-6.7.1-bin";;
CYGWIN*) 7z x "gradle-6.7.1-bin.zip";;
esac
ls -lh gradle-6.7.1

2. Pre-Export method を作成する

UnityプロジェクトのEditorディレクトリ内にPreProcessBuild.csというクラスを作成します。手順1でインストールしたGradleのパスをビルド前に反映するメソッドを記述します。(Gradleバージョンは手順1で指定したものと同一にします)

PreProcessBuild.cs
using System;
using System.IO;
using UnityEditor;
using UnityEngine;
namespace Project.Editor
{
public class PreProcessBuild
{
public static void ChangeGradle()
{
EditorPrefs.SetBool("GradleUseEmbedded", false);
var workspacePath = Environment.GetEnvironmentVariable("USERPROFILE");
var gradlePath = Path.Combine(workspacePath, "gradle-6.7.1");
5 collapsed lines
EditorPrefs.SetString("GradlePath", gradlePath);
Debug.Log("PreProcessBuild - changed path: "+EditorPrefs.GetString("GradlePath"));
}
}
}

3. Unity Build Automation の Configurationを編集する

Unity Cloudの DevOps > Build Automation > Configurations から作成したTarget setupの編集ページを開き、Advanced settingsScript hooks項目を編集します。 Pre-build script項目には手順1で作成したスクリプトのパスを、Pre-Export method項目は手順2で作成したクラスの名前空間を含めたメソッド名を入力します。 default
設定を保存して完了です。
以上の設定を行い、Gradleがv6.7.1にアップグレードされた状態でクラウドビルドが出来ました。


参考リンク:

How Do I Change the Gradle Version in Unity Build Automation?
Unity Cloud Buildでビルド後に独自のスクリプトを差し込む、成果物(ipa/apkなど)をAppCenterにアップロードする