コガネブログ

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

【Unity】Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team.

概要

Signing for "gRPC-C++-gRPCCertificates-Cpp" requires a development team.
Select a development team in the Signing & Capabilities editor.
(in target 'gRPC-C++-gRPCCertificates-Cpp' from project 'Pods')

Firebase を使用している Unity プロジェクトで
Xcode ビルド時に上記のエラーが発生する現象に遭遇した

以下のスクリプトを「Editor」フォルダに追加することでエラーが発生しなくなった

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

namespace Kogane.Internal
{
    /// <summary>
    /// iOS ビルド時に Pods.xcodeproj の「Team」を自動で設定するエディタ拡張
    /// 参考サイト様:https://www.stmn.tech/entry/2023/04/12/165128
    /// </summary>
    internal static class SetPodsXcodeprojTeamOnPostProcessBuild
    {
        //================================================================================
        // 関数(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|
    target.build_configurations.each do |config|
      if config.build_settings['WRAPPER_EXTENSION'] == 'bundle'
        config.build_settings['DEVELOPMENT_TEAM'] = '{PlayerSettings.iOS.appleDeveloperTeamID}'
      end
    end
  end
end
";

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

参考サイト様