Что такое формат файла PLIST?
Файлы в формате .plist - это файлы настроек, которые хранят конфигурацию и информацию о свойствах для многих программ в среде macOS. Их также называют файлами настроек (preference files). Файлы .plist часто хранят пользовательские настройки и данные приложений и являются стандартным элементом системы Apple Core Foundation, используемой в macOS, iOS, iPadOS и других платформах Apple.
Файлы .plist могут храниться двумя способами: как текстовые или бинарные. Текстовая форма использует XML, что обеспечивает упорядоченность и читаемость содержимого для человека. Файлы, сохраненные как текст, можно просматривать и редактировать с помощью любого текстового редактора; однако специализированные программы, такие как встроенный в Xcode редактор Property List, упрощают этот процесс. Бинарная форма (распознаваемая по magic bytes bplist00 в начале файла) более компактна и обычно записывается самой операционной системой.
Файлы .plist можно легко конвертировать между текстовым и бинарным форматами с помощью командной строки и команды plutil. Команды преобразования:
- из бинарного формата в XML:
plutil -convert xml1 file.plist - из формата XML в бинарный:
plutil -convert binary1 file.plist
Общепринятое имя для основного списка свойств приложения - Info.plist. Всегда учитывайте, что имена ключей в файлах .plist чувствительны к регистру при чтении системой. Связанные форматы включают .mobileconfig для профилей конфигурации устройств и .strings для данных локализации.
Безопасность и защита
РИСК: LOWФайлы plist - это данные, а не исполняемый код, поэтому они ничего не запускают сами по себе. Реальный риск заключается в поломке, а не в вирусах: ручное редактирование настроек приложения или Info.plist с неправильным типом или ключом может помешать запуску или корректной работе программы. Сначала сделайте резервную копию файла, а в macOS отдавайте предпочтение команде «defaults» вместо прямого редактирования активных файлов настроек (cfprefsd может перезаписать ручные изменения). Файлы plist внутри профилей конфигурации (.mobileconfig) могут изменять параметры безопасности устройства, поэтому устанавливайте профили только из доверенных источников.
Детали формата
в двух словахПрограммы, открывающие файлы PLIST
Технические подробности
глубокая спецификация| Варианты формата | Две кодировки используют расширение `.plist`: XML (текстовая) и бинарная (`bplist`) |
| Бинарные magic bytes | `bplist00` (8 байт, ASCII) со смещением 0; отсутствуют в варианте XML |
| MIME-тип | `application/x-plist` |
| Корневой элемент XML | `<plist version="1.0">`, которому предшествует объявление `<!DOCTYPE plist ...>` |
| Скалярные типы данных | `string`, `integer`, `real`, `true`/`false` (boolean), `date` (ISO 8601), `data` (необработанные байты) |
| Типы коллекций | `array` (упорядоченный список) и `dict` (словарь ключей и значений); оба поддерживают произвольную вложенность |
| Структура бинарного формата | Таблица объектов + таблица смещений + фиксированный 32-байтовый трейлер; трейлер записывает количество объектов и позицию таблицы смещений |
| Кодирование Base64 | Элементы XML `<data>` кодируют бинарные объекты как Base64; бинарный формат хранит сырые байты напрямую |
| Кодировка текста (XML) | UTF-8 (по умолчанию) или UTF-16 с BOM; указывается в инструкции по обработке XML |
| Чувствительность к регистру ключей | Имена ключей в словаре чувствительны к регистру; `CFBundleIdentifier` и `cfbundleidentifier` рассматриваются как разные ключи |
| Типичные пути (macOS) | Пакеты приложений (`Info.plist`), пользовательские настройки (`~/Library/Preferences/`), демоны запуска и системная конфигурация |
| Инструмент конвертации | `plutil` (встроен в macOS); проверяет, конвертирует и изменяет файлы `.plist` из командной строки |
| Устаревший формат ASCII | Существует третий синтаксис NeXTSTEP ASCII с использованием разделителей `{` / `(`; macOS может его анализировать, но редко создает сегодня |
| Использование в Entitlements | Структура `.plist` повторно используется для файлов `.entitlements`, которые объявляют разрешения песочницы и возможности при подписи кода |
| Требование iOS/iPadOS | Каждый пакет приложения iOS и iPadOS требует наличия `Info.plist`, объявляющего ID пакета, отображаемое имя, возможности устройства и строки использования конфиденциальности |
| Выпущен | NeXTSTEP (late 1980s); current XML/binary forms with Mac OS X 10.0 (2001) |
| Открыть стандартное | Да · без роялти |
| Спецификация | developer.apple.com |
Конвертации PLIST
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах PLIST.