🛠️
XcodeのDistribute App時にERROR ITMS-90206: "Invalid Bundle.~~"のエラー
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);
}
}
}
参考にしたスレッド
このスレッドによるとUnity2020.3に上げると直ってるかもとのことですが、未検証です。
とりあえずの解決策(旧)
(MyAppName).app/Frameworks/UnityFramework.framework/Frameworks 内のファイルを
(MyAppName).app/Frameworks に移動してあげればよかった気がする。
これが
↓
こうなってればOK
元のscrap
Discussion