web-dev-qa-db-ja.com

iOSフレームワークに埋め込まれたバイナリ

そのビデオに示されているように、Xcode用のiOSフレームワークを作成することができました:-

https://youtu.be/86cPaa3FrRg?t=4m55s

5:00に、彼らはフレームワークを埋め込みバイナリに追加する必要があると言います。 Embeded Binariesに追加すると、機能します。

埋め込みバイナリにGoogleAds.frameworkを追加する必要はありません。埋め込みバイナリへの追加は、Googleのソリューションと比較して少し「ハッキー」に見えます。したがって、このチュートリアルにはいくつかのステップが欠けていると思います。

私の質問は、Embed Binariesに追加せずに機能するフレームワークを作成するにはどうすればよいですか?

23
Tema

tl; drどちらもフレームワークですが、タイプが異なります。


「フレームワーク」という用語はあいまいです。 OSXでは、パッケージ化されたダイナミックライブラリを意味します(つまり、.dylib、ヘッダー、その他)。ただし、iOS 8以前は、ユーザーはダイナミックライブラリを作成できなかったため、パッケージ化された静的ライブラリを提供するために「静的フレームワーク」が発明されました(つまり、.a、ヘッダー、その他)。

作成したフレームワークを組み込みバイナリとしてアプリにパッケージ化する必要がある場合は、動的フレームワークのように聞こえますが、Google広告がそうでない場合は、静的フレームワークであると思われます。すでにアプリのバイナリにリンクされているため、埋め込む必要はありません。

静的フレームワークの作成方法を知りたい場合は、 ここ 、またはGoogleの「ios静的フレームワーク」を開始してください。

12
trojanfoe

IOS 8より前は、開発者は、Appleのフレームワークのディレクトリ構造を模倣することにより、静的ライブラリと一緒に石畳にされたサポートされていないフレームワークを出荷していました。それらは機能しましたが、構築するのが面倒で、 静的 -動的ではない-ライブラリでした。

IOS 8以降、AppleはXcodeでのサードパーティの動的フレームワークの構築を公式にサポートしています。これらのタイプのフレームワークはコード署名されており、アプリの埋め込みバイナリに配置する必要があります。それらは埋め込まれたバイナリに配置できませんが、デバイスで実行しようとすると例外が発生し、アプリがクラッシュします。

長期的には、公式のフレームワークサポートが利用可能になったため、GoogleAds.frameworkのようなハッキングされたフレームワークはなくなると思います。これは、EmbeddedBinariesにフレームワークを配置することに慣れる必要があることを意味します。

コードでiOS7をサポートする必要がない限り(この場合、公式フレームワークはiOS 8でのみ機能するため、オプションではありません)、現時点ではサポートされていないタイプのフレームワークを作成しないことをお勧めします。

9
emaloney