#xcode #xcodebuild
#xcode #xcodebuild
Вопрос:
Справочная информация: в Xcode 8 появились новые возможности для «автоматического обновления подписи». При отсутствии профилей подготовки на сборном mac Xcode автоматически извлекает необходимые профили с портала разработчиков Apple. rm -rf ~/Library/MobileDevice/Provisioning Profiles
Затем можно открыть проект Xcode, и Xcode автоматически извлечет профили, в Xcode появится «Подписание обновлений»:
Как запустить это «подписание обновлений» из командной строки? На странице руководства для xcodebuild об этом не упоминается. Простой запуск «xcodebuild» не запускает этот шаг.
Ответ №1:
Нет способа сделать это с помощью xcodebuild
.
Тем не менее, у меня есть обходной путь, который, похоже, выполняет задачу за меня. Я использую AppleScript, чтобы открыть рабочую область в Xcode, подождать соответствующее количество времени (скажем, 10 секунд), а затем выйти из Xcode. Обновление подписи выполняется при открытии рабочей области, а не при попытке сборки, поэтому этого достаточно, чтобы устранить любые проблемы с подписью.
Используемый мной AppleScript выглядит следующим образом (на основе некоторого кода, который я нашел в Интернете):
tell application "/Applications/Xcode.app"
open "/Users/gary/MyWorkspace.xcworkspace"
set workspaceDocument to workspace document "MyWorkspace.xcworkspace"
-- Wait for the workspace document to load with a 60 second timeout
repeat 120 times
if loaded of workspaceDocument is true then
exit repeat
end if
delay 0.5
end repeat
if loaded of workspaceDocument is false then
error "Xcode workspace did not finish loading within timeout."
end if
-- Xcode will only update the signing for targets in the active scheme,
-- so make sure the required scheme is the active one
set schemeToUse to scheme "SchemeToUse" of workspaceDocument
set active scheme of workspaceDocument to schemeToUse
-- The time taken to update signing issues is related to the number of targets.
-- The number of targets built by a scheme is not exposed through AppleScript,
-- so count the total number of targets in the workspace
set totalTargets to 0
repeat with theProject in projects in workspaceDocument
set totalTargets to totalTargets (count of targets of theProject)
end repeat
-- For each target, wait a short amount of time
repeat totalTargets times
delay 3.0
end repeat
quit
end tell
Вам нужно будет изменить путь к рабочей области, имя рабочей области и имя схемы для вашего случая.
Существует много способов запуска AppleScript из командной строки, включая osascript
команду, но я делал это из Python.