OS Xフレームワークライブラリが読み込まれていません: '画像が見つかりません'


279

基本的なOS Xフレームワークを作成しようとしていますが、今はテストフレームワークを作成しています。TestMacFramework.frameworkそれをまったく新しいOS Xアプリケーションプロジェクトにインポートしようとしています。

.frameworkファイルをビルドして新しいプロジェクトにインポートしました。フレームワークは正常にリンクしているように見え、フレームワークのビルドフェーズセクションに追加したパブリックヘッダーファイルを参照できます。

しかし、コンテナーアプリケーションを実行しようとすると、次のエラーが発生します。

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

少しグーグルで調べたCopy Filesところ、コンテナーアプリケーションのビルドフェーズにセクションを追加する必要があることに気付いたので、これを実行して、次のように設定しました...

ここに画像の説明を入力してください

ただし、まだランタイムエラーが発生します。私は明らかにここで何か間違っているのですが、このためのApple開発者ライブラリリソースはXcode 2を参照しているため、あまり役に立ちません!

私は何を逃したのですか?

更新:

TestMacFramework.frameworkビルドログで.app contents / frameworksディレクトリにコピーされているのを確認できますが、HDのLibrary / Frameworksディレクトリにインストールされていません

ここに画像の説明を入力してください

更新2:

私は手動でコピーする場合は、ビルドが正しくリンクTestMacFramework.frameworkLibrary/Frameworksディレクトリ


1
otool -Lアプリがフレームワークを見つけることを期待している場所について何を教えてくれますか?
trojanfoe 14

さて、私はそれを実行する方法を理解しました...これは私が自分のライブラリーに対して得た出力です(私はFoundationなどの他の依存関係を除外しました)/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Sammio2

私の修正は、必要なライブラリをバイナリとして埋め込むことでした(Alamofire)。これは受け入れられますか?
Cmag 2016年

2
この質問にOS X向けのタグが明確に付けられていることは非常に混乱しており、承認されたものを含め、すべての回答はiOS向けです。同じエラーが発生し、どの回答も使用できません。
RenniePet 2016

@RenniePet Xcode 7.3以降、プロセスはiOSフレームワークとmacOSフレームワークで同じであるため、受け入れられた答えはそれを行う正しい方法です。それでも問題が解決しない場合は、無関係な問題である可能性がありますか?
Sammio2 16

回答:


553

[Xcode 11+]

唯一行うことは、フレームワークをアプリターゲットのタブのGeneral->Frameworks, Libraries And Embedded Contentセクションに追加Generalすることです。

必ず「埋め込みと署名」オプションを選択してください。

ここに画像の説明を入力してください

[Xcode v6-> Xcode v10]

唯一行うことは、フレームワークをアプリターゲットのタブのEmbedded binariesセクションに追加Generalすることです。

Xcodeのスクリーンショット


32
これは、iOSに必要な唯一の手順です。
ニコロフスキー2015

7
ありがとう!iOSで解決しました。
user1244109 2015年

6
ありがとうございました!それは私がiOSのために私を助けました
アレクサンダーKhitev

4
Storyboardにインポートしたフレームワークのクラスを使用していて、このエラーが発生していました。ストーリーボードでカスタムクラスを設定するだけでなく、それを追加したいだけで、MODULEフィールドも設定する必要があります。
Ruben Martinez Jr.

8
@ZevsVU Embedded binariesmacOSプロジェクトにセクションがありません。どうしましたか?
fnc12

56

だから私はそれをうまく動かすことができました、あなたが正しい指示を持っていればそれはとても簡単です。私が探していたのは、システムライブラリフォルダーに書き込まれるのではなく、App Bundleに存在する「プライベート」フレームワークでした。

フレームワークの構築

  1. Cocoaフレームワークを作成するためのターゲットを追加する
  2. そのターゲット内で「ビルド設定」を「インストールディレクトリ」を「@executable_path /../ Frameworks」に構成します。
  3. ライブラリをビルドし、アーカイブまたは製品ディレクトリから.frameworkにアクセスします

フレームワークを含む

  1. 作成した.frameworkファイルをXcodeプロジェクトにドラッグします。必ず「ファイルをディレクトリにコピー」にチェックマークを付けてください
  2. 含まれているアプリケーションターゲットに、新しい「ファイルコピービルドフェーズ」を追加します。
  3. 「宛先」を「フレームワーク」に設定します
  4. 作成した.frameworkにドラッグします

1
これはiOSフレームワークでも機能します。カスタムフレームワークをワークスペースに追加して、それとともにビルドする場合。デバイスでデバッグするときにこのエラーを解決するには、このソリューションのフレームワークを含む部分を追加する必要があります。
cynistersix 2014年

1
ありがとう、iOSのために働いた。フレームワークは、すでに私の派生データフォルダに建設されたように私はあなたの最初のステップに従っていませんでし
Gmeister4

驚くばかり!私の奇抜な日を救った!2017-Xcode 8.3.2ありがとう!
Glenn

奇妙な理由で、デフォルトの「ライブラリとライブラリをリンクする」セクションから「組み込みフレームワーク」セクションにフレームワークをドラッグすることはできませんが、左側のプロジェクトリストからフレームワークをドラッグできます。「-」ボタンを使用して、「Link Binary With Libraries」セクションからフレームワークを手動で削除する必要があります。
ウィリアム・サーヌーク

18

それは私にとって非常に簡単でした、私はフレームワークをアプリのターゲットの下にある埋め込みバイナリに追加しました


15

上記のオプションを含めることができない場合。ランパス検索パスを指定して解決しました

これは「ビルド設定」タブにあります。「リンク」セクション。「Runpath Search Paths」をに変更$(inherited) @executable_path/Frameworks


このステップと、以前のフレームワークで新しい「ファイルコピービルドフェーズ」を追加するための両方のステップが必要でした。
user23 '11 / 11/07

少しずつ更新されている古いXcodeプロジェクトがあり、これらの設定が欠けていました。追加され、期待どおりに動作するようになりました。
Mattio、

これらすべての解決策のうち、これが機能しました。問題へのアプローチが「根本的な原因が不明であるため、これらのすべてのスタックオーバーフローポストのリストを下に移動させてください」のようにいらいらします。APPLEEEEE
Ryan

9

私は同じ問題に遭遇しましたが、受け入れられた解決策は私にとってはうまくいきませんでした。代わりに、フレームワークのインストール名を変更することで解決しました。

元の投稿のエラーは次のとおりです。

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

ライブラリが読み込まれていない後の最初のパスに注意してください。フレームワークは絶対パスからロードされています。このパスは、フレームワークのインストール名(rpathと呼ばれることもあります)から取得されます。

otool -D MyFramework.framework/MyFramework

フレームワークがアプリに埋め込まれている場合、このパスは相対で、次の形式でなければなりません:@ rpath / MyFramework.framework / MyFramework。フレームワークのインストール名が絶対パスの場合、実行時にロードされず、上記と同様のエラーが生成されます。

解決策は、インストール名を変更することです。

install_name_tool -id "@rpath/MyFramework.framework/MyFramework" MyFramework.framework/MyFramework 

この変更により、エラーは発生しなくなりました



7

これらの問題のどれも私のためにこれを解決しませんでした。最後の問題はかなり簡単でした。それは私が問題をログに記録し、Appleバグ:29820370の下で修正したかなり大きなXcodeバグのようです。もしあなたが苦労しているなら(これに似た問題のいくつかのページがあるようです)、あなたができれば素晴らしいでしょうバグ報告者にバグを報告する:https : //bugreport.apple.com/、私が発生させたバグを参照して可視化してください。Xcodeを以前の喜びに戻したいのですが、これはXcode自体が修正されているはずです。

修正方法は次のとおりです。1.キーチェーンを開きます-Apple Worldwide Developer Certにアクセスします。2.それをダブルクリックします。3。アクセス許可レベルを「常に信頼する」からシステムデフォルトを使用するように変更します。4。保存して閉じます。5。Xcodeを再起動し、プロジェクトをクリーンアップしてビルドすると、プロジェクトは削除されます。

以下の正しい設定のスクリーンショット: キーチェーンアクセスの修正 これがお役に立てば幸いです!


2
「システムのデフォルトを使用」は標準設定のようです。
ラファエル

常にではない-何かがそれを変えるように思われ、そのエラーが発生する
UKDataGeek

このおかげで私の問題も解決しました!残念ながら、バグトラッカーでチケットを確認して、さらに可視化することはできません。理由はわかりませんが、バグは表示されません。
ジム

7

Xcode 11:

Xcode 11ではフレームワークをに追加します General->Frameworks, Libraries And Embedded Content

追加後、必ずEmbed & Signオプションを選択してください

ここに画像の説明を入力してください


2
これを行うと、アプリストアにアプリをアップロードできなくなります
Mahendra

@Mahendra、この場合に使用する代替手段は何ですか?同様の問題がありました。
Derryl Thomas

@DerrylThomas、アプリはまだ開発モードなので、このケースはテストしていませんでした
Mahendra

1
@Mahendra、これの代替案を見つけた場合に備えて、ここで共有してください。とても感謝しています。
Derryl Thomas

@DerrylThomasアーカイブの作成中に、に戻し、埋め込み禁止オプションを選択し、実行可能ファイルを作成してアプリストアにアップロードします。
BlackPearl12

6

あなたは下のプロジェクトにカスタムフレームワークをドラッグするとXcodeの10.1、それは想定してフレームワークは、システムのフレームワークとプットあなたのターゲットの下の「ビルドフェーズ」の「リンクバイナリとライブラリ」セクションにフレームワークであること。

システムフレームワークは既にデバイス上にあるため、デバイスにコピーされず、実行時に実行できません。したがって、KABOOM (__abort_with_payloadでのクラッシュ、および非通知エラー: "理由:画像が見つかりません")。これは、フレームワークコードがデバイスにコピーされないためです...

実際には、Xcodeでカスタムフレームワークをリンクし、コードと一緒にiOSデバイス(実際またはシミュレーター)に確実にコピーするためには、カスタムフレームワークを「バンドルリソースのコピー」に移動する必要があります。これにより、最終的に、フレームワークとコード実行可能ファイルがパッケージ化され、デバイスで一緒に使用できるようになります。

プロジェクトにカスタムフレームワークを追加し、Appleのクラッシュを回避するには:

  1. カスタムフレームワークをiOSプロジェクトファイルリストにドラッグします
  2. ナビゲーターでProjectNameをクリックします-> TargetName-> "ビルドフェーズ"->バイナリをライブラリにリンクします
  3. カスタムフレームワークを下の「バンドルリソースのコピー」セクションにドラッグアンドダウンします(Xcode はフレームワーク参照を移動し、Xcode 10で修正されました)。
  4. シミュレーターまたはデバイスで実行

したがって、カスタムフレームワークは、コードとともにターゲットデバイスにコピーされ、実行時に使用できます。

ここに画像の説明を入力してください

[社説:Xcodeは、デバイスにコピーする必要のないシステムフレームワークの1つと、カスタムルートフレームワーク(プロジェクトのルートディレクトリ階層にある)の違いを理解するのに十分スマートだと思うでしょう ...🙄]


5

これを使用して「ビルドフェーズ」に「スクリプトを実行」する必要があります:「/ usr / local / bin / carthage copy-frameworks」

その「スクリプトの実行」の「入力ファイル」で、ライブラリへのパスを追加する必要があります。このような:

ビルドフェーズ実行スクリプト


4

キーチェーンを誤ってリセットした場合、キーチェーン内のApple証明書が欠落していることが原因である可能性があります。私はこれに従って私の問題を解決しました。

同じ問題があり、WWDR(Apple Worldwide Developer Relations Certification Authority)を再ダウンロードすることで修正できました。ここからダウンロード:http : //developer.apple.com/certificationauthority/AppleWWDRCA.cer


これも私の問題を解決しました。再コンパイルする前にビルドフォルダーをクリーンアップすることを忘れないでください。
ジャスティンミロ2017

4

あなたが使用している場合、Xcodeの11を一般- 、[ターゲット設定でフレームワーク、ライブラリ、および埋め込みコンテンツで追加のフレームワークを持っていることを確認してください。埋め込みステータスを「埋め込みなしから「埋め込み&署名」に変更します


ただし、App Storeへの配布時にITMS-90206 Invalid Swift Supportエラーが発生します。開発でのみ機能します。
ラプター

2

私にとってそれを解決したのは、Podfileのメインターゲットに変更abstract_targetするtargetことでした。以前に設定していたためabstract_target、これが原因で上記のエラーが発生しました。今それは魅​​力のように機能します


1

Xcode 8の場合、古いデータは派生データフォルダーから削除されます。このソリューションを参照しください。

アップル:macOS 10.12以降では、Xcodeは古い派生データ、プリコンパイル済みヘッダー、モジュールキャッシュをクリーンアップします。(23282174)

Xcodeビルドシステムは、以前のビルドで生成されたが、プロジェクトから削除されたいくつかのタイプのビルドアーティファクトの古いファイルの削除をサポートしています。

著者の考えに基づいて、私は私のケースからこのビルドログを見つけました。

Remove stale build products

/bin/rm -rf /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks/AliyunVodPlayerSDK.framework
/bin/rmdir /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks

新しいファイルコピーフェーズを作成し、ターゲットの古いフレームワークをFrameworksの宛先にコピーすると、再構築後に上記の削除ログが消えます。

私の状況と理由を明確にしてください。誰かのお役に立てば幸いです。


1

私にとっては、何時間もの検索の後、これが解決策でした!!

何らかの理由で、Swift 2.3カスタムフレームワークの開発にDYLIB_INSTALL_NAME_BASE至るまで、Xcode 8はproject.pbxprojファイルから設定を削除していました。少しBuild Settings / Dynamic Library Install Name Base設定を戻して@rpath修正します。

https://forums.developer.apple.com/thread/4687から)


0

この問題は、コード自体ではなく、コード署名と証明書にのみ関連していることがわかりました。これを確認するには、基本的なシングルビューアプリを作成し、デバイスを変更せずに実行してみます。同じエラータイプが表示される場合は、コードに問題がないことを示しています。私と同じように、証明書が無効であることがわかります。もう一度すべてダウンロードして、期限切れのものを修正します。次に、基本的なアプリがエラーを報告しないようにしたら、Xcodeを終了し、おそらくMacを再起動してから、アプリをもう一度試してください。それでこの悪夢はようやく終わりました。これを実行しようとしたときにビルド成功のメッセージが表示された場合は特に、コードとは関係がない可能性があります。ご参考までに


0

Xcode 9ベータ版を試し、Xcode 8に戻ったときに問題が発生しました。ターゲットでの単純なCleanで問題が解決しました。


0

別の理由で同じ問題が発生しました。デバッグとリリースの新しい構成を作成しました(プロジェクト->情報タブ->構成の下)。また、ポッドフレームワークのシェルスクリプト(ターゲットサポートファイルの下のPods- "appName" -frameworks.sh)を変更して機能させる必要がありました。

[Xcode 9]


0

私のために働いた唯一のもの:

ターゲット>ビルドフェーズ> [CP]埋め込みポッドフレームワーク[ビルドログに環境変数を表示]と[インストール時にのみスクリプトを実行]のチェックを外します


0

私は多くの修正を試みましたが、私のために働いたのは、ビルドスキームのビルドタブにリストされている欠落しているターゲットを削除することでした。現在のスキームの編集ウィンドウを開くと、そこに移動できます。

編集:私のUIテストターゲットも機能しておらず、解決策はそれを削除して再度生成することでした。


0

xcodeを開く->一般->埋め込みバイナリ-> QBImagepicker.frameworkとRSKImageCropperを追加->クリーンプロジェクト

埋め込まれたバイナリにQBImagePicker.frameworkとRSKImageCropper.frameworkを追加するだけでうまくいきました


0

この問題は別の理由で発生する可能性があるため、この問題を解決するための解決策はないと思います。先週もこの問題が発生しました。いつ、どのような原因でこの問題が発生するのかはわかりません。Xcodeを使用してシミュレータで実行するか、電話にインストールしようとすると、このようなエラーが報告されますが、ターミナルでreact-native run-iosでそれを実行します、問題はありません。

証明書の更新、Xcodeの設定変更(上記のすべての方法)など、インターネットに投稿されたすべての方法を確認しましたが、実際にはXcodeのすべての設定は以前に要求されたとおりに設定されており、どの方法も私にとっては機能しません。今朝、ポッドを削除して再インストールするまで、1週間後にようやくエラーが発生します。cocoapodも使用していて、特別な理由なしにエラーが表示された場合は、おそらく私の方法を試すことができます。

  1. ココアポッドのバージョンを確認してください。
  2. 利用可能な新しいバージョンがある場合は、更新してください。
  3. プロジェクトフォルダーに移動し、Podfile.lock、Podsファイル、プロジェクトxcworkspaceを削除します。
  4. ポッドインストールを実行する

0

実際のデバイス(iPhone SE)で実行しているときにのみ、この問題が発生しました。シミュレータプロジェクトは期待どおりに機能しました。

私はこのスレッドとここからすべての修正を試しました。それらのどれも私のために働いていません。

私にとっては、iPhone(sic!)を再起動した後に問題が解決しました。

やった:

  • クリーンビルドフォルダー、
  • クリーンな派生データ、
  • デバイスからアプリを削除し、
  • デバイスを再起動

そして、それは最終的に動作します。:)

他のすべてのソリューションが失敗した場合は、それを試すことを忘れないでください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.