web-dev-qa-db-ja.com

検証エラー:無効なバンドル。 ...のバンドルには、許可されていないファイル「Frameworks」が含まれています

Xcode6 GMでアプリを送信しようとしていますが、検証時にこのエラーが発生します。アプリには、アクション拡張機能と、拡張機能とアプリ自体の間で共有される動的フレームワークがあります。

プロジェクトのどこにも「Frameworks」というファイルがないので、これがどういう意味なのかよくわかりません。誰もがこの問題を受け取ったり、何かアイデアを持っていますか?here's what the error looks like

143
Mike

エラーはSwiftの使用に関連していることが判明しました(アプリと拡張機能の両方がSwiftを使用しています)。

アプリの場合、設定する必要がありました:

Embedded Content Contains Swift Code: YES

および拡張機能の場合:

Embedded Content Contains Swift Code: NO

Xcode 8および9

Xcode 8および9では、この名前がAlways Embed Swift Standard Librariesに変更されているようです。したがって、アプリの場合:

Always Embed Swift Standard Libraries: YES

および拡張機能の場合:

Always Embed Swift Standard Libraries: NO
275
Mike

私のために働いた唯一の解決策は、この実行スクリプトをApp Extensionターゲットに追加することでした:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
    rm -fr Frameworks
fi

enter image description here出典: https://github.com/CocoaPods/CocoaPods/issues/42

114
Roman

ビルド設定からこれを修正するための3つのステップ

  1. コンテナアプリ:Embedded Content Contains Swift Code: YES
  2. 拡張子:Embedded Content Contains Swift Code: NO
  3. 拡張機能:実行パス検索パス= @executable_path/../../Frameworks
41
Vincent Song

私の場合、CocoaPods 1.0.1にアップグレードしたばかりで、これは新しいバグのようです。

Pod更新により、Frameworksフォルダーを作成する拡張機能のターゲットに実行スクリプトが追加されます。 @Romanの実行スクリプトを追加して削除しようとしていました。

解決策は、拡張機能のビルドフェーズからこのスクリプトを削除することでした。ここに行く必要があるものがあります...

enter image description here

16
Dan Loughney

タイトルにembed Wordが含まれる拡張機能のすべてのビルドフェーズを削除します。

さらに:

  • 埋め込みコンテンツにはSwiftコードが含まれます拡張ターゲットのYesに設定する必要があります.

上記の答えのどれも私にとってはうまくいきませんでした。これは、エラーの原因が親アプリまたは拡張機能ではないためです。むしろ、リンクされたライブラリの1つに障害がありました。

確認するには、まずXcodeを使用してアーカイブし、次にオーガナイザーを使用してエントリを選択し、Show in Finderを使用して検索します。これにより、.xcarchiveファイルが表示されます。

そのファイルを選択し、「パッケージの内容を表示」を選択します。

Products/Applicationsフォルダーで.appを選択し、再度「Show Package Contents」を選択します。

Frameworksフォルダーで問題のモジュールを見つけます。たとえば、エラーが次の場合:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

その後、Frameworks/MyLib.frameworkで次の内容が表示される可能性があります。

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

親アプリに含まれるリンクライブラリ(またはモジュール)にEMBEDDED_CONTENT_CONTAINS_Swift = YES;があるため、これらが存在します

Xcodeで依存モジュールを見つけて、フラグを更新します。

enter image description here

この問題を克服しても、アプリはiTunes Storeからの説明メールで拒否される場合があります。

Invalid Swift Support - The Watch OS application has Swift libraries at both...

再び、これはEMBEDDED_CONTENT_CONTAINS_Swiftフラグに戻ります。親アプリのみがYESに設定されていることを確認してください。 WatchKitアプリと拡張機能の両方で、このフラグをNOに設定する必要があります。これは、上記の@Mikeの回答で詳しく説明されています。

11
Max MacLeod

私の場合、「常に埋め込みSwift標準ライブラリ」に「はい」を指定していたCocoaPodライブラリ「Blockly」が1つありました。オプションをNOにした後、機能しました。 enter image description here

8
suztomo

私の場合、解決策は、拡張機能の埋め込みバイナリからフレームワークを削除し、拡張機能のリンクされたフレームワークとライブラリに追加することでした。 (どちらも拡張機能の[全般]タブにあります。)

8
Pim

Embed Pods Frameworksスクリプトと Romanのスクリプト が両方とも同じターゲットに存在する場合。

Embed Pods Frameworksが他のフレームワークの前にあるかどうかを確認してください。そうでない場合は、Romanのスクリプトを最後に移動してください。

7
Reeonce Zeng

Embedded Content Contains Swift Codeの設定を見つけることができませんでしたが、Always Embed Swift Standard Librariesの設定を見つけることができ、フレームワークでこれをNOに設定することでこの問題は修正されました。

6
Gujamin
  1. コンテナアプリ:ビルド設定->埋め込みコンテンツにSwiftコードが含まれる:YES
  2. 拡張機能:ビルド設定->埋め込みコンテンツに含まれるSwiftコード:NO
  3. 拡張:ビルドフェーズ->次を追加Run Script in

cd "$ {CONFIGURATION_BUILD_DIR}/$ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[-d "Frameworks"]]; then rm -fr Frameworks fi

  1. (重要)拡張:ビルドフェーズ-> スクリプトの実行最後に移動(埋め込みPodsフレームワークスクリプトの後)
4
Yongxiang Ruan

CocoaPodsを使用している場合、問題のあるターゲット(拡張機能)のEmbedフレームワークビルドフェーズを削除することを検討します。これにより、問題が修正されました。

2
Kurt J

ここにリストされているビルド設定のいずれも、この問題を解決しませんでした。ただし、いくつかのフレームワークを「組み込みバイナリ」から「リンクされたフレームワークとライブラリ」に移動した後、これを機能させました。

私のメインアプリとカスタムフレームワークの1つは両方で同じフレームワーク依存関係を持っていたようです。エラーなし。

0
Travis M.

フレームワークを拡張バンドルにコピーしていたため、同じエラーが発生していました。結局のところ、拡張機能で使用されるフレームワークはメインアプリバンドルにコピーされ、拡張機能ビルド設定でのみリンクされる必要があります(コピーされません)。拡張ビルドに検索パス「@executable_path /../../ Frameworks」を必ず含めてください。そのパスはXCode 10によって自動的に追加されたと思います。

0
Zatman

私はこれと同じエラーを受け取っていました

ネストされたバンドルの許可エラー

私の問題はSquareReaderSDK.frameworkに特にありましたが、指示に従って新しい実行スクリプトを追加する必要がありました。

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"
0
Frank

Today拡張機能を持つアプリのXCode 7.1.1で初めてこの問題が発生しました(プロジェクトにSwiftはありません)。スクリプト( https://github.com/CocoaPods/CocoaPods/issues/42 )が機能しませんでした。

Cocoapodsをバージョン0.39.0.beta.3にダウングレードし、pod installを実行してから、再アーカイブすることで問題が解決しました。

0
andreacipriani