LoginSignup
12
13

More than 5 years have passed since last update.

既存のコードを Embedded Framework にする方法

Last updated at Posted at 2017-03-24

概要

Embedded Framework に切り出す作業の手順のメモです

背景

  • 一つのプロジェクトで複数のアプリを作りたい
  • Scheme 切替時にビルドが遅い
  • 共通部分は Framework に切り出したい

方法

  • 1. Target に新しく Cocoa Touch Framework を追加する

スクリーンショット 2017-03-24 13.50.18.png

  • 2. Xcode の左側のファイルツリーから移したいファイルを複数選択して新しい Target のフォルダにドラッグする

スクリーンショット 2017-03-24 13.57.29.png

スクリーンショット 2017-03-24 13.57.51.png

  • 3. 移したファイルを全て選択して右クリック、Show in Finder を選択

スクリーンショット 2017-03-24 13.59.24.png

  • 4. Finder で選択されたファイルを新しい Target のディレクトリに移動する

スクリーンショット 2017-03-24 14.00.27.png

  • 5. Xcode に戻り、選択状態のまま右側ペインの Identity and Type の下の Location のフォルダアイコンをクリックして新しい Target のディレクトリを選択する

スクリーンショット 2017-03-24 13.53.44.png

  • 6. .m と .swift を選択して Xcode の右側の Target Membership から元の Target のチェックを外して新しい Target にチェックを入れる

スクリーンショット 2017-03-24 13.56.21.png

  • 7. 公開したい .h を選択して Xcode の右側の Target Membership で新しい Target にチェックを入れて Public を選択する

スクリーンショット 2017-03-24 14.02.11.png

  • 8. フレームワークを使う Target の Embedded Framework に作成したフレームワークを追加する

スクリーンショット 2017-03-24 14.03.14.png

  • 9. Modulemap を作成する

スクリーンショット 2017-03-24 14.07.18.png

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>

を使う

12
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
13