はじめに
先日UnityでビルドしたiOSのアプリをバージョンアップの為にAppStoreへ新しいバイナリをアップロードしたらエラーが出たので、その時の状況と対応方法を紹介しようと思います。
環境
- Unity 2020.2.1f1
- Xcode 12.3
エラー内容
AppStoreへバイナリをアップロードしようとしたところ、以下のエラーがでました。
ERROR ITMS-90206: "Invalid Bundle. The bundle at 'XXXXX.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'."
検索したところ、同じような人たちがUnity Forumにいました。
対応方法
UnityでiOSビルド
まずは普通にUnityでiOSのビルドをしXcodeプロジェクトを書き出してください。
Build Settingsを書き換える
Build Settingsの開き、「Always Embed Swift Standard Libraries」の項目を探します
その後、「Always Embed Swift Standard Libraries」を「NO」から「YES」に変更します。
Archiveする
Build Settingsを書き換えたら、通常通りアプリをArchiveします。
Archiveが終わるとArchivesが開きます。
ArchiveしたアプリをFinderで開く
Archiveしたアプリを右クリックし「Show in Finder」を選択します。
するとFinderでArchiveされたバイナリが選択された状態で開きます。
xcarchiveのパッケージの内容を表示
さきほど、Finderで開いた.xcarchiveを再び右クリックし「パッケージの内容を表示」を選択します。
すると、パッケージの中身が表示されます。
Applicationのパッケージの中身を表示
次に上記で開いたFinderでProducts/Applications/XXXXを選択します。このXXXXの部分はアプリによって違います。
そして、再び右クリックし「パッケージの中身を表示」を選択します。
するとApplicationの中身が表示されます。
Frameworksフォルダの削除
これで最後です。上記で開いた内容にFrameworksフォルダがあるのでそれを削除します。
これで作業完了です!
あとはArchivesに戻って、通常のAppStoreへのアップロードする手順と一緒です。
この作業をすることで私も無事にAppStoreへバイナリがアップロードできるようになりました。
さいごに
対応はするのは良いのですが早くなんとかしてほしいですね。。。
コメント
Unity初心者です。xcodeが何をするところなのかもよくわからないまま、たくさんのエラーに困って一つずつ時間をかけて調べて対処してきて、これが一番最後のエラーとなりました。助かりました。無事アップロードまでできました。ありがとうございました。
と、思ったのですが、アップロードの過程でリジェクトされていました。
”ITMS-90427: Invalid Swift Support – The expected dylibs are missing from the app’s Framework location, such as /Payload/●●●.app/Frameworks.”とメールが来てました。
どこか設定がわるかったのかもしれません。
結局、Always Embed Swift Standard Librariesの項目を、Unity-iPhone、Unity-iPhoneTest、UnityFrameworkの全てで、”No”にしたところ、全てアップロードまでスムーズに通りました。
お役に立てず残念です。
> 結局、Always Embed Swift Standard Librariesの項目を、Unity-iPhone、Unity-iPhoneTest、UnityFrameworkの全てで、”No”にしたところ、全てアップロードまでスムーズに通りました。
このあたりの設定は通常いじらなくてもAppStoreへリリースできるはずです。Unityのバージョンやプラグインの影響、Xcodeのバージョン等が原因だと思われます。一度そこを調べ直したほうが良いと思います。