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

от автора

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


После курения доков и разного рода экспериментов у меня получилось. К счастью однажы я сохранил туториал с одной странички, но откуда, уже вряд ли найду, поэтому это можно считать переводом. Ну и плюс дополнил от себя.

Итак, версии софта, которые я использовал:

  • OS X Mavericks 10.9.2
  • Xcode 5.1.1
  • iOS 6.1.2 iPhone 4
  • iOS 7.0. iPad mini

Итак, что же потребуется для «любознательности»? Всего то:

  1. Заджейлить наше iOS устройство
  2. Подготовить iOS к установке само-подписанных приложений
  3. Подсоединить iOS к Xcode и настроить девайс для разработки
  4. Создать свой сертификат
  5. Настроить Xcode для использования само-подписанного сертификата
  6. Настроить Xcode для отладки на целевом устройстве

Джейлим iOS

Тут в общем всё просто. На данный момент прошивка, поддающаяся взлому 7.0.6. Все остальное можно почерпнуть с сайта evasi0n.
Если нет взломанного устройства — то закрываем данный туториал и платим 99USD Apple.

Подготавливаем наше iOS устройство к установке само-подписанных приложений

Довольно известный факт, что того чтобы ставить само-подписанный приложения (суть взломанные) необходимо установить в Cydia так называемый AppSync. Я ставил AppSync из нашенского русского репозитория smolk — http://smolk.myrepospace.com. Насколько я наблюдал за этим репозиторем, Smolk сам пишет/тырит AppSync и выкладывает его одним из первых, поэтому и рекомендую воспользоваться его трудами.

Если же ничего не получилось, то Xcode выдаст примерно следующее:

Подключаем и настраиваем наше iOS устройство к Xcode

  1. Запускаем Xcode
  2. Цепляем iOS устройство к USB
  3. Открываем Organizer (Window\Organizer)
  4. Выбираем подключенное устройство
  5. Жмем «Use for development»
  6. Скорее всего Xcode попытается подключиться к серверу Apple и проверить наличие аккаунта разработчика, если так — жмем Cancel


Всё, наше устройство теперь при подключении всегда будет распознаваться как использующееся для разработки.

Создаем сертификат разработчика

  1. Запускаем приложение «Keychain Access»
  2. Меню «Certification Assistant > Create a Certificate»
  3. На первой страничке заполним данные и жмем «Continue».

    • Name: iOS Developer
    • Identify Type: Self Signed Root
    • Certification Type: Code Signing
    • Отмечаем галочку «Let me override defaults»

  4. Жмем «Continue» для создания сертификата.
  5. Изменяем «Validity Period» например на 3650 — это 10 лет срока действия, жмем «Continue».
  6. Оставляем поле «Email address» пустым и жмем «Continue».
  7. Оставляем занчения по умолчанию в полях «Key Size» и «Algorithm», жмем «Continue».
  8. Жмем «Continue» на всех следующих страницах, пока не появится окошко с кнопкой «Create».
  9. Жмем «Create» и «Done» соответственно.

Настраиваем Xcode для использования само-подписанного сертификата

  1. Закрываем Xcode, если он открыт.
  2. Открываем 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 
  3. Открываем Xcode
  4. Открываем или создаем проект и идем в настройки проекта, в закладку «Build settings». Выбираем в поле «Code Signing Identity» созданный сертификат:
  5. Около кнопки «Run» выбираем наше подключенное iOS устройтсво.
  6. Жмем «Run» и Xcode транслирует исходники в исполняемый файл и загружает его в устройсво.
  7. Далее Xcode показывает нам следующую ошибку:

    Так и должно быть, потому что отладчик мы еще не настроили, но само приложение можно уже запускать на устройстве.

Настраиваем Xcode для отладки приложения на целевом устройстве

Компилируем ldid

  1. Если не стоит GIT, устанавливаем отсюда
  2. Далее в терминале:
    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 
  3. Создаём файл /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(""" <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0">   <dict>     <key>get-task-allow</key>     <true/>   </dict> </plist>         """)         f.flush()         check_call([ldid_path, '-S' + f.name, obj_path]) 
  4. Делаем ldid и ldid3.py запускаемыми:
    sudo chmod +x /usr/local/bin/ldid sudo chmod +x /usr/local/bin/ldid3.py 

Настраиваем Xcode

  1. Закрываем Xcode, если он открыт.
  2. Обновляем файл конфигурации 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 

  3. Открываем Xcode
  4. Теперь, чтобы включить отладку, нам необходимо добавить ключик "-gta" в командную строку утилиты codesign, предыдущим шагом мы её заменили на наш ldid3.py
  5. Собираем приложение и запускаем н целевом iOS устройстве.

Надеюсь данное руководство поможет начинающим программистам iOS просто и незатейливо попробовать свои силы в написании программ для устройств Apple.

ссылка на оригинал статьи http://habrahabr.ru/post/223675/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *