Перевод первой части 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.