2013-12-17 4 views
1

В моем проекте iOS я создал отдельный файл plist со значениями для всех ключей общего доступа и appIds et al.Связать несколько файлов info.plist с одной целью

Как указать в настройках проекта/цели, что этот новый файл plist является расширением файла info.plist по умолчанию? Могу ли я создать ссылку в основном файле info.plist, указывающую на новую?

Некоторые сторонние библиотеки пытаются найти ключевые значения в файле info.plist проекта, поэтому у меня нет возможности указать новый файл plist в точке ссылки.

я только был в состоянии указать один файл в нарастании Настройки> Тара и упаковка> Info.plist

ответ

2

Как я знаю, что вы не можете связать два Plist файлов. Вы можете установить только один plist для каждой целевой конфигурации.

Возможно, разделение файлов plist на конфигурацию - это то, что вы ищете. Для этого перейдите в «Настройки сборки»> «Упаковка»> «Файл Info.plist», разверните его и настройте разные пути файлов plist для указанных конфигураций (по умолчанию есть две конфигурации: «Отладка и выпуск»).

+0

Моя попытка - это модульное оформление моих объектов. Я хотел сохранить все facebook/twitter/pinterest/tumblr ... и все такие социальные метаданные в отдельном plist. Вы предлагаете выбрать файл plist во время сборки. – ScorpionKing2k5

+1

Это невозможно сделать, изменив параметры настройки, но я вижу одно решение для этого. Вы можете использовать сценарий ddd как один из фаз сборки в Build Phases (добавить редактор -> Добавить сборку фазы -> Добавить сценарий сборки сценария запуска). Этот скрипт должен обрабатывать соединение plist. – pjanecze

2

Насколько я знаю, может быть только один файл Info.plist, указанный в разделе «Настройки сборки», как вы упомянули выше.

Существует способ, однако, управлять файлами plist расширения, основанные на том, что приложения получают доступ к файлу info.plist с помощью метода - (NSDictionary *)infoDictionary. Т.е., вы могли бы:

  • надираться infoDictionary реализации по умолчанию с вашей собственной реализацией;

  • в вашей реализации infoDictionary, вы бы назвали первоначальную реализацию, затем продолжите возвращаемый NSDictionary, прочитав записи «plist files» расширения.

Вы можете даже определить свой собственный специальный ключ, например kExtensionPlistFile для использования в Info.plist, которые ссылаются на «расширение» файл Plist.

2

Как упоминалось в @pjanecze, вы можете получить то, что хотите, написав скрипт в фазе сборки. Например:

if [ $CONFIGURATION != 'Debug' ]; then 
    build_hash=`git log -1 --format="%h"` 
    /usr/libexec/PlistBuddy -c "Set :git_sha ${build_hash}" MyInfo.plist 
    /usr/libexec/PlistBuddy -c "delete :foobar" MyInfo.plist 
fi 

Вы можете получить больше информации о том, как использовать PlistBuddy путем доступа к справочной странице по man PlistBuddy.

Смежные вопросы