いざ Swift(xcode) のコード入り Unity プロジェクトを AppStore にアップしようとすると、見慣れないこんなエラーに阻まれてしまいます。
この回避策を紹介します。
Unity2021.3 の情報なので、他のバージョンだと多少異なるかもしれません。
「UnityFramework」ビルド設定に必要な項目がある
UnityFramework の Build Settings に Always Embed Swift Standard Libraries という項目があるので、これを「No」にしてください。
その後アーカイブすれば、無事エラーを回避して AppStore にアップロードできます。
なお、Unity-iPhone Tests にも同様の項目がありますが、こちらは無視して大丈夫です。
毎回「No」にするのが面倒
Unity でビルドする度に Yes に戻ってしまうのが面倒であれば、ポストプロセスで処理しましょう。
こんなコードを Assets/Editor に含めます。
using UnityEngine; using UnityEditor; using UnityEditor.Callbacks; #if UNITY_IOS using UnityEditor.iOS.Xcode; #endif 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) { #if UNITY_IOS string pbxPath = PBXProject.GetPBXProjectPath(path); PBXProject pbx = new PBXProject(); pbx.ReadFromString(File.ReadAllText(pbxPath)); string target = pbx.GetUnityFrameworkTargetGuid(); pbx.SetBuildProperty(target, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO"); File.WriteAllText (pbxPath, pbx.WriteToString ()); #endif } }
ビルドした後、自動的に「No」になっているかを確かめます。