Provisioning ios часть-1.
Перевод первой части DEMYSTIFYING IOS PROVISIONING PART 1: PROFILES, CERTIFICATES, AND XCODE (OH MY!)
Разрушая мифы iOS Provisioning, часть 1: Profiles, Certificates, и Xcode (неужели?!)
Если вы работали достаточно долго с платформой Apple (iOS, watchOS, tvOS, or macOS), то скорее всего вы столкнулись с этим “загадочным” процессом как provisioning. Это установка приложения на устройства напрямую или через AppStore (в процессе разработки или публикации).
В этой серии статей я хочу объяснить, что такое provisioning, как это работает в больших командах, виды профилей и сертификатов и как все подключить в XCode.
Первая статья посвящена сертификатами и профилям, а также почему XCode не самый лучший способ управлять профилями.
Зачем нужен provisioning?
Provisioning профиль определяет можно ли устанавливать приложение на конкретном устройстве, какие iOS сервисы будут доступны в приложении (iCloud, Keychain, Push Notifications и т.д.) И дополнительные данные, такие как - прямая установка приложения на устройство или через AppStore.
Есть несколько видов профилей, в зависимости от назначения приложения:
- Development Profile: установка приложения на зарегистрированном устройстве в debug режиме
- App Store Profile: распространение готового приложения через AppStore
- In-house Distribution Profile: распространение приложения вне AppStore и на не зарегистированных устройствах, доступно для Enterprise аккаунта
- Ad-hoc Profile: установка и распространение приложения на зарегистрированных устройствах
Все профили создаются на год (за исключением In-house Distribution Profile), и должны обновляться ежегодно чтобы распространять приложения на устройства или в AppStore.
Каждый профиль регистрируется с сертификатом, пара “профиль-сертификат” используется для подписи приложения и проверки при установке.
Что такое сертификат?
Сертификат похож на provisioning профиль, генерируется в разделе provisioning (в аккаунте разработчика) и имеет те же типы: debuggable build, in-house distribution, ad-hoc, или App Store.
Сертификат используется для подписания бинарного файла во время сборки, это гарантирует, что файл не подделан, и вы отправляете нужное приложение на устройство или AppStore. Это стандартный сертификат с приватным и публичным ключом, Apple не хранит или изменяет его, разработчик хранит единственную копию для подписи приложения.
При создании, сертификат должен быть привязан к профилю provisioning, в следующей статье мы рассмотрим создание профилей и сертификатов.
Почему бы просто не использовать XCode для управления всем?
XCode помогает исправлять проблемы с профилями и сертификатами уже несколько лет, с каждой версий это работает все лучше и лучше. XCode работает прекрасно когда вы единственный разработчик, иначе все становится немного запутаннее и сложнее.
Из-за дублирования provisioning профилей, несоотвествия сертификатов, возникают проблемы между аккаунтами разработчиков и настройками XCode.
Для более крупных команд (больше чем 2 человека которые устанавливают и собирают приложения), мы в MartianCraft используюем систему когда один из разработчиков назначается provisioning master. Его работа - создание профилей, сертификатов и обновление профилей когда меняется состав команды.
Мы генерируем единый набор профилей и сертификатов, которые используются всеми в команде, каждая пара профиль-сертификат соответствует схеме которые используются в XCode:
- Development Signing (Development Certificate; Development Profile)
- Ad-hoc Signing (Ad-hoc Certificate; Ad-hoc Profile)
- App Store Signing (App Store Certificate; App Store Profile)
Данные сертификаты назначаются на различные targets в проекте, таким образом при его сборке используются соответствующие сертификаты и профили для подписи приложения.
Когда разработчик подключается к команде, ему нужно только установить профили и сертификаты, которые можно найти в репозитории. Это упрощает работу в большой команде.
Далее
В следующей статье рассказывается о том как создавать сертификаты/профили, как их устанавливать в XCode и работать с несколькими схемами в XCode.