Xcode6とiOS8でiOSフレームワークを作成しています。これをiOSアプリにリンクしてデバイスで実行しようとすると、このエラーが発生します
dyld: Library not loaded: @rpath/FrameworkName.framework/FrameworkName
Referenced from: /private/var/mobile/Containers/Bundle/Application/0F2C2461-A68B-4ABA-A604-B88E6E9D1BB1/AppName.app/AppName
Reason: image not found
フレームワークの「Runpath Search Paths」ビルド設定は、デフォルトで
'@executable_path/Frameworks', '@loader_path/Frameworks'
これに関連するドキュメントは見つかりませんでした。これはXcode6で新しく導入されたものであり、必要なアプリにフレームワークを含めるだけで機能することを期待しています。
これを機能させるには
フレームワークプロジェクトの設定で、インストールディレクトリを「/ライブラリ/ Frameworks」から「@executable_path /../ Frameworks」に変更します。
このフレームワークを含むプロジェクトで、ファイルのコピーフェーズを追加し、このフレームワークを「Frameworks」フォルダーにコピーします。これを行ったら、このフレームワークが「埋め込みバイナリ」セクションの下にリストされていることを確認してください。
CocoaPodsを介してインストールされたライブラリでこのエラーが発生していました。ビルドフォルダーのクリーニング(cmd + option + shift + k
)そして、クリーン(cmd + shift + k
)が最終的にこの問題を解決しました。
Carthageを使用している場合
端末で_carthage update
_を実行します
[プロジェクトの設定]-> [ビルドフェーズ]-> [カルタゴコピーフレームワーク]に移動します。
入力ファイル:$(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.framework
に行を追加
この行を出力ファイル:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/YOURLIBRARY.framework
に追加します
私にとっては、SSLの問題が原因で、他のプロジェクトの1つで、開発者のMac(キーチェーン)の配布証明書を「常に信頼」に設定していました。それらを「システムのデフォルトを使用」に戻す必要がありました。それは私のために働いていました!!
リンクされたバイナリとフレームワークで、requiredからオプションに変更されたロードされていないことを示すライブラリを作成しました。現在完全に動作しています。
私はアプリを起動できなかったのと同じ種類の問題もありました、そしてアプリは上記のメッセージでクラッシュしました:
dyld:ライブラリがロードされていません:@ rpath/FrameworkName.framework/FrameworkName参照元:/ private/var/mobile/Containers/Bundle/Application/xxxxxxxxxxxxxxxxxxx
理由:画像が見つかりません
このエラーを解決するのに役立った私のアプローチは次のとおりです。
1.デバイスからアプリを削除し、ビルドをクリーンアップし、デバイスで再構築して実行します。
2.上記の手順が役に立たない場合は、以下の設定を確認してください:
「ターゲット」>「ビルド設定」>「ランパス検索パス」から、「$(継承)」および「@ executable_path/Frameworks」の値を確認します。存在しない場合はお気軽に追加してください。
アプリをビルドしてデバイスで実行する
上記のソリューションに加えて、アプリケーションに含まれるフレームワークのパスを再確認してください
ビルド設定->検索パス->フレームワーク検索パス
これらの解決策が機能しない場合:
.framework
ファイルパスがBuild Settings -> Framework Search Paths
に追加されていることを確認してください。すべてのフレームワークファイルをApp/libs/
のどこかに保存し、このフォルダーを追加して再帰的に有効にすることができます。.a
ファイルパスがBuild Settings -> Library Search Paths
に追加されていることを確認してください。Cocoapodsを使用してサードパーティのライブラリをインストールしました。同じエラーが発生し、すべてを試してみましたが、最終的にはuse_frameworksがないことに気付きました!私のポッドファイルで。
そのため、現在インストールされているライブラリを削除し、use_frameworksを追加しました!ポッドファイルの行、ライブラリを再インストールし、すべて私のために働いた。