私のアプリには多くのフレームワークがあります。アプリはアドホック/エンタープライズリリースで正常に動作します。 testflightテストのためにアプリストアに送信した場合にのみ、Appleから次のエラーメールが届きます。
親愛なる開発者、
「ここに私のアプリの名前」の最近の配信で1つ以上の問題が見つかりました。配送を処理するには、次の問題を修正する必要があります。
無効なバンドル-アプリによって参照される1つ以上の動的ライブラリがdylib検索パスに存在しません。
これらの問題を修正したら、修正したバイナリを再配信できます。
よろしく、
App Storeチーム
ここには特定の情報はありません。どうすればデバッグできますか?
Apple開発者テクニカルサポートから回答がありました。これはApple側のバグです。これは私にとってはうまくいかなかった、以下の推奨される回避策です。
この問題を診断するには、XcodeからApp Storeに送信するIPAをエクスポートする必要があります。 IPAはZipファイルであるため、右クリックして[アプリケーションから開く]> [アーカイブユーティリティ]と言うことにより、IPAを解凍できます。解凍されたフォルダー構造内でメインの実行可能ファイルを見つけ、コマンドラインでotoolを実行してライブラリリストを確認します。otool-L
取得するパスのリストは、IPA内で見つけたものと一致する必要があります。ライブラリはすべて@rpathで始まる必要があります。このリストのすべてを解凍されたIPAフォルダーと簡単に比較すると、不足しているものが明らかになります。
不足しているものがわかったら、Xcodeビルドフェーズのセットアップに進みます。ファイルのコピーまたは埋め込みフレームワークのいずれかのビルドフェーズに、欠落しているライブラリが含まれている必要があります。ライブラリをリストに追加するだけです。これらのビルドフェーズのいずれも表示されない場合は、新しいCopy Filesビルドフェーズを追加し、DestinationをFrameworksに設定し、ライブラリをリストに追加して、Code Sign On Copyがオンになっていることを確認します。
メインバイナリに欠けているものが見つからない場合は、watchOSアプリやiOSアプリ拡張機能など、他のバイナリでも同じ検索を実行してください。
すべてのフレームワークがこのビルドフェーズにあることがわかったら、アプリターゲットの[全般]ページの[埋め込みバイナリ]セクションをご覧ください。見つかったバイナリの横に複数レベルの../が表示されている場合はお知らせください不足している。
うまくいくかどうか教えてください!
ウォッチサポート付きのアプリをアプリストアにアップロードするときに、同じ問題が発生しました。
otool -L
を使用してipaまたはxcarchiveからバイナリを分析し、最初の回答のヒントで解決できました。ただし、問題は私のフレームワーク(@rpath
)ではなく、Swift= lib。フレームワークフォルダーにlibswiftWatchKit.dylib
が欠落していることに気付きました。
私のために働いた解決策は、ウォッチアプリのビルド設定でEMBEDDED_CONTENT_CONTAINS_Swift=YES
を設定するのと同じくらい簡単でした(または、ウォッチアプリ拡張機能、両方ではありません)。その後、必要なすべてのSwiftライブラリがアーカイブ内の監視アプリのパスに正しくコピーされ、アプリストアへのアップロードが正常に機能しました。
どうやら、必要なSwift=ライブラリをメインアプリのフォルダーのみに指定すると、監視アプリが機能し、アップロードが成功します。
カスタムSwiftフレームワークをプロジェクトに追加した後、アプリをiTunes connectにアップロードした後にこのメールを受け取りました。
このメールはiTunesストア、
Invalid Bundle-アプリによって参照される1つ以上の動的ライブラリがdylib検索パスに存在しません。
この問題の修正は簡単です。
ステップ1:カスタムフレームワークがEmbedded Binariesに追加されていることを確認しますターゲットの一般タブ。
ステップ2:ビルド設定で、
セットする Always Embed Swift Standard Libraries = Yes
メインプロジェクトターゲット。
そして、Always Embed Swift Standard Libraries = No
カスタムフレームワークターゲット。
これで問題が解決し、バイナリをiTunes connectにアップロードできました。
私の問題:組み込みフレームワークでも同じエラーが発生しました。
シミュレーターとデバイスに問題なくビルドされたアプリは、Appleテストに失敗し、「Invalid Bundle」を返しました。
TahaがTech Supportから指示されたのと同じようにパッケージを検査しましたが、すべてが正しく存在していました!
私のソリューション:プロジェクトを再構築して、2つのカスタムフレームワークを並べて配置し、一方がもう一方に埋め込まれないようにしました。
これはApple検証問題であるように見えます。これはすべてがデバイスとシミュレーターで正常に機能するが、回避策は簡単だったからです。
私の場合、ビルド設定で、ライブラリのビルド設定に次を追加すると、これは修正されました。
DYLIB_INSTALL_NAME_BASE = @rpath
手がかりはリンカーの警告でした:「YourLibraryのインストール名は「/」で始まりますが、指定されたSDKからではありません」
私は同じ問題を抱えていました。これは、アプリバンドルのFrameworks
サブフォルダーに存在しないフレームワークが原因でした。
Copy Fieldsビルドフェーズを追加し、不足している.frameworkファイルをそこに追加することで修正しました。
このエラーメッセージは、AppleテクニカルノートTN2435アプリへのフレームワークの埋め込み: https://developer.Apple.com/library/archive/technotes/tn2435/_index。 html
トラブルシューティング手順を含む見出し「Missing Framework Bundle」の下にエラーメッセージがあります。
同じ問題があり、 すべてのステップ (「Missing Framework Bundle」を参照)を経た後でも、動作したのはビットコードを無効にすることだけでした。
同じ問題があった。これは、フレームワークターゲットの1つが「ライブラリとバイナリをリンク」のメインターゲットに追加されたが、「ターゲットの依存関係」と「埋め込みバイナリ」に追加されなかったために起こりました。
それで私はこれに二日間苦労しました。判明したのは、アーカイブしたスキームのビルドのアーカイブでUITestsをチェックしていたことです。
Archiveからチェックを外し、再アーカイブ、検証(常に合格する前に検証)、および「AppStoreにアップロード」後、Appleから通知する無効なSwiftサポート。代わりに、処理されたので行ってよいというメールを受け取りました!