なえ箱

メモを植えます

Invalid Bundle. The bundle at 'ProductName.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'. の解決方法【Unity】【XCode】

この記事をシェアする

アプリを新しく作ったのでアーカイブしてvalidateかけようとした所こんな表示が。

Invalid Bundle. The bundle at 'ProductName.app/Frameworks/UnityFramework.framework' contains disallowed file 'Frameworks'.

無効なバンドルってどういうこと?

forum.unity.com

このUnityフォーラムで

  • Unity2019.3から構造が変わったぽい?
  • Unity2019.2にすれば解決する

みたいな投稿を見かけたけど、2020.3使ってるし戻れないよねって事で下記の解決方法を忘れないようにメモ。

解決方法

ここのサイトにあるが、

Xcode上の Always embed swift standard libraries という項目をいい感じに設定してあげればいい

ようで、 ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESiOSポストプロセス処理を仕込むといいっぽい。

zenn.dev

このUnityフォーラムにも同じ処理が載ってる。

forum.unity.com

ので、それを見つつ自分のポストプロセス処理に追加して解決した。

// 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

それでも解決されない時の手動での解決方法

forum.unity.com

このUnityフォーラムにある手順を手動で行って解決する。

  1. Organizerのアーカイブしたプロジェクトを右クリックし Show in Finder をクリック
  2. .xcarchive ファイルを右クリックし パッケージの内容を表示 をクリック
  3. Products > Applications に飛んで、[アプリ名].appを右クリックし パッケージの内容を表示 をクリック
  4. Frameworks > UnityFramework.framework に飛んで、Frameworksフォルダを消去
  5. Validateをかける

これで解決して、Validateが通るようになる。

Validateが通った