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

в 18:35, , рубрики: mac os x, xcode

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

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

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

  • 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 приложения без Apple Developer Program Membership

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

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

Тестируем iOS приложения без Apple Developer Program Membership
Всё, наше устройство теперь при подключении всегда будет распознаваться как использующееся для разработки.

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

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

    • 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» созданный сертификат:
    Тестируем iOS приложения без Apple Developer Program Membership
  5. Около кнопки «Run» выбираем наше подключенное iOS устройтсво.
  6. Жмем «Run» и Xcode транслирует исходники в исполняемый файл и загружает его в устройсво.
  7. Далее Xcode показывает нам следующую ошибку:
    Тестируем iOS приложения без Apple Developer Program Membership
    Так и должно быть, потому что отладчик мы еще не настроили, но само приложение можно уже запускать на устройстве.

Настраиваем 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
    Тестируем iOS приложения без Apple Developer Program Membership
  5. Собираем приложение и запускаем н целевом iOS устройстве.

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

Автор: mefikru

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js