9VAeきゅうべえiPad版がだいぶ出来上がってきた。
綺麗なiPhone/iPadアプリを作るのは、初心者の私には難しいので、iPhone/iPad用9VAeを作るプロジェクトを公開し、誰でも、9VAeきゅうべえアプリを自分で作れるようにしようと考えている。
そのため、9VAeライブラリの作り方を調べた。
iPhoneシミュレータ用と実機用のライブラリは違う
新規プロジェクトからライブラリを作るのは簡単だったが、ビルドした時のライブラリがどこにできるかが最初わからなかかった。これは、設定を変更すれば、プロジェクト内部に出力できるみたいだ。
次に、作成したライブラリを使うと、シミュレータでは動作するが、実機では動作しないという症状になった。これは、シミュレータMacはインテルでCPUが違うので当然か。このあたりを、もくもく会で、サンフランシスコ在住のプログラマーから教えてもらった。いろんな人の知恵を借りてiPad版を作っている。
これにどう対応するか調べてみると、lipo というコマンドを使ってライブラリをまとめることができるみたいだ。以下の記事を参照
ただ、アプリストアに申請する時に、シミュレータ用のコードが含まれていると拒否されるとの情報もある。
とはいえ、ダウンロードしたプロジェクトを実行した時にリンクエラーが出るのは避けたいので、1本の実機、シミュレータ兼用ライブラリを作ることにした。
Run Script を使って lipo を実行し複数のライブラリを一本化
XCodeのRun Scriptを試しに触ってみる - woshidan's loose leaf
を参考にする。
ライブラリプロジェクト> Build Phases > + >New Run Script Phases
Run Script行が追加されるので、以下の行を追加すると、シミュレータ用デバッグと、実機用の両方が入ったライブラリができた。
lipo -output libqvaeLib.a -create $BUILD_DIR/Release-iphoneos/libqvaeLib.a $BUILD_DIR/Release-iphonesimulator/libqvaeLib.a
この兼用ライブラリ以外に、デバッグ、実機単独のライブラリもプロジェクトに入れておくことにする。下は xcodeの設定画面