Файл plist что это
Хакерские методы работы с файлами PLIST в Mac OS X
PLIST — это сокращение от «property list» (список свойств), и редактирование файлов с этим расширением имени представляет собой основной метод модификации Mac OS X (а также некоторых других операционных систем). С помощью этого метода вы можете организовать данные таким образом, чтобы к ним могли получать доступ программы, и при этом они структурированы так, что при необходимости пользователи могут создавать собственные файлы этого типа. Это краткое описание, разумеется, практически ничего не говорит, но детальное описание файлов PLIST — это сложная и трудоемкая задача. Если вы действительно заинтересованы в функциональных возможностях файлов PLIST, внимательно изучите следующую документацию: http://developer.apple.com/documentation/Darwin/Reference/Manpages/man_/plist._.html или запустите программу Terminal и введите следующую команду: man plist.При настройке компьютера в соответствии с вашими личными потребностями, наиболее часто приходится настраивать файлы PLIST, в которых хранятся значения по умолчанию для настроек различных программ — от стандартных цветов до реакции программ на те или иные действия. Как правило, эти файлы находятся в папке Library/Preferences вашего домашнего каталога. В большинстве случаев модификация этих файлов безвредна, и при этом позволяет разблокировать довольно неожиданные функциональные возможности. Если вы случайно повредите файл при редактировании, вы можете просто переместить его в Корзину, и при следующем запуске приложения взамен удаленного файла будет сгенерирован новый. Разумеется, при этом вы потеряете все индивидуальные настройки, созданные для этой программы, поэтому лучший способ (как и во всех случаях хакинга, при возможности) заключается в том, чтобы создать резервную копию этого файла с целью последующего восстановления в случае неполадок.
Существует множество способов доступа к файлам PLIST. Наиболее быстрый из них — из программы Terminal с помощью команды default. Рассмотрим простой пример. Некоторые программы можно настроить таким образом, чтобы они отображали меню Debug (большинство пользователей, активно работающих с приложением iCal, знают, насколько полезным может быть это меню). Давайте рассмотрим, каким образом можно настроить iCal таким образом, чтобы добавить в строку меню команду Debug:
После появления окна приложения вы увидите, что в нем появилось новое меню Debug (рис. 1.15).
Рис. 1.15. В окне приложения iCal появилось меню Debug
Приложение Terminal предоставляет великолепные возможности, когда вы знаете, что именно следует поменять. Однако если вы этого не знаете и лишь стремитесь узнать, какие настройки следует изменить, оно уже не будет столь полезным. Для этой цели вам понадобится список свойств (property list). Как было упомянуто в начале этого раздела, обычно большинство файлов PLIST находятся в папке Library в вашем домашнем каталоге. Для файла PLIST, содержащего настройки iCal, путь будет выглядеть следующим образом:
/Library/Preferences/com.apple.ical.plist. Как только вы обнаружите нужный файл, откройте его редактором списков свойств (Property List Editor). Как было рассказано в этой статье, этот редактор входит в состав Xcode Tools и устанавливается в папке /Developer/Applications. Кроме того, вы можете просто выполнить двойной щелчок мышью на нужном файле, и он будет открыт для редактирования (рис. 1.16).
Рис. 1.16. Список свойств, открытый для редактирования, отображает полный набор доступных вам опций
После того как файл будет открыт, вы сможете отредактировать любую из его строк. Большинство строк не имеют большого практического значения, но некоторые из них имеют явно выраженный смысл и позволяют редактировать функциональные возможности приложения. Например, изменение числового значения в строке delete todos after с 30 на 60 приведет к тому, что задачи, принятые к исполнению, будут храниться в течение 60 дней.
Итак, теперь вы вооружены командной строкой и программой, позволяющей редактировать файлы PLIST, экспериментируя с их настройками. Кроме того, файлы PLIST можно редактировать и обычным текстовым редактором. В версиях Mac OS X, более ранних, чем Tiger, файлы PLIST можно было непосредственно открывать текстовыми редакторами, но теперь эти файлы хранятся в двоичном формате. Чтобы открыть файл PLIST текстовым редактором, вам потребуется предварительно преобразовать его. Какой из методов преобразования файлов PLIST является наиболее простым? На помощь снова придет приложение Terminal.
Рис. 1.17. Файл PLIST, преобразованный в формат XML
Файл PLIST приложения iCal уже достаточно хорошо изучен, так что теперь попробуем модифицировать закладки браузера Safari. Полный путь к файлу PLIST с настройками Safari выглядит так:
Разумеется, файлы PLIST заслуживают намного более тщательного изучения, но приведенный здесь необходимый минимум информации уже позволит вам начать их исследование и экспериментировать с настройками.
Расширение файла PLIST
Mac OS X Property List Format
Что такое файл PLIST?
Файлы в формате PLIST являются установочными файлами, которые включают информацию о конфигурации и свойствах многих программ в среде Mac OS X. Поэтому они также называются «файлами предпочтений». Файлы PLIST часто хранят пользовательские настройки и данные в пакетах. Файлы являются стандартным элементом системы Apple OS X Core Foundation.
Различные формы файлов PLIST
Преобразование файлов PLIST
Файлы PLIST можно легко конвертировать между текстовым и XML-форматами, используя командную строку и команду «plutil». Команды относительно преобразования:
Дополнительная информация
Программы, которые поддерживают PLIST расширение файла
Программы, которые могут обрабатывать PLIST файлы, следующие. PLIST файлы можно встретить на всех системных платформах, включая мобильные, но нет гарантии, что каждый из них будет должным образом поддерживать такие файлы.
Программы, обслуживающие файл PLIST
Как открыть файл PLIST?
Причин, по которым у вас возникают проблемы с открытием файлов PLIST в данной системе, может быть несколько. Что важно, все распространенные проблемы, связанные с файлами с расширением PLIST, могут решать сами пользователи. Процесс быстрый и не требует участия ИТ-специалиста. Ниже приведен список рекомендаций, которые помогут вам выявить и решить проблемы, связанные с файлами.
Шаг 1. Получить Apple Property List Editor
Проблемы с открытием и работой с файлами PLIST, скорее всего, связаны с отсутствием надлежащего программного обеспечения, совместимого с файлами PLIST на вашем компьютере. Этот легкий. Выберите Apple Property List Editor или одну из рекомендованных программ (например, Text editor, PrefEdit, Property List Tools) и загрузите ее из соответствующего источника и установите в своей системе. Выше вы найдете полный список программ, которые поддерживают PLIST файлы, классифицированные в соответствии с системными платформами, для которых они доступны. Если вы хотите загрузить установщик Apple Property List Editor наиболее безопасным способом, мы рекомендуем вам посетить сайт и загрузить его из официальных репозиториев.
Шаг 2. Убедитесь, что у вас установлена последняя версия Apple Property List Editor
Вы по-прежнему не можете получить доступ к файлам PLIST, хотя Apple Property List Editor установлен в вашей системе? Убедитесь, что программное обеспечение обновлено. Может также случиться, что создатели программного обеспечения, обновляя свои приложения, добавляют совместимость с другими, более новыми форматами файлов. Причиной того, что Apple Property List Editor не может обрабатывать файлы с PLIST, может быть то, что программное обеспечение устарело. Все форматы файлов, которые прекрасно обрабатывались предыдущими версиями данной программы, также должны быть открыты с помощью Apple Property List Editor.
Шаг 3. Назначьте Apple Property List Editor для PLIST файлов
После установки Apple Property List Editor (самой последней версии) убедитесь, что он установлен в качестве приложения по умолчанию для открытия PLIST файлов. Метод довольно прост и мало меняется в разных операционных системах.
Изменить приложение по умолчанию в Windows
Изменить приложение по умолчанию в Mac OS
Шаг 4. Убедитесь, что PLIST не неисправен
Если проблема по-прежнему возникает после выполнения шагов 1-3, проверьте, является ли файл PLIST действительным. Проблемы с открытием файла могут возникнуть по разным причинам.
1. Убедитесь, что PLIST не заражен компьютерным вирусом
Если PLIST действительно заражен, возможно, вредоносное ПО блокирует его открытие. Сканируйте файл PLIST и ваш компьютер на наличие вредоносных программ или вирусов. PLIST файл инфицирован вредоносным ПО? Следуйте инструкциям антивирусного программного обеспечения.
2. Убедитесь, что файл с расширением PLIST завершен и не содержит ошибок
Если вы получили проблемный файл PLIST от третьего лица, попросите его предоставить вам еще одну копию. Возможно, что файл не был должным образом скопирован в хранилище данных и является неполным и поэтому не может быть открыт. При загрузке файла с расширением PLIST из Интернета может произойти ошибка, приводящая к неполному файлу. Попробуйте загрузить файл еще раз.
3. Проверьте, есть ли у вашей учетной записи административные права
Существует вероятность того, что данный файл может быть доступен только пользователям с достаточными системными привилегиями. Выйдите из своей текущей учетной записи и войдите в учетную запись с достаточными правами доступа. Затем откройте файл Mac OS X Property List Format.
4. Убедитесь, что в системе достаточно ресурсов для запуска Apple Property List Editor
Операционные системы могут иметь достаточно свободных ресурсов для запуска приложения, поддерживающего файлы PLIST. Закройте все работающие программы и попробуйте открыть файл PLIST.
5. Убедитесь, что у вас установлены последние версии драйверов, системных обновлений и исправлений
Последние версии программ и драйверов могут помочь вам решить проблемы с файлами Mac OS X Property List Format и обеспечить безопасность вашего устройства и операционной системы. Возможно, файлы PLIST работают правильно с обновленным программным обеспечением, которое устраняет некоторые системные ошибки.
Вы хотите помочь?
Если у Вас есть дополнительная информация о расширение файла PLIST мы будем признательны, если Вы поделитесь ею с пользователями нашего сайта. Воспользуйтесь формуляром, находящимся здесь и отправьте нам свою информацию о файле PLIST.
Всем доброго хабрадня!
Сегодня я бы хотел рассказать о некоторых аспектах сохранения настроек и прочих данных программы в OS X и/или iOS. Как обычно, у нас есть несколько вариантов: Core Data, «голый» SQLite, свои бинарные форматы, свои текстовые форматы, NSUserDefaults и, как Вы уже наверняка слышали, файлы типа PLIST, то есть XML Property List.
Вкратце, plist-файлы представляют из себя обычный XML, но с некоторыми оговорками. К примеру, порядок тегов в нём обусловлен некоторыми правилами: они идут парами «ключ-значение», но теги типа «ключ» и теги типа «значение» располагаются на одном уровне. Типичный пример:
Дело в том, что массивы и словари при сериализации в плист проходятся рекурсивно, то есть, получается всего лишь ещё один уровень вложенности на каждый массив или словарь внутри другого контейнера. Отсюда и вытекают ограничения на содержимое: только типы, поддающиеся сериализации. То есть, массив вьюшек Вы таким способом не сериализуете, даже не пытайтесь. Но многие свои типы можете: достаточно имплементировать протокол NSCoding и получить NSData из своего объекта с помощью NSKeyedArchiver. А уж NSData и в плисте сохранить легко. Опробовать такой метод сериализации и десериализации своих объектов я оставляю Вам в качестве домашнего задания.
Очень часто с плистами разработчик работает посредством NSUserDefaults, пусть даже он об этом зачастую и не знает. Этот класс разработан для работы с глобальными настройками программы, хранимыми в
Итак, что же умеет этот класс? Для начала, он умеет преобразовывать NSDictionary и NSArray в NSData, содержащий наш plist. И, разумеется, он умеет делать обратные преобразования: из NSData в NSDictionary или NSArray.
Рассмотрим простой пример: создадим словарик с кучей данных (в том числе вложенных) и посмотрим на практике, во что это дело сохранится.
В результате выполнения этого кода, который слишком простой, что бы его ещё и комментировать, будет плист примерно такого вида:
Что, просто? Конечно просто! И даже XML достаточно удобочитаемый. А в консоль ещё и свалится текстовое описание нашего словарика:
Теперь будем загружать сохранённый на этом этапе плист:
И что же мы должны получить? Ну конечно же! Мы в консоли должны увидеть тот же симпатичный JSON-чик, что и при сохранении! Правда, нет гарантий, что он будет именно таким же: порядок следования элементов в NSDictionary не определён. Но все данные должны быть на месте.
Что ж, в этом уроке мы немного разобрались с форматом PLIST и научились работать с файлами такого типа с помощью Cocoa. Полный пример можно найти, как всегда, на гитхабе.
UPD: Как заметил mejedi, бинарный формат плиста иногда может записываться в файл медленней plain-XML формата.
XML пишется «в лоб», а при сохранении в бинарный формат происходит поиск и устранение дублирующих элементов (формат по сути представляет собой поток сущностей с взаимными ссылками, например если у нас два раза строка «hello world» встречается, хранить две копии не обязательно).
Сейчас посмотрел код, чтобы освежить память — на 10.6 все так, как я описал, а на 10.8 устранение дубликатов больше не делается, по-идее должно стать быстрее (релевантная функция называется __CFBinaryPlistWrite).
Изучаем файл настроек загрузки Mac OS X — com.apple.Boot.plist
Кратко опишем, что позволяет сделать файл com.apple.Boot.plist:
Последние опции будут полезны владельцам хакинтошей в случае возникновения проблем.
Редактирование файла
Теперь пару слов о том, как редактировать файл 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 в Доке.
При сохранении файла вам попросят ввести пароль.
Кроссплатформенное приложение на 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 автоматически добавлялся в бандл при каждой сборке, нужно добавить в файл проекта:
Entitlements.plist
Программы, устанавливаемые через App Store, будут работать в песочнице, для этого необходимо произвести некоторые приготовления. По правилам, нам, через QDesktopServices::storageLocation(), доступна папка вида имя_компании/имя_приложения (как это указано в iTunes Connect), потому нужно задать эти параметры явно:
Entitlements же, по сути, — файл разрешений, и те функции, которые в нем не указаны, будут заблокированы. Например, если мы хотим делать что-нибудь с сетью, следует установить флаг com.apple.security.network.client, и т.д. Возможные ключи с описаниями тут.
Ну и пример готового файла:
Публикация
Итак, можно выделить следующие ключевые моменты:
Скопировать
Для того, чтобы программа могла запускаться не только на системах с установленным Qt SDK, нужно запустить специализированную утилиту — macdeployqt, которая скопирует все необходимые плагины и фреймворки в бандл приложения. К сожалению, из-за ошибки в этой утилите не копируются файлы Info.plist для фреймворков, что не является проблемой для работы, но без них не получится корректно подписать приложение. Нужно заметить, что если программа использует модуль QtSql, будут скопированы все доступные драйверы. Все бы ничего, но из-за libqsqlodbc.dylib приложение отклоняют с формулировкой «За использование приватных методов», а из-за libqsqlpsql.dylib ругаются на использование устаревшей библиотеки. Чтобы не искушать судьбу, перед публикацией стоит снести ненужные драйверы, заодно немного уменьшить размер пакета. Также для уменьшения размера можно удалить лишние плагины форматов изображений, и т.д.
Подписать
Начиная с OS X 10.9, нужно обязательно подписывать не только приложение, но и все фреймворки, плагины. Не смотря на то, что в Technical Note 2206 написано, что правильным будет подписывать не папку фреймворка, а каталог версии, на практике сделать это не получается, да и нареканий при ревью не возникло.
Примеры команд:
После подписывания всех библиотек приходит очередь приложения целиком, как раз тут и используется файл Entitlements:
Проверяем, все ли прошло гладко:
Упаковать
Тут все делается одной командой, которая, впрочем, изменилась с момента написания официального мануала:
Для пробы можно сразу же запустить получившийся пакет: