Тестируем iOS приложения без Apple Developer Program Membership

Мне было интересно попробовать написать приложение для iOS, чисто в познавательных целях, но 99USD платить Apple за «любознательность» не очень то и хотелось. Не отчаивайтесь, для таких как мы есть способы и запустить приложение и отладить его на целевом устройстве.bf94e969b443e61596abddb6c1396ae3.pngПосле курения доков и разного рода экспериментов у меня получилось. К счастью однажы я сохранил туториал с одной странички, но откуда, уже вряд ли найду, поэтому это можно считать переводом. Ну и плюс дополнил от себя.Итак, версии софта, которые я использовал:

OS X Mavericks 10.9.2 Xcode 5.1.1 iOS 6.1.2 iPhone 4 iOS 7.0. iPad mini Итак, что же потребуется для «любознательности»? Всего то:

Заджейлить наше iOS устройство Подготовить iOS к установке само-подписанных приложений Подсоединить iOS к Xcode и настроить девайс для разработки Создать свой сертификат Настроить Xcode для использования само-подписанного сертификата Настроить Xcode для отладки на целевом устройстве Джейлим iOSТут в общем всё просто. На данный момент прошивка, поддающаяся взлому 7.0.6. Все остальное можно почерпнуть с сайта evasi0n.Если нет взломанного устройства — то закрываем данный туториал и платим 99USD Apple.Подготавливаем наше iOS устройство к установке само-подписанных приложений Довольно известный факт, что того чтобы ставить само-подписанный приложения (суть взломанные) необходимо установить в Cydia так называемый AppSync. Я ставил AppSync из нашенского русского репозитория smolk — http://smolk.myrepospace.com. Насколько я наблюдал за этим репозиторем, Smolk сам пишет/тырит AppSync и выкладывает его одним из первых, поэтому и рекомендую воспользоваться его трудами.Если же ничего не получилось, то Xcode выдаст примерно следующее: 622021fde3d1fd19cf90d32d64964192.png

Подключаем и настраиваем наше iOS устройство к Xcode Запускаем Xcode Цепляем iOS устройство к USB Открываем Organizer (Window\Organizer) Выбираем подключенное устройство Жмем «Use for development» Скорее всего Xcode попытается подключиться к серверу Apple и проверить наличие аккаунта разработчика, если так — жмем Cancel ef969a3094d194f6e1f79c3faa0558c4.jpgВсё, наше устройство теперь при подключении всегда будет распознаваться как использующееся для разработки.Создаем сертификат разработчика Запускаем приложение «Keychain Access» Меню «Certification Assistant > Create a Certificate»98ad96c7f681c14f17a948220bd079b5.png На первой страничке заполним данные и жмем «Continue».ebecbe0b18b86ab495a1efda4a0656af.pngName: iOS Developer Identify Type: Self Signed Root Certification Type: Code Signing Отмечаем галочку «Let me override defaults» Жмем «Continue» для создания сертификата. Изменяем «Validity Period» например на 3650 — это 10 лет срока действия, жмем «Continue». Оставляем поле «Email address» пустым и жмем «Continue». Оставляем занчения по умолчанию в полях «Key Size» и «Algorithm», жмем «Continue». Жмем «Continue» на всех следующих страницах, пока не появится окошко с кнопкой «Create». Жмем «Create» и «Done» соответственно. Настраиваем Xcode для использования само-подписанного сертификата Закрываем Xcode, если он открыт. Открываем Terminal cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform # create copy of Info.plist sudo cp -p Info.plist Info.plist.orig # convert to editable xml format sudo plutil -convert xml1 ./Info.plist # replace each occurrence of XCiPhoneOSCodeSignContext with XCCodeSignContext in Info.plist sudo sed -i .bkup 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/g' ./Info.plist Открываем Xcode Открываем или создаем проект и идем в настройки проекта, в закладку «Build settings». Выбираем в поле «Code Signing Identity» созданный сертификат: f7f1e39d1200a767a55c02700dcf26b2.png Около кнопки «Run» выбираем наше подключенное iOS устройтсво. Жмем «Run» и Xcode транслирует исходники в исполняемый файл и загружает его в устройсво. Далее Xcode показывает нам следующую ошибку: 4246f5fb74fd6e480901600dca1ff3ae.pngТак и должно быть, потому что отладчик мы еще не настроили, но само приложение можно уже запускать на устройстве. Настраиваем Xcode для отладки приложения на целевом устройстве Компилируем ldid Если не стоит GIT, устанавливаем отсюда Далее в терминале: cd ~/Documents git clone git://git.saurik.com/ldid.git cd ldid git clone git://git.saurik.com/minimal.git ./make.sh sudo mkdir /usr/local/bin sudo cp ldid /usr/local/bin Создаём файл /usb/local/bin/ldid3.py с содержимым: #!/usr/bin/env python

from sys import argv from subprocess import check_call from os.path import basename, dirname, splitext, join from tempfile import NamedTemporaryFile

app = argv[-1] ldid_path = join (dirname (__file__), 'ldid') obj_path = join (app, splitext (basename (app))[0])

if '-gta' not in argv: check_call ([ldid_path, '-S', obj_path]) else: with NamedTemporaryFile ('w+b', 0) as f: f.write (»« get-task-allow »«) f.flush () check_call ([ldid_path, '-S' + f.name, obj_path]) Делаем ldid и ldid3.py запускаемыми: sudo chmod +x /usr/local/bin/ldid sudo chmod +x /usr/local/bin/ldid3.py Настраиваем Xcode Закрываем Xcode, если он открыт. Обновляем файл конфигурации iPhoneCodeSign.xcspec, для этого в терминале: cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications # create a backup copy of iPhoneCodeSign.xcspec sudo cp -p iPhoneCodeSign.xcspec iPhoneCodeSign.xcspec.orig # convert to editable xml format sudo plutil -convert xml1 iPhoneCodeSign.xcspec # replace codesign with /usr/local/bin/ldid3.py sudo sed -i .bkup 's/codesign/\/usr\/local\/bin\/ldid3.py/g' iPhoneCodeSign.xcspec Открываем Xcode Теперь, чтобы включить отладку, нам необходимо добавить ключик »-gta» в командную строку утилиты codesign, предыдущим шагом мы её заменили на наш ldid3.py45a69e525dbc0896275038f3be75ee11.png Собираем приложение и запускаем н целевом iOS устройстве. Надеюсь данное руководство поможет начинающим программистам iOS просто и незатейливо попробовать свои силы в написании программ для устройств Apple.

© Habrahabr.ru