
いざ 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」になっているかを確かめます。



