iPhone 3GS の最新 iOS 6.1.6 の開発環境を今更 Xcode 7.0.1 に準備する
きっかけ
ひょんなことから手持ちの iPhone3GS, iPhone4 などを活用したくなったので。 旧 OS に長く対応するのは最近のトレンドからも Apple の習わしからも外れているが、あえて挑戦。
準備
とりあえず何も考えずに Xcode を起動してプロジェクトを作成。バージョンは 7.0.1。
iOS シミュレータのデバイスを探すも、一番古いもので iPhone4S。いきなり立ちはだかる壁。
古い Xcode をダウンロードして iOS 6.x の SDK を持ってくる
Xcode5にiOS SDK 7.0と6.1を共存させる(iOS SDK 6.1を追加でインストールする)|めっとぼ
Xcode の過去バージョンをダウンロードする方法 - Qiita Downloads for Apple Developers
上記リンクを参考に Xcode 4.6.3 をダウンロードする。 SDK はコピーできたが、Simulator はコピーの他に設定ファイルの書き換えも必要ぽい?
Xcode 6.1 に iOS Simulator 8.0 を移植する - Qiita
とりあえず sdk 6.1 は認識するようになったので、これで。 やはり OS も 6.1 環境がないと微妙なので、後でやり方を探ってみる。
サンプルコード
プロジェクトの新規作成をしてみたが、Base SDK を 6.1 に切り替えるだけで途端にビルドできなくなる。 6.1 当時のサンプルコードを引っ張ってくるのがよいか、、、
サンプルコード置き場から iOS sdk 4.0 でビルドされた helloworld プロジェクトがあったので、 それを使うことにした。
一通り Xcode でプロパティ値などを設定した上でビルドしてみるとエラーが出る。
iOS9でアプリが起動直後にクラッシュする場合の回避方法 - Qiita
上記と同様、rootViewController が無いために起こるエラーだった。 上記の HelloWorld サンプルコードでは以下のように直す必要があったので修正。
- (void)applicationDidFinishLaunching:(UIApplication *)application { // Set up the view controller MyViewController *aViewController = [[MyViewController alloc] initWithNibName:@"simplefm" bundle:[NSBundle mainBundle]]; self.myViewController = aViewController; [aViewController release]; self.window.rootViewController = [UIViewController new]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque]; // Add the view controller's view as a subview of the window UIView *controllersView = [myViewController view]; [self.window addSubview:controllersView]; [self.window makeKeyAndVisible]; }
ライブラリの管理
生産性ガチアゲなオープンソースiOSライブラリ(終):iOSライブラリ管理の神ツール「CocoaPods」のインストールと使い方 (1/2) - @IT
CocoaPods がよく使われている? とりあえず調べていてすぐ目についたので利用。
データベース
Selection 9: iOSでSQLiteを使う(FMDB)
iOS - 次世代mobile版データベース"Realm"を使ってみた - Qiita
CoreData は扱いにくかったので別の DBMS を検討したい。 FMDB と Realm。Realm のが高機能そうだけど、諸般の事情で FMDB を選択。