1. Предполагаем, что Xcode и iPhoneSDK (версии 2.1 или 2.2) установлены в /Developer.
2. Создаем сертификат (вместо того, который дает эппл официально). Для этого запускаем keychain и создаем сертификат типа Self Signed Root (инструкция по созданию сертификата - http://developer.apple.com).
Запоминаем имя сертификата (пусть это будет MyDeveloperCert).
3. Отключаем профилирование в Xcode, чтобы она не проверяла корректность нашего липового сертификата. Для этого исправляем файл /Developer/Platforms/iPhoneOS.platform/Info.plist следующим образом:
Для 2.1 меняем значения параметров PROVISIONING_PROFILE_ALLOWED и PROVISIONING_PROFILE_REQUIRED на NO.
Для 2.2 добавляем ключи:
- <key>PROVISIONING_PROFILE_ALLOWED</key>
- <string>NO</string>
- <key>PROVISIONING_PROFILE_REQUIRED</key>
- <string>NO</string>
в секцию DefaultProperties.
4. Идем в /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates и копируем папку Applications в, например, Pwned Applications (чтобы не портить оригинальные темплейты).
5. Далее, для каждого темплейта (каталога) из папки Pwned Applications правим следующие файлы:
Info.plist:
Добавляем следующий ключ.
- <key>SignerIdentity</key>
- <string>Apple iPhone OS Application Signing</string>
___PROJECTNAME___.xcodeproj/project.pbxproj:
Исправляем значения параметров (их там несколько) CODE_SIGN_IDENTITY[sdk=iphoneos*] на название нашего сертификата (в нашем примере это MyDeveloperCert).
Такие же операции надо провести над любым официальным проектом программы для iPhoneOS (например над демкой HelloWorld).
6. Устанавливаем на телефон патченный MobileInstallation (например, MobileInstallationPatch через Сидию, репозиторий http://www.iphone.org.hk/apt/).
Для тех, кто хочет понимать что там такого патчится привожу перевод объяснения javacom.
- Исправить E0 на A0
- Для прошивки 2.1 по адресу 0x00009d06.
- В прошивке 2.2 файл не изменился.
Для тех, кто хочет понимать еще больше -- take this fucked IDA and goahead :-)
Для проверки запускаем Xcode, создаем новый проект для iPhone (выбираем тот проект, файлы которого мы изменяли) и собираем его.
Подключаем телефон, Xcode спросит, будем ли мы использовать этот телефон для девелопмента -- отвечаем, что будем.
При сборке проекта для устройства Xcode спросит, можно ли пользоваться сертификатом. После сборки, программа будет установлена на телефоне и загружена. Загрузка программы на телефоне под управлением Xcode занимает большее время, нежели запуск ее без Xcode.
Я сделал, как описано, для SDK 2.1. После обновления на SDK 2.2 пришлось снова править файл /Developer/Platforms/iPhoneOS.platform/Info.plist. В остальном никаких изменений делать не пришлось. Мой проект, сделанный в 2.1 работает в 2.2 нормально и на устройство с 2.2 устанавливается нормально.
Разные версии SDK и прошивки телефона работать вместе не будут.
(c) www.iphones.ru