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

投稿日: 2024-01-13

Unity


業務で開発しているゲームの広告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 (ディレクトリ、ファイル名は自身が分かれば何でも良いです)を作成します。 ディレクトリ構造は下記のようになります。

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

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

#!/bin/bash
# pre-build-script.sh
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");
            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で作成したクラスの名前空間を含めたメソッド名を入力します。 システム設定
設定を保存して完了です。
以上の設定を行い、Gradleがv6.7.1にアップグレードされた状態でクラウドビルドが出来ました。



参考リンク:

How Do I Change the Gradle Version in Unity Build Automation?

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