Info.plist: как редактировать файл настроек приложения

Файл 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 (способ описан в следующем разделе), иначе файл будет безвозвратно испорчен.
📊 Как вы чаще всего редактируете Info.plist?
В Xcode
В текстовом редакторе
Через командную строку (PlistBuddy/plutil)
Сторонними plist-редакторами

Командная строка: 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

Выполнено: 0 / 5

На 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 для разработчиков. Перед добавлением незнакомого ключа сверяйтесь с ней — тип значения и допустимость ключа зависят от платформы и версии системы.