Один и тот же ключ между несколькими файлами Info.plist на схему?
Мое приложение Info.plist
файл имеет около 20/30 ключей внутри. Внешний SDK, который мы реализуем, требует, чтобы его ключ приложения был установлен в Info.plist
, но требует отдельных ключей для схем отладки, корпоративного распространения и выпуска.
Есть ли способ создать условные дополнения к Info.plist
без необходимости поддерживать три дубликата файла (и дублировать все остальные ключи, которые одинаковы для всех целей)?
В основном то, что я хотел бы, это база plist
точно так же, как сейчас, то дополнительные новые -Debug
, -Distribution
а также Release
те, которые просто содержат этот новый ключ. Чего я стараюсь избегать, так это повторения всех ключей, поскольку в будущем добавление новых будет затруднено.
Это возможно?
1 ответ
Есть несколько вещей, которые вы можете попробовать.
Скрипт запуска Xcode, выполняемый перед сборкой приложения. Это скрипт, который автоматически выполняется перед сборкой. Скажем, 3 дубликата plist-файлов называются InfoA.plist, InfoB.plist и InfoC.plist, которые являются точными дубликатами. При создании проекта содержимое InfoA.plist дублируется в InfoB.plist и InfoC.plist. Для этого потребуются некоторые знания написания сценария оболочки, но сценарий довольно прост.
Вы можете дублировать и переименовывать файлы в скрипте. Или вы можете использовать инструменты командной строки, чтобы скопировать содержимое основного файла в дубликаты файлов. Две утилиты командной строки, которые вы можете использовать для изменения содержимого файлов plist: plutil и https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/PlistBuddy.8.html. Эти ссылки могут помочь: Добавить файлы в проект XCode из сценария?,
Измените схему и добавьте предварительное действие. Ваши схемы также позволяют вам добавлять предварительные действия к вашей сборке, и вы можете сделать то же, что и выше, но настроить его как предварительное действие вместо сценария фазы сборки.
Вот несколько ссылок, которые могут помочь: как заставить xcode запускать скрипт перед зависимостями?, https://www.objc.io/issues/6-build-tools/build-process/, Xcode: запуск скрипта перед каждой сборкой, который напрямую изменяет исходный код, но вы также можете поискать "скрипт запуска xcode перед сборкой" для получения дополнительных ссылок.