問題タブ [embedded-binary]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2807 参照

ios - 組み込みバイナリとして使用する Xcode 7 (ベータ 3) を使用した Swift フレームワークの構築

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ます。それを使いたい人にプレーンファイルを配布するのはいいことだと思います。