Provisioning-профиль Apple Developer: как создать

Provisioning-профиль Apple Developer

Provisioning-профиль — одна из самых непонятных частей Apple Developer для новичков, но именно он связывает воедино приложение, сертификат и устройства для тестирования. Разбираем, как создать профиль правильно и почему он «слетает» после каждого изменения настроек.

Что такое provisioning-профиль

Это файл, который объединяет App ID, сертификат разработчика и список разрешённых устройств (для Development) или тип распространения (для Distribution). Без правильного профиля Xcode не даст собрать и запустить приложение.

Типы provisioning-профилей

  • Development — для тестирования на подключённых устройствах
  • Ad Hoc — для распространения ограниченному кругу тестировщиков без TestFlight
  • App Store — для публикации через App Store Connect
  • Enterprise — для внутренней дистрибуции в компании

Как создать provisioning-профиль

  1. В разделе Profiles нажмите «+» и выберите тип профиля.
  2. Укажите App ID приложения, для которого создаётся профиль.
  3. Выберите сертификат — Development или Distribution, в зависимости от типа профиля.
  4. Для Development-профиля отметьте устройства, на которых будет тестироваться приложение.
  5. Скачайте профиль и подключите его в Xcode через Signing & Capabilities.

Automatic vs Manual: когда переключаться на ручное управление

Режим Automatically manage signing удобен для одиночной разработки, но в командах с несколькими Distribution-сертификатами начинает создавать путаницу — Xcode может внезапно перевыпустить профиль без явного уведомления. В таких случаях стоит перейти на ручное управление и явно закрепить конкретный профиль за конкретной конфигурацией сборки.

Provisioning-профиль и CI/CD: особенности автоматизации

Для автоматической сборки на выделенном сервере (CI/CD) provisioning-профили обычно хранят не в связке ключей интерактивного пользователя, а экспортируют в защищённое хранилище секретов сборочной системы — GitHub Actions, Bitrise, Xcode Cloud. Профиль и сертификат передаются в зашифрованном виде и подключаются автоматически на этапе сборки без участия человека.

Что делать при ошибке «No matching provisioning profiles found»

  1. Проверьте, что App ID в профиле точно совпадает с bundle identifier проекта.
  2. Убедитесь, что выбранный сертификат ещё действителен и присутствует в связке ключей.
  3. Для Development-профиля проверьте, что тестовое устройство добавлено в список разрешённых.
  4. При автоматическом управлении подписью попробуйте переключить Team и выбрать его заново — это форсирует пересоздание профиля.

FAQ

Почему профиль стал «Invalid» после обновления Xcode?

Часто дело в истёкшем сертификате или изменившихся Capabilities приложения — профиль нужно пересоздать.

Нужно ли пересоздавать профиль при добавлении нового устройства?

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

Сколько устройств можно добавить в один профиль?

Ограничение задаётся общим лимитом устройств на аккаунт — обычно до 100 устройств каждого типа в год.

Можно ли использовать один provisioning-профиль для нескольких приложений?

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

Нужно ли пересоздавать профиль при обновлении macOS или Xcode?

Обычно нет, если срок действия сертификата и профиля не истёк — обновление системы само по себе не аннулирует существующие профили.

Provisioning-профиль и App Groups

Если приложение использует App Groups для обмена данными между основным приложением и расширениями (виджетами, action extensions), это тоже отражается в provisioning-профиле — каждый target (основное приложение и каждое расширение) требует собственного App ID и профиля с одинаковым App Group идентификатором.

Просмотр содержимого профиля вручную

Опытные разработчики иногда открывают .mobileprovision файл через терминал командой security cms -D -i, чтобы увидеть его содержимое в виде читаемого XML — это полезно для диагностики, когда непонятно, почему именно Xcode считает профиль недействительным.

Provisioning-профиль для watchOS-приложений

Приложения под Apple Watch требуют отдельного App ID и, соответственно, отдельного provisioning-профиля даже если watchOS-приложение поставляется в комплекте с основным iOS-приложением — это частая причина путаницы у разработчиков, впервые добавляющих поддержку часов.

Просмотр списка всех активных профилей аккаунта

Полный список provisioning-профилей, включая устаревшие, доступен в разделе Profiles на developer.apple.com — периодическая чистка неиспользуемых профилей помогает не запутаться, особенно если над аккаунтом работало несколько разработчиков за долгое время.

Provisioning-профиль в открытых pull request на GitHub

Никогда не коммитьте файлы .mobileprovision или .p12 в открытые репозитории — даже без приватного ключа профиль раскрывает Team ID и структуру App ID вашего проекта, что нежелательно для публичного кода.

Итог

Provisioning-профиль — это не разовая настройка, а элемент, который нужно обновлять при каждом значимом изменении проекта. Больше о полном цикле подготовки приложения — в статье «Apple Developer Apps: гид для разработчиков».