概要
Embedded Framework に切り出す作業の手順のメモです
背景
- 一つのプロジェクトで複数のアプリを作りたい
- Scheme 切替時にビルドが遅い
- 共通部分は Framework に切り出したい
方法
- 1. Target に新しく Cocoa Touch Framework を追加する
- 2. Xcode の左側のファイルツリーから移したいファイルを複数選択して新しい Target のフォルダにドラッグする
- 3. 移したファイルを全て選択して右クリック、Show in Finder を選択
- 4. Finder で選択されたファイルを新しい Target のディレクトリに移動する
- 5. Xcode に戻り、選択状態のまま右側ペインの Identity and Type の下の Location のフォルダアイコンをクリックして新しい Target のディレクトリを選択する
- 6. .m と .swift を選択して Xcode の右側の Target Membership から元の Target のチェックを外して新しい Target にチェックを入れる
- 7. 公開したい .h を選択して Xcode の右側の Target Membership で新しい Target にチェックを入れて Public を選択する
- 8. フレームワークを使う Target の Embedded Framework に作成したフレームワークを追加する
- 9. Modulemap を作成する
Shared.modulemap
framework module Shared {
umbrella header "Shared.h"
export *
module * { export * }
}
追加した Framework の Build Settings の Module Map File
に作成したファイルのパス Shared/Shared.modulemap
を指定する
- 10. 公開するヘッダを #import する
#import <UIKit/UIKit.h>
//! Project version number for Shared.
FOUNDATION_EXPORT double SharedVersionNumber;
//! Project version string for Shared.
FOUNDATION_EXPORT const unsigned char SharedVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <Shared/PublicHeader.h>
#import <Shared/Preference.h>
framework 内で objc から swift のコードを呼ぶときの注意
#include "FooBar-Swift.h"
ではなく
#include <FooBar/FooBar-Swift.h>
を使う