MacでiOS向けのアプリを作る場合Appleの統合開発環境(IDE)であるXcodeを使って開発すると便利です。そこでjailbreak済みのiPou touch向けアプリを作るための方法を紹介します。
1.公式のガイドを参考にしながら証明書をつくる(Obtaining a Signing Identityのみ行えばよい)
2.jailbreak済みのiPod touchでCydiaを使い、AppSyncをインストールする。しかしデフォルトのリポジトリにはAppSyncはないのでhttp://cydia.hackulo.usを追加してからインストールする
3.SDKSettings.plistを編集する
[plain]
cd /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk
sudo cp SDKSettings.plist SDKSettings.plist.orig
sudo vi SDKSettings.plist
[/plain]
<key>CODE_SIGNING_REQUIRED<key>
<string>YES<string>
という部分と
<key>ENTITLEMENTS_REQUIRED<key>
<string>YES<string>
という部分を見つけそれぞれYESをNOに書き換える。
4.Info.plistを書き換える
[plain]
cd /Developer/Platforms/iPhoneOS.platform/
sudo cp Info.plist Info.plist.orig
sudo vi Info.plist
[/plain]
<key>CODE_SIGN_CONTEXT_CLASS<key>
<string>XCiPhoneOSCodeSignContext<string>
という部分の
<string>XCiPhoneOSCodeSignContext<string>
という行を
<string>XCCodeSignContext<string>
に書き換える。
5.Xcodeのパッチを書く
[plain]
cd ~/Desktop
vi script
[/plain]
[shell]
#!/bin/bash
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
printf "\xc3\x26\x00\x00" >> working
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
[/shell]
上記を貼りつける。
[plain]
chmod 777 script
./script
[/plain]
うまういくと以下のように表示される。
[plain]
$ ./script
223+1 records in
223+1 records out
111648 bytes transferred in 0.002678 secs (41692099 bytes/sec)
[/plain]
これでコードサインが必要ないことをXcodeに伝えた。
6.Xcodeでコードサインしないように設定する
Xcodeを起動し、Project>Edit Project Settingsをクリックし”Buid”タブを開く。
“Code Signing Identity”とその中の”Any iOS”の設定を”Don’t Code Sign”に設定する。
iOSのバージョンに合わせて”iOS Deployment Target”の値を変更する。
これでCode Sign error: The identity ‘iPhone Developer’ doesn’t match any valid certificate/private key pair in the default keychainというエラーはでなくなる。
7.次のコードを実行する
[plain]
mkdir /Developer/iphoneentitlements401
cd /Developer/iphoneentitlements401
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
[/plain]
8.iPod touchをつなぎ、Xcodeを立ち上げる。Window>Organizerをクリックし、デバイスを選択する。そして”Use for development.”をクリックする。provisioning website loginを求められるがcancelをクリックする。
これで実機で動作するようになったはずである。
Error from debugger: The program being debugged is not being run
というエラーがでる場合の対処:
Project > New Build Phase > New Run Script Build Phaseを開き、windowに次のコードをコピペする。
[plain]
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/iphoneentitlements401/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" –entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
[/plain]
参考:
Developing for a Jailbroken iPhone A to Z (iOS 4.0.1) « alexwhittemore.com