Как лучше всего поменять местами содержимое Xcode для проектов, предназначенных для многих клиентов?

У меня есть относительно большой проект Xcode, который создает одно приложение. Однако у меня много клиентов / заказчиков, которым требуется глубокая настройка и брендирование указанного приложения. Эти конфигурации включают различную графику, несколько различных интерфейсов и реализаций и, что, возможно, наиболее важно, файлы .xcconfig.

В моем проекте Xcode есть специальная группа, которая указывает на папку настроек конкретного клиента на диске, поэтому, открыв проект Xcode и создав его, вы получите сборку одного приложения с настройками текущего клиента. Чтобы переключиться на другого клиента, я меняю место на диске, на которое указывает эта группа. (Я также изменяю и переключаю настройки xcconfig «На основе» в панели информации проекта, чтобы перезагрузить полное наследование xcconfig; простое изменение группы, содержащей один или несколько файлов xcconfig, не перезагружает это!) Это отлично сработало для 100 + клиенты. Немного утомительно переключать эту папку каждый раз, когда вам нужно создать приложение для другого клиента и убедиться, что xcconfig правильный, но он работает.

Сейчас я занимаюсь автоматизацией сборки через командную строку, и у меня проблемы. Быстрым и грязным решением для указания вышеупомянутой группы Xcode в другую папку настройки было скопировать ProjectName.xcodeproj / project.pbxproj в ProjectName.xcodeproj / project-template.pbxproj и поместите в этот файл заполнители, которые можно найти и заменить на имя и путь к желаемой папке настройки. Затем временно перезапишите project.pbxproj измененным project-template.pbxproj и выполните сборку, чтобы получить правильное приложение.

Как вы, наверное, заметили, project.pbxproj был продублирован и изменен, и поэтому он будет рассинхронизирован, поскольку разработчики изменяют оригинал и забывают также обновить шаблон. И, кроме того, мне все равно не стоило возиться с файлами pbxproj подобным образом - это личные вещи Xcode.

Итак, есть ли лучший способ сообщить Xcode о папке, полной ресурсов, кода и файлов конфигурации, возможно, на этапе сборки с помощью сценария или переменной среды, а не на уровне группы проекта? Самым сложным элементом кажется цепочка xcconfig, поскольку у каждого клиента есть собственный файл xcconfig, который наследуется от файлов xcconfig отладки, разработки и распространения отдельного приложения.

Извините за многословность этого вопроса, но это немного сложно! Любые предложения будут ценны!

7
задан Collin Allen 18 October 2011 в 19:57
поделиться