読者です 読者をやめる 読者になる 読者になる

ほんとの手

主に開発や仕事のメモクリップ

iPhone 3GS の最新 iOS 6.1.6 の開発環境を今更 Xcode 7.0.1 に準備する

Xcode Mac sdk download previous old tips link development programming iOS iPhone

きっかけ

ひょんなことから手持ちの iPhone3GS, iPhone4 などを活用したくなったので。 旧 OS に長く対応するのは最近のトレンドからも Apple の習わしからも外れているが、あえて挑戦。

準備

f:id:syque:20151021201443p:plain

とりあえず何も考えずに Xcode を起動してプロジェクトを作成。バージョンは 7.0.1。

f:id:syque:20151021201557p:plain

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 Developer Library

サンプルコード置き場から 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 を選択。