Pull to refresh

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

Reading time 4 min
Views 52K
Мне было интересно попробовать написать приложение для 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.
Tags:
Hubs:
+15
Comments 34
Comments Comments 34

Articles