У меня есть относительно большой проект Xcode, который производит одно приложение. Тем не менее, у меня есть много клиентов / клиентов, которым требуется глубокая настройка и брендинг указанного приложения. Эти конфигурации включают в себя различную графику, несколько разных интерфейсов и реализаций и, возможно, самое главное, файлы .xcconfig.
Мой проект Xcode имеет выделенную группу, которая указывает на папку настроек конкретного клиента на диске, поэтому, открыв проект Xcode и его сборку, вы получите сборку одного приложения с настройками текущего клиента. Чтобы переключиться на другого клиента, я изменяю, куда указывает эта группа на диске. (Я также изменяю и переключаю параметры xcconfig «На основе» в информационной панели проекта, чтобы перезагрузить полное наследование xcconfig; простое изменение группы, содержащей один или несколько файлов xcconfig, не перезагружает это!) + клиенты. Немного утомительно переключать эту папку каждый раз, когда вам нужно собрать приложение для другого клиента и убедиться, что xcconfig правильный, но он работает.
Сейчас я нахожусь в процессе автоматизации сборок через командную строку и сталкиваюсь с проблемами. Быстрое и грязное решение для указания вышеупомянутой группы XCode в другую папку настроек состояло в том, чтобы скопировать файл ProjectName.xcodeproj/project.pbxproj
в ProjectName.xcodeproj/project-template.pbxproj
и поместить заполнители внутри этого файла, которые можно найти и заменить на имя и путь к нужной папке настроек. , Затем временно перезапишите project.pbxproj с измененным project-template.pbxproj и соберите, чтобы получить правильное приложение.
Как вы, вероятно, заметили, файл project.pbxproj был продублирован и изменен, и поэтому он выйдет из синхронизации, так как разработчики изменят оригинал и забудут также обновить шаблон. И, кроме того, в любом случае мне не следует так портить файлы pbxproj - это личное дело Xcode.
Итак, есть ли лучший способ сообщить XCode о папке, полной ресурсов, кода и файлов конфигурации, возможно, на этапе сборки с помощью сценария или переменной среды, а не на уровне группы проекта? Самым сложным, по-видимому, является цепочка xcconfig, поскольку каждый клиент имеет свой собственный файл xcconfig, который наследуется от файлов xcconfig отладки, разработки и распространения одного приложения.
Извините за многословность этого вопроса, но он немного сложен! Любые предложения будут с благодарностью!