Info.plist
Info.plist — это файл конфигурации в формате XML, используемый операционной системой macOS и iOS (а также другими операционными системами семейства Darwin) для хранения метаданных и параметров настройки приложений. Файл является обязательным компонентом любого пакета приложения (.app) и содержит сведения, необходимые системе для идентификации, запуска и управления программой.
Структура и формат
Файл Info.plist представляет собой структурированный XML-документ, соответствующий стандарту Apple Property List (plist). Корневым элементом является словарь (<dict>), содержащий пары «ключ — значение». Ключи представляют собой строки, а значения могут быть различных типов: строки (<string>), числа (<integer>, <real>), булевы значения (<true/>, <false/>), массивы (<array>), словари (<dict>), даты (<date>) и данные (<data>).
Формат plist поддерживает несколько вариантов сериализации: XML (текстовый, читаемый), бинарный (для повышения производительности) и устаревший текстовый формат (OpenStep). В современных версиях macOS и iOS преимущественно используется бинарный формат для готовых приложений, но в исходных кодах и документации чаще встречается XML.
Основные ключи
Система определяет ряд стандартных ключей, которые могут присутствовать в Info.plist. Некоторые из них являются обязательными, другие — опциональными.
Обязательные ключи
- CFBundleExecutable — имя исполняемого файла приложения (обычно совпадает с названием приложения без расширения).
- CFBundleIdentifier — уникальный идентификатор пакета в обратном доменном формате (например,
com.example.myapp). Используется системой для однозначной идентификации приложения. - CFBundleInfoDictionaryVersion — версия структуры Info.plist (обычно
6.0). - CFBundleName — короткое имя приложения, отображаемое в интерфейсе.
- CFBundlePackageType — тип пакета (для приложений —
APPL). - CFBundleShortVersionString — версия приложения, отображаемая пользователю (например,
1.0). - CFBundleVersion — внутренний номер сборки, используемый для обновлений.
Распространённые опциональные ключи
- CFBundleDisplayName — отображаемое имя приложения на экране устройства.
- CFBundleIconFile — имя файла иконки приложения.
- LSRequiresIPhoneOS — булево значение, указывающее, что приложение предназначено только для iOS.
- UILaunchStoryboardName — имя файла storyboard, используемого при запуске.
- UIRequiredDeviceCapabilities — массив ключей, описывающих аппаратные требования (например,
arm64,gps). - NSCameraUsageDescription, NSPhotoLibraryUsageDescription, NSLocationWhenInUseUsageDescription — строки, описывающие причину запроса доступа к аппаратным функциям устройства (камера, фотографии, геолокация). Эти ключи обязательны для приложений, запрашивающих соответствующие разрешения.
- UIApplicationSupportsMultipleScenes — булево значение, указывающее поддержку многозадачности в iPadOS.
- CFBundleURLTypes — массив словарей, описывающих схемы URL, которые может обрабатывать приложение.
- UIStatusBarHidden — булево значение, скрывающее строку состояния.
- UIViewControllerBasedStatusBarAppearance — булево значение, определяющее, управляет ли контроллер представления внешним видом строки состояния.
Функции и назначение
Info.plist выполняет несколько ключевых функций:
- Идентификация приложения: система использует
CFBundleIdentifierдля уникальной идентификации приложения, что необходимо для обновлений, уведомлений и взаимодействия с другими приложениями. - Конфигурация запуска: файл определяет исполняемый файл, иконку, поддерживаемые ориентации экрана и другие параметры, влияющие на поведение приложения при запуске.
- Управление разрешениями: ключи, начинающиеся с
NS(например,NSCameraUsageDescription), используются для запроса разрешений у пользователя на доступ к аппаратным функциям. Без их наличия приложение не сможет получить доступ к соответствующим ресурсам. - Локализация: файл может содержать ссылки на локализованные ресурсы, а также ключи, определяющие язык интерфейса по умолчанию.
- Интеграция с системой: через Info.plist приложение может заявлять о поддержке определённых типов файлов, схем URL, сервисов и функций, таких как Handoff, Siri, Push-уведомления.
Расположение и доступ
В собранном приложении Info.plist находится в корне пакета .app (например, MyApp.app/Contents/Info.plist для macOS). В проектах Xcode файл обычно создаётся автоматически при создании нового проекта и хранится в папке Supporting Files. Разработчик может редактировать его как вручную, так и через графический интерфейс Xcode, который отображает ключи в виде таблицы.
Различия между платформами
Хотя структура Info.plist универсальна для macOS и iOS, существуют платформо-специфичные ключи. Например, для iOS важны ключи, связанные с разрешениями и ориентацией экрана, а для macOS — ключи, определяющие поддержку документов, меню и системных сервисов. Для watchOS и tvOS также существуют свои наборы ключей.
Безопасность и проверка
Система проверяет целостность и корректность Info.plist при запуске приложения. Некорректные или отсутствующие обязательные ключи могут привести к невозможности запуска. Кроме того, при публикации в App Store или Mac App Store файл проверяется на соответствие требованиям платформы, включая правильность указания ключей доступа к приватным данным.
История
Формат plist был введён компанией NeXT в 1990-х годах и унаследован Apple при создании операционной системы macOS (ранее Mac OS X). Info.plist как стандартный файл конфигурации приложений используется с первых версий macOS. С развитием платформ iOS, watchOS и tvOS его функционал расширялся, добавлялись новые ключи для поддержки современных возможностей.
Источники
- Apple Developer Documentation: Information Property List Key Reference
- Apple Developer Documentation: Bundle Structures
- Документация Xcode: Info.plist File
- Спецификация формата Property List (Apple)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →