概要
Embedded Framework に切り出す作業の手順のメモです
背景
- 一つのプロジェクトで複数のアプリを作りたい
- Scheme 切替時にビルドが遅い
- 共通部分は Framework に切り出したい
方法
-
- Target に新しく Cocoa Touch Framework を追加する
-
- Xcode の左側のファイルツリーから移したいファイルを複数選択して新しい Target のフォルダにドラッグする
-
- 移したファイルを全て選択して右クリック、Show in Finder を選択
-
- Finder で選択されたファイルを新しい Target のディレクトリに移動する
-
- Xcode に戻り、選択状態のまま右側ペインの Identity and Type の下の Location のフォルダアイコンをクリックして新しい Target のディレクトリを選択する
-
- .m と .swift を選択して Xcode の右側の Target Membership から元の Target のチェックを外して新しい Target にチェックを入れる
-
- 公開したい .h を選択して Xcode の右側の Target Membership で新しい Target にチェックを入れて Public を選択する
-
- フレームワークを使う Target の Embedded Framework に作成したフレームワークを追加する
-
- Modulemap を作成する
Shared.modulemap
framework module Shared {
umbrella header "Shared.h"
export *
module * { export * }
}
追加した Framework の Build Settings の Module Map File
に作成したファイルのパス Shared/Shared.modulemap
を指定する
-
- 公開するヘッダを #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>
を使う