自作Universal Frameworkをつくる (Xcode, Objective-C)
iOSの自作Universal Framework作りについて。
Cocoa Touch Frameworkを使用して、独自のFrameworkを作成します。
プロジェクトの作成
Cocoa Touch Framework を選択
コーディング
コーディングします
Public Headerの設定
公開したいヘッダファイルを、[Build Phases] -> [Headers] のPublicにドラッグアンドドロップ。 (今回は Hoge.h)
メインHeaderファイルの設定
また、フレームワークで import されたいヘッダファイルを [プロジェクト名].h ファイルでimportしておく。(FrameworkSample.h で Hoge.hをインポート)
Build設定の変更
実機とシミュレータの両方に対応したFrameworkを生成するための設定。
[Build Settings] -> [Build Active Architecture Only] を Noにしておく。
[Build Settings] -> [Valid Architecture] に “armv7 armv7s arm64 i386 x86_64” を設定。
Universal Framework作成用のターゲットを作成
[File] -> [New] -> [Target] で新しいターゲットを作成する。
[Other] -> [Aggregate] を選択。
名前は FrameworkSampleUniversalとかにしておく。
さっき作ったターゲットの [Build Phases] タブの右上の + から New Run Script Phase を選択。
Gistに上がっているRun Scriptを、Script部分に貼り付け。
https://gist.github.com/cromandini/1a9c4aeab27ca84f5d79#file-universal-framework-sh
Frameworkのビルド
まず実機用のバイナリファイルを生成するため、ターゲットを [FrameworkSample -> iOS Device] にしてBuildする。
[FrameworkSample -> 何らかのシミュレータ] にして、シミュレータ用のバイナリファイルを生成。
最後に[FrameworkSampleUniversal -> 何でもOK] で、2つのバイナリファイルを組み合わせたものを作成。
Frameworkの対応Architectureを確認。
% lipo -info Documents/FrameworkSample/FrameworkSample.framework/FrameworkSample Architectures in the fat file: FrameworkSample are: i386 x86_64 armv7 arm64
作成したFrameworkの使用
作成したFrameworkは、プロジェクト内にコピーして、Embedded Binariesにドラッグアンドドロップする。
ViewController内で FrameworkSample.h をインポートして使用。
HogeクラスのgetHogeは @“HogeHoge"という文字を返すので、ラベルの文字を HogeHogeに変更する。
#import "ViewController.h" #import <FrameworkSample/FrameworkSample.h> @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *label; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; Hoge *hoge = [Hoge alloc]; [_label setText:[hoge getHoge]]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
HogeHogeという文字が表示される。
シミュレータでも実機でもビルド可能。