web-dev-qa-db-ja.com

dyld:ライブラリがロードされていません:iOS8の@rpath

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で新しく導入されたものであり、必要なアプリにフレームワークを含めるだけで機能することを期待しています。

55
ArdenDev

これを機能させるには

  1. フレームワークプロジェクトの設定で、インストールディレクトリを「/ライブラリ/ Frameworks」から「@executable_path /../ Frameworks」に変更します。

  2. このフレームワークを含むプロジェクトで、ファイルのコピーフェーズを追加し、このフレームワークを「Frameworks」フォルダーにコピーします。これを行ったら、このフレームワークが「埋め込みバイナリ」セクションの下にリストされていることを確認してください。

70
ArdenDev

この回答 を使用して問題を解決しました。 @ vladof81によると:

ターゲットの[全般]タブには、[埋め込みバイナリ]フィールドがあります。フレームワークを追加すると、クラッシュは解決されます。

参照は こちら on Apple Developer Forums。

32
Tom Howard

CocoaPodsを介してインストールされたライブラリでこのエラーが発生していました。ビルドフォルダーのクリーニング(cmd + option + shift + k)そして、クリーン(cmd + shift + k)が最終的にこの問題を解決しました。

8
Stunner

以下のコンテキストでフレームワークを見つけることができるかどうかを確認します。

ビルドフェーズ>フレームワークの埋め込み>

そのフレームワークをプロジェクトディレクトリの「Frameworks」セクションに追加した後、「Embed Frameworks」に追加するだけではありません。
enter image description here

5

Carthageを使用している場合

端末で_carthage update_を実行します

[プロジェクトの設定]-> [ビルドフェーズ]-> [カルタゴコピーフレームワーク]に移動します。

入力ファイル$(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.frameworkに行を追加

この行を出力ファイル:$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/YOURLIBRARY.frameworkに追加します

4

私にとっては、SSLの問題が原因で、他のプロジェクトの1つで、開発者のMac(キーチェーン)の配布証明書を「常に信頼」に設定していました。それらを「システムのデフォルトを使用」に戻す必要がありました。それは私のために働いていました!!

3
Gee Kay

リンクされたバイナリとフレームワークで、requiredからオプションに変更されたロードされていないことを示すライブラリを作成しました。現在完全に動作しています。

1
Saranjith

私はアプリを起動できなかったのと同じ種類の問題もありました、そしてアプリは上記のメッセージでクラッシュしました:

dyld:ライブラリがロードされていません:@ rpath/FrameworkName.framework/FrameworkName参照元:/ private/var/mobile/Containers/Bundle/Application/xxxxxxxxxxxxxxxxxxx

理由:画像が見つかりません

このエラーを解決するのに役立った私のアプローチは次のとおりです。

1.デバイスからアプリを削除し、ビルドをクリーンアップし、デバイスで再構築して実行します。

2.上記の手順が役に立たない場合は、以下の設定を確認してください:
「ターゲット」>「ビルド設定」>「ランパス検索パス」から、「$(継承)」および「@ executable_path/Frameworks」の値を確認します。存在しない場合はお気軽に追加してください。

アプリをビルドしてデバイスで実行する

1
Aks

上記のソリューションに加えて、アプリケーションに含まれるフレームワークのパスを再確認してください

ビルド設定->検索パス->フレームワーク検索パス

1
prodeveloper

これらの解決策が機能しない場合:

  1. (オプション)さまざまな検索パスタイプで here から明確な知識を得る
  2. .frameworkファイルパスがBuild Settings -> Framework Search Pathsに追加されていることを確認してください。すべてのフレームワークファイルをApp/libs/のどこかに保存し、このフォルダーを追加して再帰的に有効にすることができます。
  3. .aファイルパスがBuild Settings -> Library Search Pathsに追加されていることを確認してください。

enter image description here

1

Cocoapodsを使用してサードパーティのライブラリをインストールしました。同じエラーが発生し、すべてを試してみましたが、最終的にはuse_frameworksがないことに気付きました!私のポッドファイルで。

そのため、現在インストールされているライブラリを削除し、use_frameworksを追加しました!ポッドファイルの行、ライブラリを再インストールし、すべて私のために働いた。

0
akshayk80