1. はじめに

2012年8月現在に試して成功した、ipod touch 脱獄アプリ開発(無料)の方法を記載する。
環境はUbuntu12.04。もちろん無料で、Appleに登録せず。


2. ipod touch

自分の環境では、第四世代ipod touch&iOS5.1.1。
Jailbreakしておく。
また、SSHをインストールし、接続可能な状態にしておく。


3. 開発環境

OSはUbuntu12.04。ただし、開発自体はVirtualbox上のMacで行う。

Virutalbox上のMacは調子が悪く、時折、ネット上のファイルがダウンロードできないので、Linuxでファイルをダウンロードして、Nasを介してデータを移転した。NASは、あると、なにかと便利。


4. 開発環境(Virtualbox)

どこからともなく、合法的に、Snow_Leopard_10.6.1-10.6.2_SSE2_SSE3_Intel_AMD_by_Hazard的なisoをダウンロードする。あくまで私的複製の範囲で。公衆送信権侵害もせずに。

Virtualboxを設定する。
・HDD40G(20Gでは絶対足りない!)
・1G memory
・2 cpu
・128 vram
・EFT有効化のチェックをはずす
・SATAで、use host I/O cache
・soundなし

macのisoイメージを仮想CDに入れて、仮想マシンを起動。
細かなインストール方法は略。
但し、以下に注意。
 (intelの場合)
 インストールの際、カスタマイズを選んで
 kamereon boot loaderの最新版(自分の環境ではRC5)とkernelにチェック

OSを10.6.8へアップデート
 →注意、virtualbox上なので、ちょっと手間をかけなければならない
 →まずUpdateをインストール。まだ再起動しない。
 → legacy kernel 10.6.8 and Sleep enabler kextをインストール
 →再起動

Apple Software Installer Update 1.0をインストール
 →これをインストールしないと、xcodeのインストールがunknown errorで失敗する
 →再起動

Xcode3.2.6+iOSSDKをインストール

あと、chromeとかインストールしとくと便利かも。


5. fake code sign

Xcodeでソフトを作っても、アップルに1万円ほど払わないと実機で試せない。
でも、金を払うのは癪なので、払わなくていいようにする。
そのためには、シグネチャ的な情報をとっぱらう。

/Developer/Platforms/iPhoneOS.platform/info.plist
のXCiPhoneOSCodeSignContextという値をすべてXCCodeSignContextに書き換える
or書き換え済みのinfo.plistを落としてきて上書き

Applications→Utilities→Keychain Accessを起動。
Keychain Accessメニューの、Certificate Assistant → Create a Certificateを選択。
NameをXcode Code Signに。
Certificate TypeをCode Signingに。
チェックボックスをチェック(Let me override defaults)
(Continueを押して、356になってるところを3560ぐらいにする。やんなくてもOK)
あとは、Continueを押し続ける。最後の方に警告が出るけど無視。

Xcodeを起動してたら、必ず一度終了する。下のアイコン右クリック→Quitをしておく。
そうしないとinfo.plistの変更が反映されず、以下のBuild時にcom.company〜cound not be foundみたいなエラーが出る。


6. Xcode

Xcodeを起動して、View-vased Applicationを作る。

Projectメニューの Edit Project Settingsを選択し、Buildタブを選択する。
Code SigningセクションのCode Signing Identityの値を、さっき作ったXcode Code Signにする。

Buildする
→事前に左のドロップボックスでDeviceとReleaseが選択されてることを確認
→確認ダイアログが出るが、適当にAllowボタンを押して、先にすすめる。


左のツリーの、Productsを右クリック→Reveal in fonderを選択して、ビルドしたフォルダの場所を確かめておく。

7. ipod touchへのアップロード

fugu(SSHのGUIフロントエンド?)をインストール
ipod touchへrootでSSH接続

さっき調べておいたビルド後にできたプロジェクト名の付いたフォルダをアップロードする
 →ipod touch4+iOS5.1.1の場合、/var/stash/Applications.〜/
 →ビルドして出来たプロジェクト名のついたファイルっぽいのは、フォルダであることに注意。当初ファイルかと思ったわ。
  →しかもMacOS上では〜.appというフォルダ名の.appの部分が省略されて表示されてない。どんな仕様やねん。

fuguでアップロードしたフォルダ(プロジェクト名.app)を開き、実行ファイルを右クリック→GetInfoしてパーミッションを755に。

ipod touchをrespringする(respringするアプリでやると簡単。よーわからんならipodを再起動してもいけるかも)。

起動確認


8. 余談

ldidは使わない。iOSやXcodeの古いバージョンのときはldid使う方法があったみたいだが、自分の環境ではエラーが出てうまく行かない。
例えば、ldid.cpp(582): _assert(0:WEXITSTATUS(status) == 0)みたいなエラーとか。


linux環境上でクロスコンパイル環境を整える方法もあるが、makeでエラーがでると、すごい面倒。なんだかんだ言って、virtualboxでmac動かす上記の方法が確実。