2016-12-06 21 views
6

私はSwiftフレームワークを構築しましたが、今はそのフレームワークを使用するSwift iOSアプリケーションを構築しようとしています。含め、そこに記載されている修正を私はSO洗い上げてきたdyld:ライブラリがロードされていません:@ rpath/libswiftSwiftOnoneSupport.dylib

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib 
    Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel 
    Reason: image not found 

と同様のレポートを発見し、試してみました:私はこのエラーを取得してい

  • は私DerivedDataフォルダをクリア
  • 再起動XcodeとiPhoneシミュレータ
  • Always Embed Swift Standard Libraries = YESEnable Bitcode=NOが設定されていることを確認
  • 私の枠組みの中で、私のアプリケーションのビルドの両方の設定、設定されていることを確認、私のフレームワークと私のアプリケーションのビルド設定
  • の両方のRunpath Search Pathsが私のプロジェクト内のローカルコピーに私のXcodeのインストールからすべてのlibswiftファイルをコピーし、両方の私のフレームワークと私のアプリケーションのビルド設定
  • で、@executable_path/Frameworksに設定されていることを確認し、これらのファイルをフレームワークフォルダにコピーするカスタムビルドフェーズが追加されました。

いずれの場合も、アプリケーションを実行しようとすると同じエラーが発生します。

  • Xcodeのバージョン8.1(8B62)
  • アップルスウィフトバージョン3.0.1(swiftlang-800.0.58.6打ち鳴らす-800.0.42.1)が
+0

longshotの提案: '@executable_path /../ Frameworks'をフレームワークのランタイム検索パスに追加してください。 –

+0

@JoeDaniels - 私はそれを追加するときに違いはありません。提案していただきありがとうございます。 –

+0

ああ、Swift言語版はどうですか?それはすべて3.0ですか? –

答えて

21

私は最終的に、これは修正のミックスを使用して作業しました。私はそれらのすべてが必要なのかどうかはわかりませんが、私がここで私のために働くように見えるものを文書化しています。

  1. 私は両方の私のスウィフトフレームワークのビルド設定]タブでYESの値にし、フレームワークを使用していますスウィフトアプリケーションにAlways Embed Swift Standard Librariesを設定しました。
  2. Swiftフレームワークと、フレームワークを使用するSwiftアプリケーションの両方の一般タブのリンクされたフレームワークとライブラリセクションにFoundation.frameworkを追加しました。
  3. フレームワークを使用するSwiftアプリケーションの一般タブの埋め込みバイナリセクションにFoundation.frameworkを追加しました。

この3つの設定をすべて実行すると、このエラーが発生することなくアプリケーションをビルドして実行できます。

+0

を含む問題が更新されました。ありがとうございました!私は、私が取り組んでいる制作アプリのデモアプリケーション/フレームワーク機能をセットアップするのに2時間を費やしました。私はこの正確なエラーに遭遇したことを二度作り上げています。何らかの理由で、フレームワーク内のカスタムUIButtonの配列をループ(反復)することができましたが、ループ内の何かに実際にアクセスしようとした瞬間に、このエラーが発生しました。 FYI:私はそれぞれのものをテストしました。追加する必要のあるものは#1でした。この新機能は、Xcode 8だけで開発されています。なぜなら、ブランチではなく、他の新しく作成されたプロジェクトで作業しているからです。 – dfd

+0

あなたの指示の第一のポイントを達成するには十分でした。 ありがとうございます。 –

+0

ポイント1だけで解決しました。私はそれがあなたがアプリケーションとリンクされたフレームワークにそれを置く必要があることが奇妙に思えます。 XCodeの依存関係管理は複雑さの原因です。自動化する方法は他にありますか? –

4

どのように依存関係をインストールしていますか?

私は同様の問題があった:

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib Referenced from: <internal framework> Reason: image not found

それはスウィフト全モジュールの最適化に関連することが判明しました。

Carthageを依存マネージャーとして使用していたため、リリース用にコンパイルされていたため、モジュール全体の最適化でコンパイルされていました。シミュレータでアプリを実行すると、デバッグ用にコンパイルされます。ダイナミックなフレームワークは、それを実行しているアプリとは異なるレベルの最適化ではできないと私は推測しています。

解決策は、カルタゴが構築したかった構成を明示的に指定することでした。 (carthage bootstrap --configuration Debug)ああ、もちろん、私のビルドフォルダをきれいにする。

+0

提案していただきありがとうございますが、私は依存症をインストールしたり、カーセージを使用していませんでした。 1つのXcodeプロジェクトで私自身の作成のSwiftフレームワークを持っています。別のXcodeプロジェクトで私自身の作成を素早く適用しています。私は両方のプロジェクトを単一のXcodeワークスペースの中に持っており、アプリケーションによって参照されるフレームワークを持っています。 –

+0

フレームワークとアプリケーションの両方のビルド設定で最適化レベルをチェックしてみてください。 – weissazool

関連する問題