Открыть сервис

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 →