Что за файлы plist mac os

PLIST – Файл параметров приложения Mac OS X (Mac OS X Property List File)

Расширение PLIST

Чем открыть файл PLIST

В Mac OS: Apple Property List Editor, Fat Cat PlistEdit Pro, PrefEdit, PlistEdit Pro, Night Productions Pref Setter, Late Night Property List Tools, Apple plutil, Любой текстовый редактор

Описание расширения PLIST

Популярность:

Разработчик: Apple

Расширение файла PLIST связано в основном с Mac OS X и iOS, но также используется в фреймворках NeXTSTEP и GNUstep. Файл с расширением PLIST – это файл свойств в формате XML, формат основан на Core Foundation DTD от Apple. Название расширения PLIST происходит от английского «Property List» (переводится как: список свойств) и ссылается на то, что файлы *.PLIST обычно хранят список свойств. Список параметров в файле представлен в виде пар Ключ – Значение. Например: Ключ Значение (строка) . Данные в файле могут храниться как в текстовом, так и в двоичном виде.

*.PLIST файлы являются стандартной частью OS X Core Foundation, так что их используют многие приложения Mac OS X. Вы можете редактировать текстовые *.PLIST файлы с помощью текстового редактора, или утилиты Apple Property List Editor (входит в состав Apple Developer Tools). Однако, как правило, не рекомендуется изменять пользователям файлы .PLIST, так как они изменяются соответствующими программами по мере необходимости.

Многие PLIST файлы с настройками приложений лежат в Home -> Library -> Preferences (например, com.apple.finder.plist, com.skype.skype.plist). Название файла состоит из 4 частей: com.компания.приложение.plist.

Пример кода PLIST-файла:

ПРИМЕЧАНИЕ: Вы можете конвертировать PLIST файлы между XML и бинарным форматом с помощью утилиты командной строки plutil:

    Из бинарного в XML: plutil -convert xml1 file.plist
    Из XML в бинарный: plutil -convert binary1 file.plist

ПРИМЕЧАНИЕ: Главный файл настроек для приложений Mac OS X обычно находится в каталоге /Contents/ бандла .APP и называется Info.plist. Для просмотра этого файла, щелкните правой кнопкой мыши на файле приложения, выберите «Показать содержание пакета» (Show Package Contents), и откройте папку Contents.

HEX код: 3C 3F 78 6D 6C 20 76 65 72 73 69 6F 6E 3D 22 31 2E
ASCII код: .?xml.version=

Другие программы, связанные с расширением PLIST

    Файл настроек видео в HandBrake от HandBrake Project
    Расширение файла PLIST связано с инструментом преобразования видео. Файл содержит предустановленные сохраненные настройки видео (видео фильтры, разрешение видео, настройки аудио, параметры субтитров и параметры глав). Относится к разделу Конфигурационные файлы.

Популярность:

Источник

Работа с файлами .plist в Cocoa/CocoaTouch

Всем доброго хабрадня!

Сегодня я бы хотел рассказать о некоторых аспектах сохранения настроек и прочих данных программы в OS X и/или iOS. Как обычно, у нас есть несколько вариантов: Core Data, «голый» SQLite, свои бинарные форматы, свои текстовые форматы, NSUserDefaults и, как Вы уже наверняка слышали, файлы типа PLIST, то есть XML Property List.

Вкратце, plist-файлы представляют из себя обычный XML, но с некоторыми оговорками. К примеру, порядок тегов в нём обусловлен некоторыми правилами: они идут парами «ключ-значение», но теги типа «ключ» и теги типа «значение» располагаются на одном уровне. Типичный пример:

Плисты умеют хранить основные типы данных Cocoa: NSString, NSNumber (int, float, BOOL), NSDate, NSArray, NSDictionary и NSData. Этим типам соответствуют следующие теги: , , , , , , , , . Собственно, plist состоит из тегов , за которыми следуют перечисленные теги со значением.

Читайте также:  Проблемы с восстановлением системы windows

Под катом — описание дополнительных ограничений и, что самое главное, API для работы с такими файлами.

Наверняка Вы уже обратили внимание на возможность хранить в plist’е массивы и словари и у Вас возникли закономерные вопросы: «а как это?», «а если в массиве мои объекты?», «а если в словаре ещё словари?» и подобные им. Если не возникло, значит эту часть статьи можно пропустить без ущерба для понимания.

Дело в том, что массивы и словари при сериализации в плист проходятся рекурсивно, то есть, получается всего лишь ещё один уровень вложенности на каждый массив или словарь внутри другого контейнера. Отсюда и вытекают ограничения на содержимое: только типы, поддающиеся сериализации. То есть, массив вьюшек Вы таким способом не сериализуете, даже не пытайтесь. Но многие свои типы можете: достаточно имплементировать протокол NSCoding и получить NSData из своего объекта с помощью NSKeyedArchiver. А уж NSData и в плисте сохранить легко. Опробовать такой метод сериализации и десериализации своих объектов я оставляю Вам в качестве домашнего задания.

Ещё один интересный момент. Для ускорения чтения и записи плисты часто делают двоичными, переводят в формат bplist (Binary Plist), что снижает их удобочитаемость практически до нуля. Но не расстраиваемся: Xcode умеет открывать и такие плисты, но если Вы хотите всё ж посмотреть на XML в другом редакторе, Вы можете легко переконвертировать бинарный плист в текстовый из консоли: plutil -convert xml1 MyFile.plist . Кстати, plutil умеет конвертировать плист ещё и в JSON, это может кому-либо пригодиться, но лично я этим ни разу не пользовался.

Очень часто с плистами разработчик работает посредством NSUserDefaults, пусть даже он об этом зачастую и не знает. Этот класс разработан для работы с глобальными настройками программы, хранимыми в

/Library/Preferences/com.yourcompany.yourapp.plist (который, кстати, обычно бинарный, то есть, bplist), и переключить его на работу с другим файлом нельзя. Но ведь мы хотим создавать и читать свои собственные плисты, не так ли? Для этого мы будем использовать простой класс NSPropertyListSerialization , заботливо предоставленный нам разработчиками Cocoa.

Итак, что же умеет этот класс? Для начала, он умеет преобразовывать NSDictionary и NSArray в NSData, содержащий наш plist. И, разумеется, он умеет делать обратные преобразования: из NSData в NSDictionary или NSArray.

Рассмотрим простой пример: создадим словарик с кучей данных (в том числе вложенных) и посмотрим на практике, во что это дело сохранится.

В результате выполнения этого кода, который слишком простой, что бы его ещё и комментировать, будет плист примерно такого вида:

Что, просто? Конечно просто! И даже XML достаточно удобочитаемый. А в консоль ещё и свалится текстовое описание нашего словарика:

Теперь будем загружать сохранённый на этом этапе плист:

И что же мы должны получить? Ну конечно же! Мы в консоли должны увидеть тот же симпатичный JSON-чик, что и при сохранении! Правда, нет гарантий, что он будет именно таким же: порядок следования элементов в NSDictionary не определён. Но все данные должны быть на месте.

Кстати говоря, мы загрузили наши данные в виде «mutable» данных, на что указывает флаг NSPropertyListMutableContainersAndLeaves . Если бы мы указали NSPropertyListImmutable , то получили бы не NSMutableDictionary, а обычный NSDictionary, так что тут есть небольшой простор для фантазии и оптимизации.

Что ж, в этом уроке мы немного разобрались с форматом PLIST и научились работать с файлами такого типа с помощью Cocoa. Полный пример можно найти, как всегда, на гитхабе.

Читайте также:  Как отключить процесс обновления windows

UPD: Как заметил mejedi, бинарный формат плиста иногда может записываться в файл медленней plain-XML формата.

XML пишется «в лоб», а при сохранении в бинарный формат происходит поиск и устранение дублирующих элементов (формат по сути представляет собой поток сущностей с взаимными ссылками, например если у нас два раза строка «hello world» встречается, хранить две копии не обязательно).

Сейчас посмотрел код, чтобы освежить память — на 10.6 все так, как я описал, а на 10.8 устранение дубликатов больше не делается, по-идее должно стать быстрее (релевантная функция называется __CFBinaryPlistWrite).

Источник

Кроссплатформенное приложение на Qt: Mac App Store

После завершения разработки под OS X может остаться ощущение незавершенности — для полного счастья хотелось бы видеть свое приложение в каталоге, тем более, что это, пожалуй, лучшая площадка для продажи десктопных приложений. На эту тему есть статья времен Qt 4.8 в официальном блоге, и еще более старая на хабре. К счастью, больше нет необходимости пересобирать Qt, однако с приходом OS X 10.9 некоторые баги стали критичными, приходится выкручиваться.

Не буду описывать тривиальные и давно уже разобранные вещи вроде получения статуса разработчика, создания provision profile, регистрации нового приложения в iTunes Connect. Будем считать, что все это уже настроено, программа готова, и только ждет своего часа. Мне не хотелось задействовать XCode, потому из дополнительного ПО нам потребуется Application Loader, который можно загрузить так. В качестве примеров приведены файлы нашего органайзера для студентов iStodo, так получается менее абстрактно и более приближено к реальности.

Итак, для начала нужны три дополнительных файла: иконка*, Info.plist, Entitlements.plist

Info.plist

Этот файл содержит всю информацию о приложении (таблица рекомендуемых полей тут).

Вот минимальный каркас:

Для того, чтобы нестандартный plist автоматически добавлялся в бандл при каждой сборке, нужно добавить в файл проекта:

Заодно сразу добавим в .pro файл пару строк для отладки:

Entitlements.plist

Программы, устанавливаемые через App Store, будут работать в песочнице, для этого необходимо произвести некоторые приготовления. По правилам, нам, через QDesktopServices::storageLocation(), доступна папка вида имя_компании/имя_приложения (как это указано в iTunes Connect), потому нужно задать эти параметры явно:

Entitlements же, по сути, — файл разрешений, и те функции, которые в нем не указаны, будут заблокированы. Например, если мы хотим делать что-нибудь с сетью, следует установить флаг com.apple.security.network.client, и т.д. Возможные ключи с описаниями тут.

Ну и пример готового файла:

Публикация

Итак, можно выделить следующие ключевые моменты:

  • Скопировать фреймворки и плагины Qt внутрь папки приложения
  • Подписать
  • Упаковать в формат .pkg
  • Залить в iTunes Connect

Скопировать

Для того, чтобы программа могла запускаться не только на системах с установленным Qt SDK, нужно запустить специализированную утилиту — macdeployqt, которая скопирует все необходимые плагины и фреймворки в бандл приложения. К сожалению, из-за ошибки в этой утилите не копируются файлы Info.plist для фреймворков, что не является проблемой для работы, но без них не получится корректно подписать приложение. Нужно заметить, что если программа использует модуль QtSql, будут скопированы все доступные драйверы. Все бы ничего, но из-за libqsqlodbc.dylib приложение отклоняют с формулировкой «За использование приватных методов», а из-за libqsqlpsql.dylib ругаются на использование устаревшей библиотеки. Чтобы не искушать судьбу, перед публикацией стоит снести ненужные драйверы, заодно немного уменьшить размер пакета. Также для уменьшения размера можно удалить лишние плагины форматов изображений, и т.д.

Подписать

Начиная с OS X 10.9, нужно обязательно подписывать не только приложение, но и все фреймворки, плагины. Не смотря на то, что в Technical Note 2206 написано, что правильным будет подписывать не папку фреймворка, а каталог версии, на практике сделать это не получается, да и нареканий при ревью не возникло.
Примеры команд:

Читайте также:  Linux текстовые редакторы консоли предустановленные

После подписывания всех библиотек приходит очередь приложения целиком, как раз тут и используется файл Entitlements:

Проверяем, все ли прошло гладко:

Упаковать

Тут все делается одной командой, которая, впрочем, изменилась с момента написания официального мануала:

Для пробы можно сразу же запустить получившийся пакет:

Залить в iTunes Connect


Опять же ничего сложного, выбираем пункт Deliver your app, свое приложение, указываем путь до .pkg. Многие сталкиваются с проблемой (зависанием) в процессе заливки, рабочее решение тут.

Скрипт

В итоге получается очень много ручного труда: копировать файлы .plist для фреймворков, подписывать каждую библиотеку… Был написан скрипт на python, который полностью автоматизирует процесс. Предполагается, что скрипт лежит в каталоге сборки (или, по крайней мере, в одном каталоге с бандлом программы). Будет создана отдельная папка вида myApp_1.2, в которой, если все пройдет как надо, появится результат работы — файл .pkg. Для настройки следует отредактировать блок с параметрами — указать название приложения, версию, расположение Qt, название файла с разрешениями, информацию о разработчике:

Источник

Изучаем файл настроек загрузки Mac OS X — com.apple.Boot.plist

В Mac OS X тысячи файлов настроек с расширением .plist, в которых прописаны абсолютно все параметры работы системы и отдельных программ. Но есть среди них и самый важный файл, отвечающий за параметры загрузки самой Mac OS X — com.apple.Boot.plist. Любой неверный параметр, прописанный там, серьёзно осложнит вам жизнь, потому что Мак может перестать загружаться. Тем не менее, знать устройство этого файла стоит любому пользователю, потому что через него можно настроить многие аспекты поведения компьютера. А особенно важно понимать устройство com.apple.Boot.plist владельцам хакинтошей, которым неизбежно придётся редактировать этот файл.

Кратко опишем, что позволяет сделать файл com.apple.Boot.plist:

  • зафиксировать определённые режимы загрузки (см. здесь). Например, можно заставить систему всегда загружаться в 64-битном режиме, вместо того, чтобы держать клавиши 6 и 4 при загрузке.
  • настроить графический режим загрузки: изменить разрешение экрана для заставки с яблочком или для текстового режима загрузки
  • ограничить количество используемой памяти или ядер процессора
  • загрузить систему с другим ядром
  • настроить задержку загрузчика перед выбором системы по умолчанию

Последние опции будут полезны владельцам хакинтошей в случае возникновения проблем.

Редактирование файла

Теперь пару слов о том, как редактировать файл com.apple.Boot.plist. Он лежит в папке /Library/Preferences/SystemConfiguration/. Но открыв его в стандартном редакторе TextEdit, вы не сможете сохранить внесённые изменения, потому что сделать это вам не позволят права доступа к файлу.

Варианты есть такие:

1) Терминал. Вводите команды и нажмите Enter после каждой из них:

Введите пароль администратора (символы на экране не появятся) и нажмите Enter.

nano /Library/Preferences/SystemConfiguration/com.apple.Boot.plist

Если не хотите вводить такую длинную строку, можете сократить её, как показано ниже:

nano /L*/Pref*/SystemC*/com.apple.Boot.plist

Прямо в Терминале откроется окно редактора. Мышь в нём работать не будет, курсор нужно перемещать стрелками клавиатуры.

Когда закончите редактирование, нажмите Ctrl+X, затем Y и Enter.

2) TextMate. Этот вариант поудобнее — программа TextMate умеет редактировать почти любой код в любых файлах, даже защищённых системой. Открыть в ней com.apple.Boot.plist вы сможете через контекстное меню файла, через меню File-Open в самой программе или перетаскиванием файла на иконку TextMate в Доке.

При сохранении файла вам попросят ввести пароль.

Источник

Оцените статью