7

Embedded Binaries が iOS 8 で導入されて以来、私は多くの一般的なコードをフレームワークに移植したいと考えていました。私はそれを行う前に 1 年間待つことに決め、今年、Xcode 7 Beta と iOS 9 で、まさにそれを始めています。

Xcode 7 で Cocoa Touch フレームワーク プロジェクトを開始しました。それを使用可能なフレームワークにコンパイルしたいと考えています。プロジェクトを .framework にコンパイルすることはできますが、いくつか問題があります。つまり、フレームワークは新しいプロジェクトにインポートできないようです (そのために行った手順についてはすぐに説明します)。そのため、私のフレームワークに目に見えるシンボルがあるかどうかはわかりません。

これは、フレームワークを作成するために行ったことです。

  1. フレームワークを Cocoa Touch Framework として作成しました。
  2. ターゲットのビルドフェーズに移動し、ヘッダーに移動し、すべての Swift ファイルを「パブリック」セクションに追加しましたpublic.
  3. プロジェクトをフレームワークとしてアーカイブしようとしました。現在、Xcode 7 Beta 3 には、破損したアーカイブ ファイルを生成するバグ (今日中に報告予定) があるようです。このため、オーガナイザー ウィンドウからフレームワークを取得できませんでした。これを回避するために、Xcode の Run アクションのスキーマを Debug から Release に変更し、ビルドして.framework、プロジェクトのbuild/iphoneos-releaseディレクトリから生成されたものを取得しました。これは簡単なテストだったので、エミュレータ用に生成されたフレームワークは必要ありませんでした。

そして、これは私がフレームワークを新しいプロジェクトに追加しようとしたことです:

  1. 「フレームワーク」グループを作成し(整理目的で)、フレームワークをそこにドラッグし、ファイルをプロジェクトのディレクトリにコピーするかどうかを尋ねられたときに「はい」を選択しました。
  2. ターゲットの設定に移動し、「リンクされたライブラリ」からフレームワークを削除し(そこに自動的に追加されました)、代わりに組み込みバイナリに追加しました。これにより、フレームワークがリンクされたライブラリに再度追加されたため、そこから 2 回削除する必要がありました。リンクされたライブラリにフレームワークを残すと、リンカー エラーが発生します (フレームワークが見つかりません - 理由はわかりませんが、私の問題とは無関係であり、Apple にも報告する必要があると思います)。組み込みバイナリに追加すると、正常にコンパイルされます。
  3. フレームワークをファイルにインポートしようとしました。Xcodeは「そのようなモジュールはありません」と文句を言います。

残念ながら、組み込みフレームワークが登場して約 1 年になるという事実にもかかわらず、このトピックに関する記事はあまり見つかりません。

私の質問は次のとおりです。フレームワークを正しく作成して、Xcode 7 Beta のバグが原因でフレームワークや他の何かが失敗する可能性がありますか? または、組み込みバイナリとして使用するフレームワークを作成する別の手順はありますか? 私はこのライブラリをオープンソースにしたいということをおそらく言及する必要があり.frameworkます。それを使いたい人にプレーンファイルを配布するのはいいことだと思います。

4

1 に答える 1

3

Xcode 7でも同じ問題が発生しました。プロジェクト(フレームワークを含むもの)のビルド設定を編集して解決しました。

Framework Search Pathsフィールドを$(PROJECT_DIR)または .framework ファイルを含むディレクトリへのパスに設定すると、Xcode がモジュールを見つけやすくなります。

于 2015-07-21T14:32:53.927 に答える