カスタムフレームワークを使用している場合は、Xcodeプロジェクトの[ターゲット/全般]タブの下にある[埋め込みバイナリ]セクションに配置する必要があります。
私にとっては、単純なClean
とRebuild
がそれを整理しました。それが役に立てば幸い。
フレームワークを埋め込みバイナリアセットリストに追加すると、これが修正されました。これは、外部フレームワークのセットアップが、組み込みフレームワークとしてのXcode GUIの最終的なフォームのように見えるものです(Xcode 9.2、個人的には、パンくずトレイルのほうが好きです;-)):
Appleは、ランタイムを意図的にクラッシュさせ、iOS開発でApple以外のフレームワークを単純にリンクされたフレームワークとして使用できないという問題を開発者に何らかの形で伝えましたか?私が思うにビルドエラーとしてそれを出した方が良いでしょう...「それを移動する!」と言うボタンで。
埋め込みバイナリを使用すると、エンドユーザーがアプリとは別にフレームワークを追加する必要がなくなります(または、インストーラーで行う必要があります)。 iPhone(iOS)の場合、それは不可能ですが、macOSでは可能ですが、高速で乱雑になる可能性があります。
エンドユーザーにとっては、単にアプリをドラッグアンドドロップしてmacOSにインストールする方がはるかに優れているため、組み込みがメリットになります。埋め込みにより、管理するフレームワークの外部バージョンを持つという従来の「DLLの競合」も回避されます。 (ディスク容量は安く、顧客の時間は貴重です)。
ついに解決しました!
私にとってうまくいったのは、フレームワークを「必須」ではなく「オプション」にすることでした。
お役に立てば幸いです!
「問題に関する詳細情報を入手するにはどうすればよいですか?」という元の質問に答えるために、 this Appleフォーラムスレッド は非常に簡単なヒントを提供します。単にXCodeの外でクラッシュするアプリを実行します(つまり、XCodeから停止し、デバイスで手動で実行します)。これにより、何が起こったかについての詳細を含むクラッシュログが作成されます。このログは、XCodeウィンドウメニュー/ [デバイスとシミュレーター]-> [デバイスログの表示]で確認できます。
同じ署名でエラーが発生し(私のプロジェクトはObj-Cにありました)、適切なフレームワークとリンクするのを忘れていたことがわかりました。エラーの発見につながったデバッグログのエラーメッセージは次のとおりです。
dyld:シンボルが見つかりません:_OBJC_CLASS _ $ _ SFSafariViewController
特定のエラーについては、SafariServices.frameworkを[ターゲット]-> [ビルドフェーズ]-> [ライブラリとバイナリをリンク]に追加すると問題が解決しました。おそらく同じ特定のエラーと解決策はありませんが、手がかりを得るためにデバッグログをチェックすると便利です。
1)実行を継続して、「MyFramework.framework」が見つからないなどのメッセージがデバッガに表示されるかどうかを確認します。その場合は、次の説明に従ってください: OS X Framework Library not loaded: 'Image not found' 私にとって、この答えはうまくいきました: https://stackoverflow.com/a/44796734/406076
2)「埋め込みバイナリ」セクションでバイナリを追加したことを確認します。
3)ビルドフェーズセクションでフレームワークの署名を有効にしていることを確認します。
4)埋め込みフレームワークがシンボリックリンクではないことを確認してください。
5)「ライブラリとバイナリをリンク」フェーズで、リンクされたフレームワークを必須ではなくオプションにすることができます。これにより、iOSは起動時にこれらのフレームワークを検索しないようになります。とにかく、これらのフレームワークを使用するには、エラーを修正する必要があります!
6)すべてのinfo.plistエントリが適切かどうかを確認します。私の場合、iOS用のMac info.plistファイルを使用していました。 iOSプロジェクトには存在しなかったxibファイルを探していました。
7)そのような変更の後、クリーンアップしてビルドします。これらのファイルが既に存在する場合、xcodeはこれらのファイルをコピー/変更しないため、これが必要です。
8)iPadからアプリを削除してからインストールします。 7と同じ理由。
Info.plistで「プライバシー-カメラ使用法の説明」を適用するのを忘れていました。
しかし、この情報が他の誰かに役立つかどうかわからない...
私は同じ問題に直面していました。ターゲットのビルド設定で[常に埋め込みSwift標準ライブラリ]を[はい]に設定するとうまくいきました。
Plistにパーミッションの指定がないことで解決された同様の問題がありました(それは奇妙なことに..)
AVCaptureDeviceを使用しようとしましたが、起動時にクラッシュしました(私のアプリは非常に最小限でした)
-Privacy - Camera Usage Description
をinfo.plist
に追加すると解決しました。
Objective-CアプリケーションでSwiftで記述されたフレームワークを使用している場合、フレームワークを使用するアプリにSwiftツールチェーンを含める必要があります。
これを行うことがわかった方法は、XCodeがSwiftを認識し、プロジェクトに適切に追加するように、アプリでダミーSwiftファイルを作成することです。その後、ダミーファイルを削除します。
Swiftファイルを追加せずにSwiftをObjective-Cプロジェクトに明示的に追加するより良い方法を誰かが知っていたら、私は大好きです。
私はそれを解決する正しい方法を見つけました。
AppleWWDRCA.cer
がシステムのデフォルトモードに設定されていることを確認すると、動作します:
carthageビルドフレームワークを使用する場合、フレームワークをプロジェクトにドラッグした後、それをGeneral/Embedded Binariesに追加する必要があります。
対象バージョンよりも新しいiOSバージョンからのみアクセス可能なシステムフレームワークを使用している場合に発生することがあります。このリンクされたフレームワークをオプションとしてマークすることで修正される場合があります。
たとえば、iOS 11を対象とし、iOS 12のオートフィル機能で AuthenticationServices を使用しているプロジェクトは、iOS 11で説明されている方法でクラッシュします。
同じ問題が発生した理由は、macOS Mojaveの新しい更新後、開発者証明書を失効させ、Xcode 10で新しい証明書を作成したためです(一部のログイン資格情報がすべて削除され、一部が古いキーチェーン証明書)。
そのため、デバイスに適切な新しいプロビジョニングプロファイルをインストールするために、インストール済みのアプリをデバイスから削除し、Xcodeで再度実行するだけで済みました。
Xcode v10.2.1への更新とSwiftからv5.0への更新carthage + RxSwiftを使用している場合、新しいRxSwiftはRxRelay.framework
を使用します。/Carthage/Buildディレクトリに移動して、そのフレームワークを見つけて、プロジェクトに追加してください。 carthage copy-frameworks
スクリプトにも追加することを忘れないでください:$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
おかげで解決しました: https://stackoverflow.com/a/52550148/2493555
プロジェクトのエラーを修正しました。
1。エラーが発生したときに他のスレッドを確認します。エラーはカメラに関するものであることがわかりました。