web-dev-qa-db-ja.com

iOS SDKでアンブレラフレームワークを作成する方法は?

IOS SDKで包括的なフレームワークを作成したいと考えています。私の要件は:

「フレームワークA」というフレームワークがあります。「フレームワークB」という別のフレームワークを作成したいと考えています。 「フレームワークA」を「フレームワークB」にサブフレームワークとして追加したいのですが、「フレームワークB」をプロジェクトにインポートするだけで、「フレームワークA」と「フレームワークB」の両方を使用できます。つまり、「フレームワークB」は「フレームワークA」のラッパーとして機能します。私はAppleから、フレームワークの作成に関する次のリンクを介して読みます:

https://developer.Apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html

しかし、それは包括的フレームワークを作成する方法を公開しません。

アンブレラフレームワークを作成するための段階的な方法を提案してください。

21
Hashim Khan

アンブレラフレームワークを作成することはAppleによって強く推奨されていないことは誰でも知っています。しかしAppleはXcodeを介してそれが可能であるとも述べています。 https://developer.Apple.com/library/mac/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/CreationGuidelines.html# // Apple_ref/doc/uid/20002254-BAJHGGGA

Xcode 5.1でこれらのシンプルなアプローチを使用して、包括的なフレームワークを作成しました。サブフレームワークをアンブレラフレームワークにリンクするには、特別な構成を行う必要があります。これが私のアプローチでした:-

1)Xcode 5.1に実際のStatic iOS Frameworkをここで説明されている方法でインストールします:- https://github.com/kstenerud/iOS-Universal-Framework

Xcodeの新しいオプションを使用して、「静的iOSフレームワーク」を作成できるようになりました。

enter image description here

2)Static iOS Frameworkを作成し、Target-> Build Settings-> Architectures-> Architectures設定を標準アーキテクチャーに変更します。これにより、すべての標準アーキテクチャを持つフレームワークが作成されます。

enter image description here

3)Target-> Build Phase-> Copy Headersのパブリックヘッダーファイルを調整します。ここでヘッダーファイルの可視性を設定できます。

enter image description here

4)Target->Build Phase -> Link Binary With LibrariesのSubFrameworkをUmbrellaFrameworkにリンクします。用途によっては、他の標準フレームワークをリンクする必要がある場合もあります。

enter image description hereenter image description here

5)必要に応じて、Target-> Build Phase-> Copy Bundle Resourcesにバンドルリソースを追加する必要がある場合もあります。

enter image description here

6)-ObjCTarget-> Build Settings->Linking-> Other Linker Flagに追加する必要がある場合もあります。これは、ロードするカテゴリが多い場合や、追加のフレームワークもロードする必要がある場合に、大きなサブフレームワークをロードする必要がある場合があるためです。

enter image description here

7)Copy Fileを使用してTarget-> Build Phases-> +-> New Copy File Build Phaseを追加します。

enter image description here

8)DestinationをFrameworksに変更し、そこにSubFramework.frameworkを追加します。これにより、SubFrameworkがUmbrella Frameworkにコピーされます。

enter image description hereenter image description here

9)デモのために、UmbrellaFrameworkクラスに2つのデモメソッドを追加しました。 1つはアンブレラフレームワークのメソッド呼び出しを示すためのもので、もう1つはsubFrameworkメソッドを呼び出すためのものです。

enter image description hereenter image description here

10)iOS Deviceを選択し、Menu->Product->ArchiveからUmbrellaFrameworkプロジェクトをアーカイブします。これで包括的なフレームワークが作成されます。これですべてです。

enter image description here

11)次に、新しいデモプロジェクトを作成し、それをUmbrellaFrameworkとリンクします。

enter image description here

12)UmbrellaFrameworkヘッダーをインポートして、2つのメソッドを呼び出すだけです。ログウィンドウにHelloメッセージが表示されます。

enter image description here

36

Swiftサブフレームワークを含むUmbrella Frameworkベースのフレームワークを作成するには、以下に記載されているステップバイステップガイドに従ってください: mbrella framework

2
ehrpaulhardt