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


165

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

「Frameworks」というファイルがプロジェクトのどこにもないので、これが何を意味しているのか本当にわかりません。誰かがこの問題を抱えているか、何かアイデアを持っていますか?エラーは次のようになります


Frameworksという名前のフォルダはどうですか?
borrrden 2014

フレームワークと呼ばれるプロジェクトに「グループ」がありますが、フォルダーはありません。削除して再アーカイブしましたが、それでも同じエラーが発生します。
マイク

回答:


308

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

アプリについては、私は設定する必要がありました:

Embedded Content Contains Swift Code: YES

そして拡張のために:

Embedded Content Contains Swift Code: NO

Xcode 8および9

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

Always Embed Swift Standard Libraries: YES

そして拡張のために:

Always Embed Swift Standard Libraries: NO

7
あなたは私の救世主です。「組み込み」はバンドル内の拡張機能を意味し、拡張機能にはそれ以上の拡張機能が含まれていないため、迅速なコードは含まれていません。
Chris Truman

2
これで問題が解決しませんでした。CocoaPodsも使用しています。それに関連する問題を見た人はいますか?他のアイデアは?
timschmitz、2015

8
RunKitの検索パスが確実に機能するようにWatchKitの拡張機能を忘れないでください@executable_path/../../Frameworks
ロジャース氏

1
@MrRogersこれは、回答に従って問題を解決したものです。迅速な監視を備えたobjCアプリがあります。埋め込みコンテンツを設定しなくても問題なく動作しますが、アップルから拒否されました。埋め込みコンテンツを正しく設定すると、アプリが壊れます。この検索パスはそれを修正したものです。
Beau Nouvelle、

1
これは私にとってはうまくいきませんでした、私は何かをする必要があり、問題のあるターゲット拡張機能にいたので、この後に「[CP * Embed Pods Frameworks」のスクリプトを削除しました。正しく動作します!!
A. Trejo 2016

122

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

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

ここに画像の説明を入力してください 出典:https : //github.com/CocoaPods/CocoaPods/issues/4203


7
私のアプリはSwiftを使用していないため、これも私にとって有効な唯一の修正でした。
Dan Loughney、2015年

6
これは、メインのターゲットではなく、拡張機能にのみ追加する必要があることを言及する価値があります。
theDuncs

3
これで実際に問題は解決しますが、シミュレーターでアプリを実行できず、デバイスでも実行できないという別の問題が発生します。それはエラーを出します:dyld: Library not loaded: ... Image not found誰でも私を助けることができますか?
Subkhan Sarif 2017

4
それは私だけなのか、それともこのような狂気なのか?
bkbeachlabs

1
.ipaの検証で修正されましたが、エラーメッセージでインストール時にクラッシュしました:dyld:ライブラリが読み込まれていません:@ rpath / AFNetworking.framework / AFNetworking参照元:/ var / containers / Bundle / Application / ....理由:画像が見つかりません
Aleem

45

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

  1. コンテナーアプリ: Embedded Content Contains Swift Code: YES
  2. 拡張: Embedded Content Contains Swift Code: NO
  3. 拡張子:ランパス検索パス= @executable_path/../../Frameworks

2
コンテナ対拡張機能、Xcodeは初めてです。それはどこですか、拡張ココアポッドはどこですか?またはこれら2つのものはどこにありますか?
セルジュペドロザ2015

16

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

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

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

ここに画像の説明を入力してください


7
私のためにそれを解決しました!ここでも、CocoaPodsは何が問題なのかを理解しようとするのに1時間以上かかります。私はその製品と深刻な愛憎関係を持っています。
fguchelaar

2
Cocoapodsをアップグレードし1.1.0.rc.2て問題を解決しました。
のOtavio

1
キーボード拡張のビルドフェーズで埋め込みポッドフレームワークを削除するとうまくいきました。Xcode 8とCocoaPods v1.0.1を使用しています。ありがとう!
ストームファクトリー

13

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

さらに:

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

11

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

確認するには、まずXcodeを使用してアーカイブし、次にOrganizerを使用してエントリを選択し、Finderに表示を使用して検索します。これは.xcarchiveファイルます。

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

Products / Applicationsフォルダーで.appを選択し、もう一度「パッケージの内容を表示」を選択します。

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で依存モジュールを見つけ、フラグを更新します。

ここに画像の説明を入力してください

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

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

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


10

私の場合、「Always Embed Swift Standard Libraries」に「Yes」を指定していたCocoaPodライブラリ「Blockly」が1つありました。オプションをNOにした後、機能しました。ここに画像の説明を入力してください


9

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


7

もし埋め込みポッドフレームワークのスクリプトとローマのスクリプトと同じターゲットの両方に存在します。

埋め込みポッドフレームワークが他のフレームワークの前にあるかどうかを確認してください。そうでない場合は、Romanのスクリプトを最後に移動します。


あなたは素晴らしい@Reeonce Zeng、私の日を救う!
mgyky 2016年

両方のスクリプトをそこに残すべきですか、それとも最後の部分だけにするべきですか?"$ {SRCROOT} / Pods / Target Support Files / Pods-Orsys WatchKit Extension / Pods-Orsys WatchKit Extension-frameworks.sh" cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" if [[--d "Frameworks"] ]; その後、rm

@stackの場合、新しいスクリプト実行フェーズを追加して、次のように入力する必要があります。その後、rm
-fr

新しいスクリプトを実行するとはどういう意味ですか?既にスクリプトがあります。OK ?古いスクリプトを置き換える、プロジェクトを一度実行してテキストを置き換える必要があります。そこで「プログラムのインストール時にスクリプトを実行する」オプションを選択する必要がありますか?

もう少し助けてください wathckit拡張機能でエラーが発生しました。私のウォッチキット拡張プロジェクトでは、プロジェクトに「Appexに許可されていない...が含まれるように修正」オプション/メニュー/タブがありません。私はそれをどこで見つけることができますか?「埋め込みポッドフレームワーク」と「コピーポッドフレームワーク」しかありません。助けてください。

6

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


4
  1. コンテナーアプリ:ビルド設定->埋め込みコンテンツにSwiftコードが含まれる:YES
  2. 拡張機能:ビルド設定->埋め込みコンテンツにSwiftコードが含まれる:いいえ
  3. 拡張子:ビルドフェーズ- >以下の追加スクリプトの実行中に

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

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

「最後まで」は私にとって重要な作品でした。ありがとう。
アンディObusek 16

3

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


2

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


1

私はこのような質問をたくさん見つけましたが、私の問題を解決する助けにはならなかったので、うまくいけばこれが誰かを助けるかもしれません。

Intent拡張機能(Siriショートカット用)を備えたアプリを作成していて、Appleの推奨に従って、拡張機能とアプリ間で共有されるコードのフレームワークを使用しています。

ターゲットの[全般]設定の[フレームワークとライブラリ]セクションで拡張機能にフレームワークを追加しました。ここにフレームワークを追加すると、2つの列があります。1つはフレームワークの名前を言い、もう1つは「埋め込み」というタイトルです。「Embed」列には何も表示されなかったので、問題ないと思いましたが、フレームワークのその列に対して「Do Not Embed」オプションを明示的に選択する必要がありました。これを実行してXcodeでアーカイブしたところ、検証中にフレームワークが各ターゲットの下の私のipaコンテンツに表示されなくなったことを確認できましたが、一度だけ検証され、最終的に検証が成功しました。


0

私は、Today拡張機能を備えたアプリ(Xwiftがプロジェクトにない)のXCode 7.1.1で初めてこの問題に直面しました。スクリプト(https://github.com/CocoaPods/CocoaPods/issues/4203)が機能しませんでした。

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


0

私はこれと同じエラーを、

許可されていないネストされたバンドルエラー

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

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

0

ここに記載されているビルド設定のいずれも、この問題を解決していません。ただし、一部のフレームワークを「Embedded Binaries」から「Linked Frameworks and Libraries」に移動した後、私はこれを機能させました。

私のメインアプリとカスタムフレームワークの1つは両方で同じフレームワーク依存関係を持っているようです。それはいいえですが、メインアプリで埋め込み領域からリンク領域に移動すると、アプリを正常にアップロードできましたエラーはありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.