Обычно для того чтобы протестировать приложение на устройстве необходимо иметь регистрацию на сайте разработчиков, что стоит около 99 долларов в год. Для тех, кто желает изучать безопасность IOS-приложений необходимо иметь возможность запускать приложения на устройстве, чтобы проводить тесты.
Автор: Пратик Джианчандани (Prateek Gianchandani)
Обычно для того чтобы протестировать приложение на устройстве необходимо иметь регистрацию на сайте разработчиков, что стоит около 99 долларов в год. Для тех, кто желает изучать безопасность IOS-приложений необходимо иметь возможность запускать приложения на устройстве, чтобы проводить тесты. Возможно, некоторым людям, которые не желают публиковать свои творения в магазине приложений, нет особого смысла платить по 99 долларов каждый год. В этой статье мы рассмотрим способы компиляции и установки приложений на джейлбрейковом устройстве без использования учетной записи разработчика. Затем в следующей статье мы рассмотрим реализацию method swizzling (и других техник) при помощи Cycript.
В наших экспериментах мы будем использовать Xcode 4.5.2 на платформе IOS 5.1. Возможно, и на других версиях Xcode и IOS эти техники также буду рабочими. Если у вас возникнут какие-либо трудности с запуском приложений на устройстве, напишите об этом в комментариях.
Первым делом необходимо установить самоподписанный сертификат. Этот сертификат будет использоваться для подписи приложений, которые мы будем запускать на устройстве.
Откройте приложение Keychain Access. Выберите в меню Keychain Access –> Certificate Assistant –> Create a Certificate.
Рисунок 1: Для создания сертификата выбираем соответствующий пункт меню в приложении Keychain Access
Укажите имя сертификата, тип сертификата (необходимо выбрать тип Code Signing) и снимите флажок Let me Override defaults. Далее кликните на кнопку Create, а затем на Continue.
Рисунок 2: Установка параметров для нового сертификата
Появляется окно с сообщением о том, что сертификат успешно создан.
Рисунок 3: Окно с сообщением об успешном создании сертификата
Теперь скопируем файл Info.plist из папки /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist на Рабочий стол, поскольку мы хотим внести изменения, но не можем сделать этого в первоначальном файле. Собственно, для этого мы и проделываем этот трюк: копируем на Рабочий стол, редактируем файл и кладем файл обратно.
Рисунок 4: Выполнение команды для копирования файла Info.plist на рабочий стол
Открываем файл.
Рисунок 5: Открытие файла Info.plist, находящегося на рабочем столе
Замените все значения XCiPhoneOSCodeSignContext на XCCodeSignContext и сохраните файл. Теперь ваш файл должен выглядеть так.
Рисунок 6: Обновленный файл с отредактированными значениями некоторых параметров
Теперь скопируйте этот файл туда, откуда вы его взяли (для этого необходимо владеть соответствующими правами доступа). Я использовал команду sudo cp /Users/prateekgianchandani/Desktop/Info.plist/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist
Рисунок 7: Копирования обновленного файла в первоначальное месторасположение
Теперь создадим простейший проект в Xcode. Откройте Xcode, кликните на Create a new Xcode Project, а затем выберите Single View Application.
Рисунок 8: Создание проекта в Xcode
Дайте имя проекту (например, SelfSignedApp), затем кликните Next, а затем кликните на Create.
Рисунок 9: Параметры нового проекта в Xcode
Поскольку мы будем запускать приложение на платформе IOS 5.1, мы должны убедиться, что значение параметра IOS Deployment target соответствует версии платформы. Кликните на имя проекта в Project Navigator (в верхнем левом углу), выберите проект, а затем внутри вкладки Info установите в параметр IOS Deployment target значение 5.1.
Рисунок 10: Выставление параметра IOS Deployment target
Поскольку IOS 5.1 не поддерживает функцию Autolayout для приложений с storyboard, необходимо снять соответствующий флажок.
Рисунок 11: Снятие флажка Use Autolayout
Теперь перебросьте текстовую метку (label) на storyboard и напишите в метке какой-нибудь текст.
Рисунок 12: Создание простейшей текстовой метки
Теперь в Xcode необходимо подписать наше приложение при помощи ранее созданного сертификата. Для этого кликните на имени проекта в Project Navigator (в левом верхнем углу), выберите проект, а затем внутри вкладки Build Settings выберите сертификат, который мы создали ранее. Если сертификат не показывается в выпадающем меню, попробуйте заново открыть проект.
Рисунок 13: Привязка сертификата к проекту
Теперь необходимо выбрать устройство, на котором вы будете запускать приложение. Если по каким-то причинам устройство не показывается в списке, нужно зайти в Organizer –> Devices –> Ваше устройство и кликнуть на Use for development.
Рисунок 14: Выбор устройства, на котором будет запущено приложение
После выбора устройства кликните на кнопку Run, после чего появится предупреждение (см. рисунок ниже). Кликните на Always Allow. У вас может возникнуть ошибка на устройстве или в Xcode, однако приложение будет установлено. Просто отключите устройство от компьютера, закройте приложение и запустите его снова. Приложение запустится без каких-либо проблем.
Рисунок 15: Окно с предупреждением, появляющееся во время запуска приложения
Существуют и другие способы запуска приложения на устройстве. После компиляции будет создан файл с расширением .app в соответствующей директории Xcode. По умолчанию билд хранится в папке /Users/$[YOUR_USER_NAME]/Library/Developer/Xcode/DerivedData/$[YOUR_APP_NAME_APP_ID]/Build/Products/Debug-iphoneos/.
В моем случае в билд хранится в папке /Users/prateekgianchandani/Library/Developer/Xcode/DerivedData/SelfSignedApp-bfzixtyoynrxxlgigskifizrfqqw/Build/Products/Debug-iphoneos/.
Скопируйте файл с расширением .app на Рабочий стол при помощи следующей команды.
mv /Users/$[YOUR_USER_NAME]/Library/Developer/Xcode/DerivedData/$[YOUR_APP_NAME_APP_ID]/Build/Products/Debug-iphoneos/SelfSignedApp.app /Users/$[YOUR_USER_NAME]/Desktop/
Рисунок 16: Копирование билда приложения на Рабочий стол
Теперь создайте папку с именем Payload, положите в нее файл SelfSigned.app, заархивируйте папку (первоначально у архива будет имя Payload.zip) и переименуйте файл в SelfSigned.ipa. Далее мы увидим, что файл .ipa представляет собой хранилище файлов приложения.
После создание файл .ipa его можно установить на устройство двумя способами. Во-первых, можно просто переместить ipa-файл в раздел приложений в iTunes, и далее использовать iTunes для установки приложения на устройство.
Во-вторых, можно загрузить ipa-файл на устройство при помощи sftp, а затем установить приложение, используя утилиту installipa. Утилиту installipa можно загрузить сразу на устройство при помощи Cydia.
Загрузите файл на устройство, используя sftp.
Рисунок 17: Загрузка файла .ipa на устройство
Затем подключитесь к устройству через ssh и установите приложение при помощи installipa.
Рисунок 18: Установка приложения на устройство
После этого приложение будет установлено на устройство. Возможно, для корректной работы приложения, необходимо перезагрузить или сделать респринг устройства.
Заключение
В этой статье мы рассмотрели установку собственных приложений на устройства без помощи валидного сертификата разработчика. В следующей статье мы будем использовать эти техники для установки наших собственных приложений, а затем будем тестировать их.