3

Я хочу изменить настройки сборки .xcodeproj без использования Xcode IDE, но с помощью команд терминала (точнее, Codesigning Identity и Provisioning Profile).Настройка Xcode Build Settings Terminal

Я искал все, но нашел команды для создания/архивирования проекта с терминала, , которого я не хочу. Я хочу просто изменить настройки, так что, когда я открываю проект в Xcode, у него есть идентификаторы подписи и профиль подготовки, установленные для того, что я установил в Terminal.

Команда Xcodebuild только строит/архивирует проект, используя то, что я передаю как параметры, он не устанавливает их как значения в настройках сборки проекта.

Запуск xcodebuild -target <target-name> -showBuildSettings в терминале, где находится мой проект, дает мне полные настройки сборки проекта, но у меня не было никакого способа их установить.

Также я прочитал here об использовании -setObject, но это также не помогло мне, так как он также создает код, используя значения параметров, которые я дал вместо их фактической установки.

В настоящее время с помощью Xcode 6.3 и Xcode 7.

Любой вид помощи будет оценено.

ответ

3

Все настройки Xcode на самом деле хранятся в <project-name>.xcodeproj/project.pbxproj. Похоже

buildSettings = { 
    CODE_SIGN_ENTITLEMENTS = ""; 
    CODE_SIGN_IDENTITY = "iPhone Developer"; 
    "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 

    ... 

    PRODUCT_NAME = "$(TARGET_NAME)"; 
    PROVISIONING_PROFILE = ""; 
    SKIP_INSTALL = YES; 
}; 

подписи кода идентификации управляется CODE_SIGN_IDENTITY ключ и Provisioning Профиль контролируется PROVISIONING_PROFILE ключом.

project.pbxproj представляет собой текстовый файл, который можно редактировать с помощью традиционных инструментов для обработки текста в CLI, таких как СЭД с

sed -ie 's/CODE_SIGN_IDENTITY = "iPhone Developer"/CODE_SIGN_IDENTITY = ""/g' <project-name>.xcodeproj/project.pbxproj 
sed -ie 's/PROVISIONING_PROFILE = ""/PROVISIONING_PROFILE = "1c28c979-6bef-4917-aa34-92aecd91315c";/g' <project-name>.xcodeproj/project.pbxproj 

Вы можете получить список доступных подписывания идентичностей с

security find-identity -v -p codesigning 

Для PROVISIONING_PROFILE, это UUID файла инициализации, его можно получить ред с

grep -aA1 UUID /path/to/mobileprovision 
+1

Эй .. спасибо за ответ .. :) Хорошо .. так что я использовал свои шаги и свист .. Что мне нужно было достигнуто (хотя после того, как выяснить, что 'делает sed' команда) , Но, есть один улов! ** sed ** заменяет '' iPhone Developer ''на' '' ', что означает, что мне нужно, чтобы это значение было установлено на то, что я знаю (здесь,« Разработчик iPhone »). Аналогичный случай с профилем Provisioning. Могу ли я просто переписать все, что написано в этих полях, с тем, что мне нужно иметь там? –

+0

Я думаю, вы меня неправильно поняли. Профиль Codesigning и Provisioning Profile, который поставляется вместе с проектом, недоступен на моем MacBook, поэтому я не могу понять, что добавить в команды 'sed'. Вышеуказанные команды работают только в том случае, если для параметра Codesign и Provisioning Profile установлено значение «Автоматически». Во всех других случаях, например, когда «Профиль» подобен «15adc2c7-a08b-4541-a549-ea09f7deeeb4», и каждый раз, когда я получаю проект, у него есть такой профиль, как этот, который мне нужно перезаписать локально существующими профилями. –

+0

Если у вас нет Codesinging Cert и Provisioning Profile локально? Как вы можете построить проект? И неважно, где вы их получите. Значение, которое вы должны установить с помощью 'sed', всегда одинаково для конкретного Cert и Profile – Quanlong