Файл Info.plist лежит внутри каждого приложения для iOS и macOS, и именно его повреждение или неверное значение ключа чаще всего вызывает ошибки вроде «The app's Info.plist must contain a value» при сборке или установке. Чтобы открыть и изменить этот файл, достаточно Xcode, любого текстового редактора или встроенной утилиты PlistBuddy — но способ зависит от формата файла: XML или бинарный.
Ниже разберём, где искать Info.plist внутри .app и .ipa, чем его открыть на Mac и Windows, как безопасно поменять нужные ключи и как проверить, что файл не сломался после правок.
Что такое Info.plist и где он находится
Info.plist (Information Property List) — это служебный файл в формате property list, в котором приложение хранит свои настройки: имя, версию, идентификатор бандла, разрешения (камера, геолокация, микрофон), поддерживаемые ориентации экрана и многое другое. Система читает этот файл при запуске программы, и если обязательный ключ отсутствует, приложение может не установиться или не запуститься.
Внутри проекта Xcode файл находится в корневой папке проекта и отображается в навигаторе как «Info.plist». В уже собранном приложении он лежит внутри пакета .app — чтобы до него добраться на Mac, нужно нажать правой кнопкой по иконке программы и выбрать Показать содержимое пакета, затем перейти в Contents (для macOS-приложений) или в корень пакета (для iOS-приложений). В архиве .ipa файл находится по пути Payload/ИмяПриложения.app/Info.plist — сам .ipa можно распаковать как обычный ZIP-архив.
- 📄 XML-формат — текстовый, открывается любым редактором, легко читается человеком.
- 🔒 Бинарный формат — компактный, требует конвертации перед правкой в текстовом редакторе.
- 🔑 Ключи разрешений — например,
NSCameraUsageDescriptionдля доступа к камере. - 🏷️ Служебные ключи —
CFBundleIdentifier,CFBundleVersion,CFBundleDisplayName.
Редактирование через Xcode
Самый удобный способ для разработчика — открыть Info.plist прямо в Xcode. Достаточно кликнуть по файлу в навигаторе проекта, и он откроется в виде таблицы «ключ — тип — значение». Чтобы добавить новый ключ, нажмите плюс рядом с любой строкой, чтобы изменить значение — дважды кликните по ячейке справа.
По умолчанию Xcode показывает «человеческие» названия ключей вроде Privacy — Camera Usage Description. Если нужно увидеть сырые имена вроде NSCameraUsageDescription, кликните правой кнопкой по таблице и выберите Raw Keys & Values. Там же доступен пункт Open As → Source Code — он открывает plist как обычный XML, что удобно для массовых правок.
Изменения сохраняются обычным Cmd+S. После правок проект нужно пересобрать, чтобы новый plist попал в сборку.
Редактирование в текстовом редакторе
Если Xcode под рукой нет, XML-версию Info.plist можно править в любом текстовом редакторе: VS Code, Sublime Text, Notepad++, даже встроенном «Блокноте» на Windows. Файл представляет собой XML-документ со структурой <key>имя</key> и следующего за ним значения — строки, числа, булева типа или словаря.
Чтобы изменить значение, найдите нужный ключ и отредактируйте содержимое следующего за ним тега. Например, для смены отображаемого имени приложения найдите <key>CFBundleDisplayName</key> и поменяйте текст внутри <string>...</string>. Добавляя новый ключ, строго соблюдайте парность: каждый <key> должен сопровождаться значением, а открытые теги — закрываться.
⚠️ Внимание: если Info.plist сохранён в бинарном формате, при открытии в текстовом редакторе вы увидите набор нечитаемых символов, начинающийся с «bplist». Редактировать его напрямую нельзя — сначала конвертируйте файл в XML (способ описан в следующем разделе), иначе файл будет безвозвратно испорчен.
Командная строка: plutil и PlistBuddy
На Mac есть два встроенных инструмента для работы с plist без графического интерфейса. Утилита plutil проверяет файл на ошибки и конвертирует между форматами, а /usr/libexec/PlistBuddy позволяет читать, добавлять и изменять конкретные ключи — это удобно для автоматизации в скриптах сборки.
Проверка синтаксиса и конвертация бинарного файла в читаемый XML выполняются так:
plutil -lint Info.plist
plutil -convert xml1 Info.plist
Чтение и изменение конкретного значения через PlistBuddy:
/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" Info.plist
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion 2.0" Info.plist
/usr/libexec/PlistBuddy -c "Add :NSCameraUsageDescription string Доступ к камере" Info.plist
☑️ Безопасная правка Info.plist
На Windows штатных аналогов этих утилит нет, поэтому там остаются текстовые редакторы и сторонние plist-редакторы. Для проверки синтаксиса XML подойдёт любой онлайн-валидатор XML — структура plist целиком соответствует этому стандарту.
Типичные ключи, которые редактируют чаще всего
Чаще всего правят небольшой набор ключей: версию сборки перед релизом, описания разрешений для App Store, отображаемое имя и настройки ориентации. Ниже — сводная таблица с назначением популярных ключей.
| Ключ | Назначение | Тип значения |
|---|---|---|
CFBundleDisplayName | Имя приложения под иконкой | Строка |
CFBundleVersion | Номер сборки | Строка/число |
CFBundleShortVersionString | Видимая версия (например, 1.2) | Строка |
NSCameraUsageDescription | Текст запроса доступа к камере | Строка |
UISupportedInterfaceOrientations | Поддерживаемые ориентации экрана | Массив |
При добавлении ключей разрешений учитывайте: пустое или отсутствующее описание разрешения — частая причина отклонения сборки при публикации в App Store. Текст должен осмысленно объяснять пользователю, зачем приложению нужен доступ.
Почему изменённый Info.plist внутри .ipa «не работает»
После правки plist внутри распакованного .ipa подпись приложения становится недействительной, и iOS откажется его устанавливать. Потребуется повторная подпись пакета действующим сертификатом разработчика — например, через codesign или инструменты вроде AltStore/Sideloadly. Без переподписи изменения не вступят в силу на устройстве.
Типичные ошибки и их решение
Самая распространённая проблема после ручной правки — сломанный синтаксис XML: незакрытый тег, лишний символ, потерянная пара «ключ-значение». Симптом — приложение не собирается или не запускается, а Xcode сообщает, что plist «could not be parsed». Лечится командой plutil -lint, которая укажет, что файл невалиден, после чего остаётся найти и исправить ошибку или восстановить файл из резервной копии.
Вторая частая ситуация — правка бинарного plist в текстовом редакторе с последующим сохранением. Файл при этом необратимо повреждается, поэтому перед любыми правками проверяйте начало файла: читаемый XML начинается с <?xml, бинарный — с bplist.
⚠️ Внимание: изменение Info.plist внутри подписанного приложения ломает цифровую подпись. На iOS такое приложение не установится без повторной подписи, а на macOS может сработать защита Gatekeeper. Правьте файл до подписи пакета либо будьте готовы подписать его заново.
Третья ошибка — неправильный тип значения. Например, булевы ключи записываются как <true/> или <false/>, а не как строка «true». Если приложение игнорирует вашу настройку, первым делом сверьте тип значения с документацией Apple по конкретному ключу.
Часто задаваемые вопросы
Чем открыть Info.plist на Windows?
XML-версию файла откроет любой текстовый редактор — Notepad++, VS Code или стандартный «Блокнот». Бинарный plist на Windows без конвертации прочитать сложнее: проще всего получить XML-вариант из проекта или сконвертировать файл на Mac через plutil.
Как понять, в каком формате сохранён Info.plist?
Откройте файл в текстовом редакторе и посмотрите на первые символы. Если видите <?xml version="1.0" — это текстовый XML, если bplist00 и нечитаемые символы — бинарный формат.
Можно ли редактировать Info.plist без Xcode?
Да. Для XML-файла достаточно текстового редактора, а на Mac дополнительно доступны команды plutil и PlistBuddy, которые входят в систему и не требуют установки Xcode.
Почему после правки Info.plist приложение перестало устанавливаться?
Вероятные причины: нарушен синтаксис файла (проверьте plutil -lint), повреждён бинарный plist правкой в текстовом редакторе или сломана цифровая подпись пакета. В последнем случае приложение нужно подписать заново.
Где взять список всех ключей Info.plist?
Полный перечень ключей с описанием типов значений публикуется в официальной документации Apple для разработчиков. Перед добавлением незнакомого ключа сверяйтесь с ней — тип значения и допустимость ключа зависят от платформы и версии системы.