iOS / Android Dev Tools

Просмотр mobileprovisionЧитайте XML внутри файла

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

Просмотр mobileprovision

Файл профиля

Перетащите один файл .mobileprovision или .provisionprofile. До 5 MiB.

Файл не выбран

Результат

Чтение выполняется в этой вкладке. Инструмент не отправляет и не сохраняет файл.

Настройки

Заменяет известные строки устройств и очищает двоичные данные. Команда, приложение и другие сведения остаются. После изменения повторите разбор.

Выберите файл и запустите разбор.

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

Экспорт — неподписанная XML-копия, а не профиль для установки.

Просмотр mobileprovision помогает разобраться, почему сборка использует другую команду или не устанавливается на тестовое устройство. Сначала извлеките файл из самого приложения и сравните его с загруженной копией: одинаковое имя ещё не означает одинаковое содержимое.

Разбор следует структуре CMS до вложенного XML, а не ищет похожий фрагмент среди произвольных байтов. Современная система может принимать решения по DER-Encoded-Profile. Здесь показано читаемое представление для диагностики, которое не заменяет системную проверку подписи.

Зачем нужен просмотр mobileprovision

Сводка связана с исходными полями

Просмотр mobileprovision позволяет сопоставить команду, идентификатор приложения и срок действия с исходными путями полей. Отдельное представление Entitlements сохраняет массивы и логические значения. Это помогает читать разрешения без превращения каждого значения в неоднозначную текстовую метку.

Контейнер профиля раскрывается в дерево с ветвями идентификаторов, дат и разрешений.

Маскировка действует и при экспорте

UDID устройств по умолчанию заменяются, в том числе при повторении в других строках. Двоичные данные очищаются: внутри может находиться ещё одна копия идентификаторов. Команда и данные приложения остаются видны, поэтому такая маскировка не делает документ анонимным.

Строки устройств закрыты масками на экране и в экспортируемом документе, остальные поля остаются видимыми.

Начните с файла внутри сборки

01

Различайте пример и настоящий профиль

Извлеките embedded.mobileprovision из собственного пакета приложения. Пример — синтетический CMS без подписантов, предназначенный для знакомства с представлениями. Он не выпущен Apple и не подходит для установки.

02

Повторите разбор после смены настройки

Переключение маскировки удаляет предыдущий результат и отключает экспорт. Запустите разбор кнопкой или Ctrl/Cmd + Enter. Переход между сводкой, деревом и XML не меняет уже прочитанные данные.

03

Раскрывайте нужные ветви

Нажмите путь словаря или массива, чтобы свернуть его потомков. Дерево добавляет по 50 строк, но экспорт включает всю текущую копию XML. Очистка и замена файла имеют предварительный просмотр и однократную отмену.

Найдите поле, объясняющее расхождение

Команда и идентификатор приложения

Name, UUID, TeamName и TeamIdentifier собраны вместе. Bundle ID выводится из application-identifier удалением первого сегмента префикса; учитывается запасной ключ macOS. Шаблон со звёздочкой сохраняется, а отсутствующие значения не подставляются автоматически.

Права с исходными типами

Entitlements показан отдельно. Словари, массивы, логические значения, целые числа, даты и данные различаются по типу. Профиль подготовки задаёт допустимые права приложения, но не перечисляет фактически заявленные права в его подписи. Сопоставление этих двух наборов не выполняется.

Дата и момент сравнения

CreationDate и ExpirationDate остаются значениями UTC. Срок сравнивается с часами браузера в момент разбора. Вывод различает истёкший срок, будущую дату и неизвестное значение. Неверные часы повлияют на сравнение; будущая дата не подтверждает действительность подписи.

Структурированное извлечение plist

XML извлекается из SignedData с сохранением порядка ключей и типов значений. При маскировке известные идентификаторы заменяются, а все элементы data становятся пустыми. Для получения полных значений отключите настройку и заново разберите исходный файл.

Границы чтения и экспорта

Без вывода о доверии и установке
Инструмент не проверяет CMS-подпись, цепочку сертификатов, отзыв или доверие Apple и не определяет возможность установки приложения. Контейнер без подписантов отмечается отдельно. Успешный разбор означает только чтение поддерживаемой структуры и вложенного XML.
Внутренний DER не интерпретируется
Современные системы могут использовать DER-Encoded-Profile как основу проверки. Его внутренняя семантика здесь не разбирается и не сравнивается с XML. Неизвестные поля сохраняются без выдуманных значений и без автоматического определения типа распространения профиля.
Поддерживается конкретный формат
Принимается один двоичный CMS SignedData с вложенным XML plist в UTF-8. Поддерживаются BER с определённой и неопределённой длиной и составные строки октетов. Отдельный XML, двоичный plist, отделённое или зашифрованное CMS-содержимое, IPA, P12 и URL не поддерживаются.
Маскировка не равна анонимизации
Идентификаторы из ProvisionedDevices заменяются в строковых значениях и ключах, двоичные данные очищаются. Названия, команды, Bundle ID и другие сведения остаются. Перед передачей копии проверьте её содержимое; полные значения доступны после повторного разбора с отключённой маскировкой.
Лимиты и неподписанный результат
Файл ограничен 5 MiB, каждый парсер — 10000 узлами и 64 уровнями, готовый XML — 10 MiB. Повторяющиеся ключи и неверные значения отклоняются. Экспорт удаляет оболочку CMS и не позволяет продлить, подписать или установить профиль.

Просмотр mobileprovision: вопросы

Как открыть файл mobileprovision?

Выберите локальный файл и запустите разбор. Сначала проверяется структура CMS, затем читается вложенный XML plist. Если текстовый редактор показывает отдельные строки, это ещё не доказывает, что весь контейнер имеет поддерживаемую структуру.

Как посмотреть UDID устройств, включённых в сборку?

Раскройте ProvisionedDevices в дереве полей. По умолчанию остаётся количество устройств, а идентификаторы заменяются. Отключите маскировку и повторите разбор, чтобы увидеть реальные значения. Отсутствующий список не означает автоматическое разрешение для всех устройств.

Как проверить дату окончания действия профиля?

Посмотрите ExpirationDate и время сравнения в сводке. Так можно узнать, прошла ли указанная дата по текущим часам компьютера. Принятие сертификата, подписи и профиля системой Apple нужно проверять средствами платформы отдельно.

Как узнать, с каким профилем собран IPA?

Самостоятельно распакуйте IPA для разработки или Ad Hoc и найдите embedded.mobileprovision в пакете приложения внутри Payload. Эта страница не распаковывает IPA. Приложения из App Store могут не содержать встроенного профиля.

Можно ли изменить дату окончания действия профиля?

Изменение даты в выгруженном XML не продлит профиль с подписью Apple. В копии нет CMS-подписи. Обновите или создайте профиль через учётную запись разработчика либо Xcode, затем заново соберите приложение с подходящим файлом.

Не хватает пояснения о чтении профиля?

Разберите следующее несоответствие

Просмотр mobileprovision помогает сопоставить команду, устройства и разрешения в файле из конкретной сборки. Сохраните XML для диагностики, а вопросы доверия и подписи решайте средствами Apple.