Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

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>

を使う

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした