アプリを新しく作ったのでアーカイブしてvalidateかけようとした所こんな表示が。
Invalid Bundle. The bundle at 'ProductName.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'.
このUnityフォーラムで
- Unity2019.3から構造が変わったぽい?
- Unity2019.2にすれば解決する
みたいな投稿を見かけたけど、2020.3使ってるし戻れないよねって事で下記の解決方法を忘れないようにメモ。
解決方法
ここのサイトにあるが、
Xcode上の Always embed swift standard libraries という項目をいい感じに設定してあげればいい
ようで、 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
のiOSポストプロセス処理を仕込むといいっぽい。
このUnityフォーラムにも同じ処理が載ってる。
ので、それを見つつ自分のポストプロセス処理に追加して解決した。
// 2019.3からって事らしいので... #if UNITY_2019_3_OR_NEWER string mainTarget = pbxProject.GetUnityMainTargetGuid( ); string frameworkTarget = pbxProject.GetUnityFrameworkTargetGuid( ); // Always embed swift standard libraries の対応 foreach ( string targetGuid in new string[ ] { mainTarget, frameworkTarget } ) { pbxProject.SetBuildProperty( targetGuid, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "NO" ); } pbxProject.SetBuildProperty( mainTarget, "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES", "YES" ); #endif
それでも解決されない時の手動での解決方法
このUnityフォーラムにある手順を手動で行って解決する。
- Organizerのアーカイブしたプロジェクトを右クリックし Show in Finder をクリック
- .xcarchive ファイルを右クリックし パッケージの内容を表示 をクリック
- Products > Applications に飛んで、[アプリ名].appを右クリックし パッケージの内容を表示 をクリック
- Frameworks > UnityFramework.framework に飛んで、Frameworksフォルダを消去
- Validateをかける
これで解決して、Validateが通るようになる。