🛠️

XcodeのDistribute App時にERROR ITMS-90206: "Invalid Bundle.~~"のエラー

2 min read

Unity製iOSアプリのストアアップロード時にエラー

環境

Unity 2020.2.7f1
Xcode 12.2

エラー全文

ERROR ITMS-90206: "Invalid Bundle. The bundle at '(MyAppName).app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'."

いい感じの解決策(2021-04-25追記)

Xcode上の

Always embed swift standard libraries

という項目を
いい感じに設定してあげればいいのだが、↓のスクリプトをプロジェクト内のEditorフォルダ内に置いておけばいい感じにやってくれます。

using System.IO;
using UnityEditor;
using UnityEditor.Callbacks;
using UnityEditor.iOS.Xcode;
 
namespace Editor
{
    public static class XcodeSwiftVersionPostProcess
    {
        [PostProcessBuild(999)]
        public static void OnPostProcessBuild(BuildTarget buildTarget, string path)
        {
            if (buildTarget == BuildTarget.iOS)
            {
                ModifyFrameworks(path);
            }
        }
 
        private static void ModifyFrameworks(string path)
        {
            string projPath = PBXProject.GetPBXProjectPath(path);
           
            var project = new PBXProject();
            project.ReadFromFile(projPath);
 
            string mainTargetGuid = project.GetUnityMainTargetGuid();
           
            foreach (var targetGuid in new[] { mainTargetGuid, project.GetUnityFrameworkTargetGuid() })
            {
                project.SetBuildProperty(targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO");
            }
           
            project.SetBuildProperty(mainTargetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES");
 
            project.WriteToFile(projPath);
        }
    }
}
 

参考にしたスレッド

https://forum.unity.com/threads/an-empty-folder-named-frameworks-in-unityframework-framework.751559/#post-6959384

このスレッドによるとUnity2020.3に上げると直ってるかもとのことですが、未検証です。

とりあえずの解決策(旧)

(MyAppName).app/Frameworks/UnityFramework.framework/Frameworks 内のファイルを
(MyAppName).app/Frameworks に移動してあげればよかった気がする。

これが



こうなってればOK

元のscrap

https://zenn.dev/sukedon/scraps/0a31751630233e