コガネブログ

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

【Unity】「unsupported option '-G' for target 'arm64-apple-ios10.0'」

概要

unsupported option '-G' for target 'arm64-apple-ios10.0'

Firebase を使用している Unity プロジェクトを
Unity 2022.3.22f1 で iOS ビルドして、生成された Xcode プロジェクトを
Xcode 16.2 でビルドしたら上記のエラーが発生する現象に遭遇した。

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;

namespace Kogane.Internal
{
    /// <summary>
    /// Unity 2022.3.22f1 でビルドした Xcode プロジェクトを
    /// Xcode 16.2 でビルドできるようにするエディタ拡張
    /// 参考サイト様:https://x.com/ryohorie3/status/1839460954440081698
    /// </summary>
    internal static class FixXcode16OnPostProcessBuild
    {
        //================================================================================
        // 関数(static)
        //================================================================================
        /// <summary>
        /// ビルド完了時に呼び出されます
        /// </summary>
        [PostProcessBuild( 45 )] // この値を変えると動かなくなるので注意
        private static void OnPostProcessBuild
        (
            BuildTarget buildTarget,
            string      pathToBuiltProject
        )
        {
            if ( buildTarget != BuildTarget.iOS ) return;

            var contents = $@"post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == 'BoringSSL-GRPC'
      target.source_build_phase.files.each do |file|
        if file.settings && file.settings['COMPILER_FLAGS']
          flags = file.settings['COMPILER_FLAGS'].split
          flags.reject! {{ |flag| flag == '-GCC_WARN_INHIBIT_ALL_WARNINGS' }}
          file.settings['COMPILER_FLAGS'] = flags.join(' ')
        end
      end
    end
  end

  installer.generated_projects.each do |project|
    project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['DEVELOPMENT_TEAM'] = '{PlayerSettings.iOS.appleDeveloperTeamID}'
        config.build_settings['IPHONES_DEPLOYMENT_TARGET'] = '13.0'
      end
    end
  end
end";

            var path = Path.Combine( pathToBuiltProject, "Podfile" );
            File.AppendAllText( path, contents );
        }
    }
}

上記のスクリプトを Unity プロジェクトの Editor フォルダに入れて
Unity で iOS ビルドしたら Xcode 16.2 でビルドできるようになった.

参考サイト様