Xcode13.3 ではなかったのに、14 から急に…という記事を結構見かけましたので対処法を残しておきます。
エラーとしてはこんな感じのメッセージです。
'/Users/XXXXXX/Library/Developer/Xcode/DerivedData/Unity-iPhone-XXXXXX/Build/Products/ReleaseForRunning-iphoneos/AppAuth/AppAuth.framework/AppAuth(OIDAuthorizationService.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. file '/Users/XXXXXX/Library/Developer/Xcode/DerivedData/Unity-iPhone-XXXXXX/Build/Products/ReleaseForRunning-iphoneos/AppAuth/AppAuth.framework/AppAuth' for architecture arm64
ターゲット環境設定を行う
エラーログに書かれている通り、ENABLE_BITCODE の設定で対処します。
プロジェクトを選択し、TARGETS の全てについて Build Settings の Enable Bitcode を No にします。
画面の例だと Unity-iPhone, UnityFramework が Yes だったので No にします。
また、Pods の方も行う必要があります。
PROJECT を変更しても動作しません。必ず TARGETS を変更するようにしてください。
ビルドする度に設定するのが面倒な場合
この設定は unity でビルドする度に戻ってしまうので、都度設定しなおす必要があります。
面倒すぎるので、ポストビルドで自動的に設定されるようにしましょう。
using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; using System.IO; public class OnPostBuildProcess : MonoBehaviour { [PostProcessBuild] public static void OnPostProcessBuild(BuildTarget buildTarget, string path) { if (buildTarget == BuildTarget.iOS) { processForiOS(path); } } static void processForiOS(string path) { string pbxPath = PBXProject.GetPBXProjectPath(path); PBXProject pbx = new PBXProject(); pbx.ReadFromString(File.ReadAllText(pbxPath)); string target = pbx.GetUnityMainTargetGuid(); pbx.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); target = pbx.GetUnityFrameworkTargetGuid(); pbx.SetBuildProperty(target, "ENABLE_BITCODE", "NO"); File.WriteAllText (pbxPath, pbx.WriteToString()); } }
unity2019 以降ならこれで動作するはず。
GetUnityMainTargetGuid() が存在しないような古い unity の場合、pbx.TargetGuidByName("Unity-iPhone"); とかに置き換えればいけるかも。