web-dev-qa-db-ja.com

再配置可能なdylib(組み込みフレームワークなど)は、iOS 8.0以降でのみサポートされます(@ rpath / libswift_stdlib_core.dylib)

Xcode 6 Beta 2からXcode Beta 3にアップグレードしたばかりで、プロジェクトをビルドするときに次の警告が表示されます。

ld: warning: relocatable dylibs (e.g. embedded frameworks) are only supported on iOS 8.0 and later (@rpath/libswift_stdlib_core.dylib)

これは警告ですが、現在のセットアップが展開ターゲットであるiOS 7.1では機能しないことを意味しているようです。どのフレームワークが埋め込まれているのかを追跡するにはどうすればよいですか?iOS <8.0の場合、これを修正するにはどうすればよいですか?

28
JuJoDi

これはBeta 3のバグのようです。Apple Engineer on this post

IOS 7.1デバイスでアプリを実行するときにも、この警告が表示されます。

9
vladof81

ターゲットを選択すると、プロジェクトページにそれらが表示されて追加されます:タブ一般->埋め込みバイナリ(そして、それらはビルドフェーズ-> Embed Frameworks)。

Example of embedded frameworks

組み込みフレームワークOSXの場合はXcode 5で使用できましたが、iOSの場合は不可です。

Xcode 6の新機能に関するWWDCセッションでは、iOS 8向けの動的フレームワークが特に約束されていました(デベロッパーセンターがオンラインに戻ったら、誰か引用を追加してください)。これまでのところ、すべてのXcode 6ベータ版で、iOS 7のフレームワークを使用してアプリをコンパイルおよびデバッグすることに問題はありませんでした。

ただし、これは約束されていなかったため、iOS7のフレームワークは信頼できないものです(たとえば、これは後のベータ版では機能しなくなる可能性があります。iOS7のフレームワークが埋め込まれたアプリは拒否される可能性があります)。これにより、彼らが明示的な警告を追加した理由が説明される場合があります。

Xcode 5で行ったようにターゲットからフレームワークを削除して静的ライブラリを使用する以外は、この機能が実際にサポートされていないことがわかった場合、できることは多くありません。または、iOS8のみのルートに移動します。

4
ilya n.

XCode 6.1.1を使用した後、コードをiOS 8以降、iOS7.1.2およびiOS 6.1.3に配置できますが、警告は表示されますが、アプリは3つのOSすべてで完全に正常に動作します

====================== Lucky guy ... PushKitフレームワークを参照した後、プロジェクトがコンパイルに失敗し続けます。

プロジェクトは、Xcodeによって作成された新しいプロジェクトで、プッシュ通知をテストするための3つの新しい関数のみが含まれています。

回避策はPushKitフレームワークを「埋め込み」として配置することですが、私の作業用XcodeプロジェクトはUnity3dから生成されるため、これは良い解決策ではありません。手動で変更を行うと、自動ビルドプロセスが中断します。

1
fatshoe

これは、組み込みバイナリのデプロイメントターゲットの1つがアプリケーションターゲットよりも低いために発生します。埋め込まれたバイナリのビルドターゲットを下げて大丈夫です。

これはxcode 6.1.1のエラーの原因でした

xcgloggerをデプロイメントターゲットiOS 8.0とアプリケーションのデプロイメントターゲット7.0で使用していました。 xcgloggerのデプロイメントターゲットiOS 7.0を設定し、問題を解決しました。

0
user3812138

XCode 6.1.1を使用した後、コードをiOS 8以降、iOS7.1.2およびiOS 6.1.3に配置できますが、警告は表示されますが、アプリは3つのOSすべてで完全に正常に動作します

はい、レビューのためにアプリを提出することはできません。現代のフレームワークを静的ライブラリに変更することで行う必要がありました。

0
Ravi Dalmia

C++フレームワーク(DeepBelief)をプロジェクトに追加した後、このエラーが発生しました。空の.cppファイルをプロジェクトに追加すると修正されました。

私はBeta4を使用していて、DeepBelief githubサイトで答えを見つけました:

XCodeが標準のC++ライブラリをスキップしている可能性があり、それはDeepBelief.frameworkコードで必要です。回避策の1つは、プロジェクトに空の.mmまたは.cppファイルを含めて、XCodeをだまして、 C++プロジェクト。

0
rob

ReactiveCocoa からこのgithubの投稿を読んでください

バグはXCode6 GMにまだ存在しているため、XCode6最終リリース:

まあ、私はSwift OR objc:-[[[[[[[[[[ [[[[[

Apple Extension Programming Guide によると:

含まれているアプリをiOS 7以前を実行しているユーザーが利用できるようにすることはできますが、iOS 8以降を実行しているときは、組み込みフレームワークを安全にリンクするように注意する必要があります。

アプリの拡張機能について話しますが、それを読むと、これが一般的な組み込みフレームワークに適用されることを理解できます。

0
loretoparisi