LoginSignup
19
21

More than 5 years have passed since last update.

SwiftプロジェクトでObjective-CのSDKやFrameworkを利用する手順と注意点

Last updated at Posted at 2015-03-14

はじめに

SwiftでObjective-Cで書かれたSDKやソースコードを利用することができます。プロジェクト内で両者を共存させることも可能です。今回、Swiftプロジェクト内でObjectiv-CのSDKをいくつか使おうとした時に、読み込みやビルドでエラーが出ることがあったので、その時の対処法について。

今回は、Romo SDKを例にとってみます。

SwiftプロジェクトでObjective-CのSDKを利用する

SDKの追加

まずは、Swiftプロジェクトに使用するSDKを追加してみます。追加するためには、"File -> Add files to..."から対象のファイルを追加します。
今回は、ダウンロードしてきたファイルからRMChacacter.framework、RMCharacter.bundle、RMCore.frameworkを選択して追加します。bundleにはリソースファイルなどが保存されています。

Screen Shot 2015-03-14 at 9.30.03 PM.png

Bridging-Header

Swiftで書かれたコード内でObjective-Cで書かれた昨日を使うには、<ProjectName>-Bridging-Header.hをプロジェクト内に作り、そこを介してヘッダーを読み込みます。SDKも同様にBriding-Header.hに追加をして読み込みます。

Screen Shot 2015-03-14 at 9.34.46 PM.png

Bridging-Header.hを生成しますか?と聞かれるので"Yes"

Screen Shot 2015-03-14 at 9.37.00 PM.png

RomoSample-Bridging-Header.hが生成されたので、RMChacacter.framework、RMCore.frameworkをインポートします。これでRomoのSDKを利用することができます。他のObjective-Cで書かれたSDKを使いたい場合は同様にインポートすれば使えます。

Screen Shot 2015-03-15 at 3.48.42 AM.png

SDKで使用されるFrameworkの追加

SDKを使う際にFrameworkを利用することがあります。ソーシャル系のFrameworkでは、Social.framework, Security.frameworkを利用します。RomoではSDKを使うにあたって、いくつかのFrameworkが利用されます。

RMCore.framework
- CoreMotion.framework
- ExternalAccessory.framework

RMCharacter.framework, RMCharacter.bundle
- AVFoundation.framework
- QuartzCore.framework

Frameworkの追加は"Build Phases -> Link Binary With.... -> +"から追加することができます。

Screen Shot 2015-03-14 at 9.30.23 PM.png

"+"を押すと追加できるFrameworkのリストが表示されるので、検索で対象のFrameworkを追加します。

Screen Shot 2015-03-14 at 9.31.55 PM.png

すると、選択したFrameworkが追加されたことを確認できます。

Architecture対応

iPhoneデバイスのバージョンによっては、使うアーキテクチャが異なってきます。それは32bit/64bitといった具合です。iPhone 5以前は32bit, iPhone 5sから64bitとなっています。

SDKによっては64bit対応がなされていない場合があります。そのため、64bitバイナリが見つかりません。という警告がでる場合があります。

その場合は使用するアーキテクチャを変更することで解決できることがあります。

Screen Shot 2015-03-14 at 9.51.21 PM.png

"Build Settings -> Architectures"で使用するアーキテクチャを設定できます。展開すれば、Debug/Releaseなど細かく設定することも可能です。スタンダードでは"armv7, arm64"になっているので、今回は"armv7"に設定しなおします。

Screen Shot 2015-03-14 at 9.52.28 PM.png

するとエラーが解消され、ビルドすることができるようになります。

Frammeworkの追加でエラーが発生した場合

@kakipo さんがLibrary not loaded エラー?ここを見直そうのページに書いてくれています。
参考にしてみてください。

19
21
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
19
21