##はじめに
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にはリソースファイルなどが保存されています。
###Bridging-Header
Swiftで書かれたコード内でObjective-Cで書かれた昨日を使うには、<ProjectName>-Bridging-Header.hをプロジェクト内に作り、そこを介してヘッダーを読み込みます。SDKも同様にBriding-Header.hに追加をして読み込みます。
Bridging-Header.hを生成しますか?と聞かれるので"Yes"
RomoSample-Bridging-Header.hが生成されたので、RMChacacter.framework、RMCore.frameworkをインポートします。これでRomoのSDKを利用することができます。他のObjective-Cで書かれたSDKを使いたい場合は同様にインポートすれば使えます。
##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.... -> +"から追加することができます。
"+"を押すと追加できるFrameworkのリストが表示されるので、検索で対象のFrameworkを追加します。
すると、選択したFrameworkが追加されたことを確認できます。
##Architecture対応
iPhoneデバイスのバージョンによっては、使うアーキテクチャが異なってきます。それは32bit/64bitといった具合です。iPhone 5以前は32bit, iPhone 5sから64bitとなっています。
SDKによっては64bit対応がなされていない場合があります。そのため、64bitバイナリが見つかりません。という警告がでる場合があります。
その場合は使用するアーキテクチャを変更することで解決できることがあります。
"Build Settings -> Architectures"で使用するアーキテクチャを設定できます。展開すれば、Debug/Releaseなど細かく設定することも可能です。スタンダードでは"armv7, arm64"になっているので、今回は"armv7"に設定しなおします。
するとエラーが解消され、ビルドすることができるようになります。
##Frammeworkの追加でエラーが発生した場合
@kakipo さんがLibrary not loaded エラー?ここを見直そうのページに書いてくれています。
参考にしてみてください。