Embedded Binaries が iOS 8 で導入されて以来、私は多くの一般的なコードをフレームワークに移植したいと考えていました。私はそれを行う前に 1 年間待つことに決め、今年、Xcode 7 Beta と iOS 9 で、まさにそれを始めています。
Xcode 7 で Cocoa Touch フレームワーク プロジェクトを開始しました。それを使用可能なフレームワークにコンパイルしたいと考えています。プロジェクトを .framework にコンパイルすることはできますが、いくつか問題があります。つまり、フレームワークは新しいプロジェクトにインポートできないようです (そのために行った手順についてはすぐに説明します)。そのため、私のフレームワークに目に見えるシンボルがあるかどうかはわかりません。
これは、フレームワークを作成するために行ったことです。
- フレームワークを Cocoa Touch Framework として作成しました。
- ターゲットのビルドフェーズに移動し、ヘッダーに移動し、すべての Swift ファイルを「パブリック」セクションに追加しました
public
. - プロジェクトをフレームワークとしてアーカイブしようとしました。現在、Xcode 7 Beta 3 には、破損したアーカイブ ファイルを生成するバグ (今日中に報告予定) があるようです。このため、オーガナイザー ウィンドウからフレームワークを取得できませんでした。これを回避するために、Xcode の Run アクションのスキーマを Debug から Release に変更し、ビルドして
.framework
、プロジェクトのbuild/iphoneos-release
ディレクトリから生成されたものを取得しました。これは簡単なテストだったので、エミュレータ用に生成されたフレームワークは必要ありませんでした。
そして、これは私がフレームワークを新しいプロジェクトに追加しようとしたことです:
- 「フレームワーク」グループを作成し(整理目的で)、フレームワークをそこにドラッグし、ファイルをプロジェクトのディレクトリにコピーするかどうかを尋ねられたときに「はい」を選択しました。
- ターゲットの設定に移動し、「リンクされたライブラリ」からフレームワークを削除し(そこに自動的に追加されました)、代わりに組み込みバイナリに追加しました。これにより、フレームワークがリンクされたライブラリに再度追加されたため、そこから 2 回削除する必要がありました。リンクされたライブラリにフレームワークを残すと、リンカー エラーが発生します (フレームワークが見つかりません - 理由はわかりませんが、私の問題とは無関係であり、Apple にも報告する必要があると思います)。組み込みバイナリに追加すると、正常にコンパイルされます。
- フレームワークをファイルにインポートしようとしました。Xcodeは「そのようなモジュールはありません」と文句を言います。
残念ながら、組み込みフレームワークが登場して約 1 年になるという事実にもかかわらず、このトピックに関する記事はあまり見つかりません。
私の質問は次のとおりです。フレームワークを正しく作成して、Xcode 7 Beta のバグが原因でフレームワークや他の何かが失敗する可能性がありますか? または、組み込みバイナリとして使用するフレームワークを作成する別の手順はありますか? 私はこのライブラリをオープンソースにしたいということをおそらく言及する必要があり.framework
ます。それを使いたい人にプレーンファイルを配布するのはいいことだと思います。