Один и тот же ключ между несколькими файлами 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 перед сборкой" для получения дополнительных ссылок.

Другие вопросы по тегам