Запускаем iOS приложения из консоли на девайсе и симуляторе

Xcode как добавить приложение на iphone. В статье будет кратко описано, как собрать приложение консольными командами и запустить на реальном девайсе и симуляторе без какой-либо надобности открывать xcode для этого. В общем, стоит…

Запускаем iOS приложения из консоли на девайсе и симуляторе

В статье будет кратко описано, как собрать приложение консольными командами и запустить на реальном девайсе и симуляторе без какой-либо надобности открывать xcode для этого.

В общем, стоит начать с того, что в моей компании имеется отдел ios разработки в составе > 10 человек, которые работают над пачкой приложений. Для автоматизации рутинной работы нам пришлось развернуть CI сервер (пока самописный, ввиду особых исторических причин (ну как у всех), планируется миграция на jenkins). К рутинным вещам я отношу — сборку проектов, запуск тестов (если, конечно, вы их пишете), создание ипашек для тестеров и для выкладки в app store. В общем, хотелось чтобы по нажатию кнопочки или по хуку в гите всё это начинало работать. Пока у нас всё работает по нажатию кнопки разработчиком, про гит пока только в планах. В данной статье я только затрону тему компиляции проекта и упаковку его в ipa файла. Функционал запуска проектов на девайсах на стороне CI сервера еще находится в стадии разработки, а вот сам процесс упаковки уже давно в «бою», может кому пригодиться.

  • соберем приложение и запустим на симуляторе
  • соберем ipa и запустим на реальном девайсе
  • соберем ipa для выкладки на маркет
  • немного подэбажим ошибки сборки
  • OS X 10.10.5
  • Xcode 7.1

Перед компиляцией проекта необходимо установить apple doc generator github.com/tomaz/appledoc (там есть описание как установить).
Переходим к скаченному проекту. Корневой проект представляет собой сам ResearchKit framework, само тестовое приложение находится в другом месте, переходим туда:

Пробуем компилировать приложение. Собираем под симулятор, так как для сборки проекта под симулятор не нужны сертификаты/провижен файлы.

Билд падает, так как нет схемы ORKCatalog. Так как схема в оригинальном проекте не была помечена как shared, то после “слива” из гита, xcode еще ничего не знает об этой схеме, чтобы он ее снегирил, нужно просто открыть проект. Поэтому просто открываем проект:

И сразу же закрываем, после наша схема появится, проверить схемы можно через xcodebuild -list. Пробуем собрать снова:

После видим долгожданное ** BUILD SUCCEEDED **. Отлично, всё работает.

Запускаем проект на симуляторе

Компилируем под симулятор, архитектуры могут быть i386/x86_64. Через SYMROOT задаем путь результата сборки:

(Мысли вслух: когда писал статью, компиляция в режиме Release работала, перед публикацией статьи еще раз проверил все шаги и компиляция в этом режиме перестала работать, поэтому собираем в Debug, какие-то из последних коммитов это сломали.)

После успешной сборки мы получили ORKCatalog.app файл в build/Debug-iphonesimulator/. Осталось запустить это на симуляторе. Для этого будем использовать ios-sim утилиту github.com/phonegap/ios-sim. Пользоваться ей достаточно просто.

Получаем список доступных симуляторов:

Из предложенного списка я выбрал ‘iPhone-6-Plus’. Запускаем приложение на нем:

Если всё правильно сделали, то должен запуститься симулятор с приложением (для входа в режим ввода в консоли используйте ctrl + C).

Создание ipa файла и запуск на реальном девайсе

Тут немного сложнее, нам нужен mobileprovision файл для разработки (developer) и наличие сертификата на машине (p12 файл), при этом наличие аккаунта в xcode не нужно. При подписании/упаковки приложений из консоли нет необходимости добавлять аккаунт в xcode, это очень помогает, например, на CI сервере можно держать только p12 файлы.

Будем считать, что на вашей машине есть соответствующий сертификат. После генерируем developer mobileprovision через developer.apple.com в вашем аккаунте и скачиваем на машину (дадим ему название test.mobileprovision, а bundle id будет ru.habrahabr.test). После копируем его в директорию, где его сможет подхватить xcode:

Собираем архив под девайс (это архитектуры arm64/armv7):

Компиляция упадет, так как мы еще не прописали в приложении свой bundle id и не прилинковали mobileprovision, ошибка будет такого вида:

Будем передавать bundle id из консоли + нужно прописать его в Info.plist файле. Также через консоль будем передавать линк на наш mobileprovision. Plist файл находим по пути ORKCatalog/Supporting Files/Info.plist, в котором для ключа CFBundleIdentifier выставляем значение ru.habrahabr.test. Bundle id передаем через ключ со значением нашего ид PRODUCT_BUNDLE_IDENTIFIER=ru.habrahabr.test. Линк на mobileprovision передаем через ключ PROVISIONIG_PROFILE, со значние UUID, который прописан в mobileprovision.

Значение будет подобно 87b0df89-793a-4a0f-92bf-c5f9c35f1405. Снова собираем:

В итоге получим архив build/archive.xcarchive, который осталось упаковать в ipa. В xcode 7 появился новый метод упаковки, им и воспользуемся. Перед этим создадим конфиг файл options.plist с таким содержанием:

Пробуем собирать ipa:

Сборка падает, по логам можно понять, что что-то с entitlements:

По ошибке ясно, что приложение подписываем entitlements, значения в котором не соответствуют значениям в нашем mobileprovision, а именно com.apple.developer.healthkit. Ищем причину. Смотрим каким entitlements подписано приложение:

Видим, что всё ок, за исключением этого:

У нас в mobileprovision нет этой опции, нужно выяснить, откуда это взялось:

Поиск нам выдал ORKCatalog/Supporitng Files/ORKCatalog.entitlements. Смотрим что внутри:

Там только одно значение:

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

У нас есть как минимум два варианта:

1. Просто редактируем существующий entitlements (ORKCatalog/Supporitng Files/ORKCatalog.entitlements) и снова пересобираем (через archive).
2. Без пересборки, сами переподпишем ORKCatalog.app с нужным entitlements.

Выберем первый вариант как более простой. Поэтому из файла ORKCatalog/Supporitng Files/ORKCatalog.entitlements просто удаляем строки:

и снова пересобираем архив:

После создаем ipa:

Видим долгожданное сообщение ** EXPORT SUCCEEDED **. Под build/dev-ipa/ появиться ipa файл, который будем устанавливать на девайс. Устанавливать на девайс будем с помощью ios-deploy github.com/phonegap/ios-deploy. Цепляем девайс к машине, получаем id девайса через:

Деплоим на девайс:

Собираем ipa файл для маркета

Всё тоже самое как для develop версии, только меняем линк на релизный mobileprovision, в options.plist вместо development проставляем app-store (какие еще options можно добавить смотрите в хелпе xcodebuild -help).

Без использования xcode смогли собрать ipa файлы для тестов и на выкладку в app store. Всё это можно легко автоматизировать на CI сервере чтобы облегчить жизнь разработчикам.

iPhone SDK: установка приложений на устройства iPhone для разработки

Этот учебник научит начинающих пользователей iOS SDK, как устанавливать приложения на свои устройства iPhone OS для тестирования и разработки.

Требования к установке приложения:

  • Учетная запись разработчика Apple (бесплатная регистрация)
  • Членство в программе для разработчиков iPhone ($ 99 в год)
  • Устройство для разработки iOS (iPhone, iPodTouch или iPad)

Шаг 1. Войдите на портал инициализации iPhone.

Войдите в свою учетную запись Apple Developer, перейдя по адресу http://developer.apple.com/iphone . Оказавшись там, перейдите на портал инициализации iPhone.

Профиль обеспечения iPhone

Шаг 2: Установите промежуточный сертификат WWDR

Первое, что нам нужно сделать, это загрузить промежуточный сертификат WWDR. Попав на портал, нажмите «Сертификат» на боковой панели, и вы увидите ссылку для загрузки «Промежуточного сертификата WWDR».

Сертификат Apple iPhone WWDR

Загрузите файл и дважды щелкните его, чтобы добавить его в программу Keychain Access на Mac OS.

Шаг 3: Создайте сертификат разработки

Далее нам нужно будет скачать сертификат на разработку. Чтобы получить сертификат разработки, нам нужно будет сгенерировать «Запрос на подпись сертификата» из доступа к брелку.

Откройте программу Keychain Access на вашем Mac. Его можно найти в разделе « Приложения»> «Утилиты»> «Доступ к связке ключей» или просто выполнив поиск «Доступ к связке ключей» с помощью Spotlight.

Open Utilities Keychain Access App

После открытия перейдите в раскрывающееся меню «Доступ к цепочке для ключей» в строке меню и выберите «Ассистент сертификации», а затем «Запросить сертификат у центра сертификации».

Запросить центр сертификации

Появится окно. Заполните окно своей информацией, но оставьте поле «Адрес электронной почты CA» пустым и выберите «Сохранить на диск» из переключателей. Сохраните его в месте, которое легко найти, например на рабочем столе, поскольку вскоре вам потребуется файл для создания сертификата.

Self Sign Сертификат развития iPhone

Вернитесь в раздел «Сертификат» на портале Provisioning Portal и убедитесь, что вы выбрали вкладку «Разработка». Оттуда нажмите «Новый сертификат» и загрузите запрос, который вы сделали на свой рабочий стол. Возможно, вам потребуется обновить страницу через несколько минут, чтобы изменить статус с «Ожидание» на доступный для загрузки. Если вы работаете в качестве члена команды в более крупном проекте, вам может потребоваться, чтобы ваш менеджер одобрил запрос на сертификат.

Надеюсь, все прошло хорошо, и вы смогли создать сертификат. Загрузите сертификат, затем установите его, дважды щелкнув по файлу, или, если открыт доступ к связке ключей, перетащите файл над значком доступа связки ключей в док-станции.

Шаг 4. Создание идентификатора приложения

Далее нам нужен идентификатор приложения. Вернитесь на портал обеспечения и выберите опцию «Идентификаторы приложений» в меню слева.

Существует два различных типа идентификаторов приложений на выбор.

Одним из подходов является создание идентификатора приложения для одного приложения. Это позволит вам включить расширенные функции, такие как покупки в приложении, интеграция с Game Center или push-уведомления. Чтобы сделать этот подход, структурируйте идентификатор пакета следующим образом:

Если вы хотите создать идентификатор приложения для одного приложения, заполните экран как показано:

Приложения на iPhone Создать идентификатор приложения

Второй подход называется идентификатором пакета с подстановочными знаками. Этот подход позволит вам создать идентификатор приложения, который можно будет использовать для нескольких приложений, между которыми вы хотите использовать цепочку для ключей.

Установить приложения на iPhone: имя приложения для iPhone

Шаг 5. Найдите и добавьте UDID своего устройства

Выберите ссылку «Устройства» в левом меню «Портал обеспечения».

Для добавления устройства вам потребуется уникальный идентификатор устройства, также известный как UDID.

Чтобы получить UDID, подключите устройство к iTunes и выберите свое устройство в списке. На вкладке «Сводка» устройства рядом с изображением устройства будет находиться описание «Серийный номер». Нажмите один раз на серийный номер, и он должен измениться на «Идентификатор» или ваш UDID. Скопируйте свой UDID в буфер обмена. (Command + C на Mac / Control + C в Windows)

Приложения на iPhone Получить приложение UDID

Другой подход — просто загрузить одно из множества бесплатных приложений «UDID» в App Store и отправить по электронной почте или скопировать UDID из этого приложения.

Получив UDID, нажмите «Добавить устройство» на вкладке «Устройства» на портале Provisioning Portal. Введите имя в поле «Имя устройства» и введите UDID в «Идентификатор устройства».

Приложения на iPhone Добавить устройство UDID

Шаг 6. Создание и загрузка профиля обеспечения

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

Выберите вкладку «Подготовка» в левом меню. Убедитесь, что выбрана вкладка «Разработка», и нажмите кнопку «Новый профиль».

Я назвал свой новый профиль «Разработчик». В разделе сертификат выберите сертификат разработки, а в разделе «Идентификатор приложения» выберите идентификатор, который мы создали на шаге 2. В разделе «Устройства» выберите все устройства, которые вы собираетесь использовать для разработки.

Нажмите «Отправить», чтобы вернуться на страницу обзора для предоставления. На этой странице, если для статуса установлено значение «в ожидании», вам потребуется обновить браузер, прежде чем вы сможете выбрать «Загрузить». Если вы являетесь членом команды другого пользователя, возможно, вам придется подождать, пока они утвердят ваш запрос на создание сертификата. Загрузите сертификат, чтобы продолжить.

Приложения на iPhone Предоставление профиля выбора

Шаг 7. Установите профиль обеспечения

На этом этапе мы установим профиль на ваше устройство и в Xcode.

Убедитесь, что ваше устройство подключено, и из папки загрузок перетащите Provisioning Profile на значок Xcode.

Приложения на iPhone Загрузить изображение

Затем перейдите в Xcode и откройте органайзер, перейдя в Window> Organizer. Там вы должны увидеть название вашего устройства слева. Нажмите на устройстве, рядом с которым находится зеленая точка, и убедитесь, что оно разрешено использовать для разработки, нажав «Использовать для разработки», если оно появится.

В сводной информации об устройстве вы должны увидеть таблицу «Provisioning». Перетащите профиль обеспечения из папки загрузок в эту папку.

Шаг 8. Настройка параметров сборки

На этом этапе вы создадите приложение для запуска на своем устройстве.

В вашем проекте XCode откройте файл info.plist на панели «Группы и файлы». Заполните значение «Идентификатор пакета» значением, созданным ранее и связанным с идентификатором приложения.

Идентификатор пакета iPhone в PLIST

Наконец, выберите « Проект»> «Изменить настройки проекта» в строке меню XCode или просто щелкните правой кнопкой мыши или нажмите клавишу «Control» на файле проекта, как показано ниже:

Информация о проекте в Xcode

Новое окно должно открыться. Выберите вкладку «Сборка» в этом окне.

Прокрутите вниз до раздела «Подписывание кода» и выберите правильный идентификатор профиля обеспечения из раскрывающегося меню, связанного с устройством iOS.

Шаг 9: запустить на устройстве

Перед сборкой и запуском обязательно выберите «Устройство» из Project> Set Active SDK в строке меню Xcode. Также убедитесь, что вы выбрали правильное устройство в Project> Set Active Executable . Наконец, убедитесь, что ваше устройство iOS включено, подключено к компьютеру, что оно распознается iTunes и что ваш экран не заблокирован.

Теперь вы должны быть готовы собрать, установить и запустить ваше первое приложение на вашем оборудовании iOS! Нажмите значок «Build & Run», и Xcode позаботится обо всем остальном.