LoginSignup
14
14

More than 5 years have passed since last update.

独自Frameworkの作り方(&RubyMotionでのテスト)

Posted at

RubyMotionを使っていてcocoapodsではソフト的にうまく組み込めないものがあったので、iOSで独自のFrameworkを作成して組み込む事にしてみます。

iOS-Universal-Frameworkを使った方法です。

iOS-Universal-Frameworkの組み込み

git clone https://github.com/kstenerud/iOS-Universal-Framework.git

cd iOS-Universal-Framework/
cd cd Real\ Framework/
./install.sh

Xcodeの場所を聞かれてテンプレートのインストールディレクトリーを確認して[y]を押します。(基本的には/Users/[ユーザー名]/Library/Developer/Xcode/Templates/Framework & Library)に入るようです。

Xcodeを立ち上げるとFramework&Libraryに「Static iOS Framework」が追加されています。これを利用します。

スクリーンショット_2014_01_15_23_04.jpg

実際にオレオレFrameworkを作ってみる

JSONを扱うライブラリーは数多くありますが、(個人的な都合で)JSONKitをFramework化してみます。

1.プロジェクトを作成

iOS-Universal-Frameworkが組み込み済みであれば「Static iOS Framework」を選択し、JSONKitという名前でプロジェクトを作成します。

JSONKit_xcodeproj.jpg

2.JSONKitのファイル取得

JSONKitからファイルをダウンロードします。

git clone https://github.com/johnezang/JSONKit.git

で取得したJSONKit.hとJSONKit.mをプロジェクトの中のファイルと置き換えます。別の名前で作ってしまった場合は、元のファイルをサクッとプロジェクトか取り除いてJSONKitのファイルを追加してください。

3.プロジェクトの設定

プロジェクトのBuildPhasesを選択します。

JSONKit.mのコンパイルオプションに「-fno-objc-arc」を追加します。
また、CopyHeadersのPublicにJSONKit.hを追加します。(これはJSONKitがARCに対応していないため行う作業です)

JSONKit_xcodeproj.jpg

4.エラー修正

JSONKitはXCode5でコンパイルするとエラーが2つ表示されますが、ポップアップで表示されたアドバイスにしたがって「Fix-it」を選択します。

JSONKit_xcodeproj_—_JSONKit_m.jpg

5.コンパイル

Products->Archiveを選択すると、JSONKit.fremworkが作成されます。これでiOS用のframeworkの完成です。

6.組み込み

6-1 RubyMotionプロジェクト作成

motion create JSONTest
mkdir JSONTest/vendor

作成したvendorディレクトリーの中にJSONKit.frameworkを入れます

6-2 Rakefile書き換え

Rakefileにframeworkの組み込みを行います。

Rakefile
Motion::Project::App.setup do |app|
  # Use `rake config' to see complete project settings.
  app.name = 'JSONTest'

  app.vendor_project(
    'vendor/JSONKit.framework',
    :static,
    :products => ['JSONKit'],
    :headers_dir => 'Headers'
  )
end

6-3 テスト

組み込む程でもないのでrakeでシュミレーターを実行し、コマンドプロンプトよりテストを行います。

(main)> ['one'=>1,'two'=>2,'three'=>3].JSONData
=> [{"one":1,"two":2,"three":3}]

ArrayやHashに対してJSONDataを呼ぶとJSON形式でデータが取得できればOKです。

ダメな場合はJSONDataを呼ぶと「undefined Method」が返ってきます。

JSONTest[5159:80b] undefined method JSONData' for [...]:Array (NoMethodError)
=> #<NoMethodError: undefined method
JSONData' for [...]:Array>

14
14
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
14
14