コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】高速な xcodebuild

概要

# 通常の xcodebuild
xcodebuild \
    -project $PROJECT_PATH \
    -scheme $SCHEME \
    archive -archivePath $ARCHIVE_PATH \
    PROVISIONING_PROFILE=$PROVISIONING_PROFILE
# 高速な xcodebuild
xcodebuild \
    -project $PROJECT_PATH \
    -scheme $SCHEME \
    archive -archivePath $ARCHIVE_PATH \
    PROVISIONING_PROFILE=$PROVISIONING_PROFILE \
    DEBUG_INFORMATION_FORMAT=dwarf \
    DEBUGGING_SYMBOLS=NO \
    GCC_GENERATE_DEBUGGING_SYMBOLS=NO \
    ONLY_ACTIVE_ARCH=YES \
    VALID_ARCHS=arm64

上記2種類の xcodebuild を適当な Unity プロジェクトから出力した
Xcode プロジェクトに対して実行してみた

検証結果

項目 ビルド時間
通常版 3分18秒
高速版 1分30秒

補足

高速版の xcodebuild を使用する時は Unity プロジェクトで
Architecture を Universal ではなく ARM64 に変更しておく

メモ

using UnityEditor;
using UnityEditor.iOS.Xcode;

public static class Example
{
    [MenuItem("Tools/Hoge")]
    private static void Hoge()
    {
        var path = "iOS";
        var projectPath = PBXProject.GetPBXProjectPath(path);
        var project = new PBXProject();

        project.ReadFromFile(projectPath);

        var targetGuid = project.GetUnityMainTargetGuid();
        project.SetBuildProperty(targetGuid, "DEBUG_INFORMATION_FORMAT", "dwarf");
        project.SetBuildProperty(targetGuid, "DEBUGGING_SYMBOLS", "NO");
        project.SetBuildProperty(targetGuid, "ENABLE_BITCODE", "NO");
        project.SetBuildProperty(targetGuid, "GCC_GENERATE_DEBUGGING_SYMBOLS", "NO");
        project.SetBuildProperty(targetGuid, "ONLY_ACTIVE_ARCH", "YES");
        project.SetBuildProperty(targetGuid, "VALID_ARCHS", "arm64");

        project.WriteToFile(projectPath);
    }
}

エディタ拡張で設定する場合は多分こんな感じ

関連記事