アプリとウォッチ拡張機能の間でコードを共有する共有フレームワークを追加しました。後で多くの問題が発生するため、共有フレームワークを削除しました。 iPhoneでアプリをビルドして実行し、視聴することができます。しかし、App Storeに送信すると、次の2つのエラーが表示されます。
エラーITMS-90205:「バンドルが無効です。'xxxWatchKit Extension.appex 'のバンドルに、許可されていないネストされたバンドルが含まれています。」
エラーITMS-90206:「バンドルが無効です。'xxxWatchKit Extension.appex 'のバンドルに、許可されていないファイル' Frameworks 'が含まれています。」
私はstackoverflow( this 、 this 、 this )で言及されているすべての解決策を試しましたが、どれもうまくいきません。エラーを修正するにはどうすればよいですか? Appleからのエラーメッセージは、私がすべきことの手がかりを実際には与えません。
私はまだ問題の原因を完全に理解していませんが、最終的に私のために問題を解決した答えに出くわしました。
https://github.com/CocoaPods/CocoaPods/issues/42
具体的には、2015年10月12日のmikehouseによる投稿が問題の解決策でした。
次の実行スクリプトを、埋め込み拡張ターゲットすべてに追加します。私の場合、ビルドスクリプトとして実行スクリプトをToday拡張機能とApple Watch App拡張機能)に追加する必要がありました。
cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then
rm -fr Frameworks
fi
「ITMS-90206」エラーはこの投稿で解決されました: 検証エラー:無効なバンドル。..のバンドルに許可されていないファイル 'Frameworks'が含まれています
WatchKit拡張機能のビルドオプション内で、設定を[はい]から[いいえ]に変更する必要があります。
Embedded Content Contains Swift Code: No
上記ではうまくいきませんでした。
Embedded Content Contains Swift Code: NO
本当に何もしませんでした。
動的フレームワークを使用してこの問題を経験しました。私の動的フレームワークには他の動的フレームワークが含まれていて、
Embedded Content Contains Swift Code: YES
そして代わりに、他の動的フレームワークにそれをNoに設定させます。しかし、その代わりに私は設定しなければなりませんでした
Always Embed Swift Standard Libraries: NO
ビルドフェーズの下。
これをYESに設定すると、frameworks
フォルダーが生成され、ITCへのアップロードが失敗します。
次のビルド設定でビルドするフレームワークがありました。
Always Embed Swift Standard Libraries: YES
Allow Non-Modular includes in Framework Modules: YES
そこで、両方をNO
に変更して、フレームワークを再度ビルドしました。
Always Embed Swift Standard Libraries: NO
Allow Non-Modular includes in Framework Modules: NO
フレームワークの新しいビルドをプロジェクトに追加したので、iTunes Connectに正常にアップロードされました。
今日実装したカスタムフレームワークを使用する拡張機能がありました。
私はすべての解決策を試しましたが、何もうまくいきませんでした。
本日の拡張のみでカスタムフレームワークが必要だったので、このフレームワークを本日の拡張のみにリンクして埋め込みました。
エラーの内容は次のとおりです。
バンドルに許可されていないフレームワークが含まれている
今日の拡張機能はフレームワークを埋め込むべきではなく、それにリンクするだけです。
そこで、本日の拡張機能からフレームワークを削除して、親アプリに追加しました。
注意:
親アプリはこのフレームワークに追加されているため、このフレームワークを使用する必要があります。