Вопрос или проблема
Мы только что обновили версию XCode в наших Azure Pipelines с 15.4 до 16.0. Мы используем Microsoft Hosted Agent, macOS-14. У нас есть задача в Pipeline, выполняющая следующее:
sudo xcode-select -switch /Applications/Xcode_16.0.app
xcode-select -print-path
xcodebuild -version
Однако при запуске Pipeline мы получаем ошибку:
xcrun: error: unable to find utility "actool", not a developer tool or in PATH
С 15.4 все работало отлично, но мы обновили, потому что в 15.4 у нас были ошибки компиляции MAUI, такие как:
error MT4162: The type 'UIKit.NSAdaptiveImageGlyph' (используемый в качестве параметра в UIKit.UITextField.InsertAdaptiveImageGlyph) недоступен в iOS 17.5 (он был представлен в iOS 18.0). Пожалуйста, соберите с новым iOS SDK (обычно это делается с помощью самой последней версии Xcode)
Есть какие-нибудь идеи, что может быть не так?
Ответ или решение
Проблема, с которой вы столкнулись, связана с отсутствием утилиты actool
после обновления Xcode до версии 16.0 на Azure DevOps Pipelines. Эта утилита необходима для сборки проектов, использующих Asset Catalogs, и ее отсутствие может быть вызвано несколькими причинами. Давайте разберемся, как решить вашу проблему.
Решение
-
Проверьте правильность установки Xcode:
Убедитесь, что Xcode версии 16.0 установлен правильно. Проверьте, что он доступен в указанном вами пути/Applications/Xcode_16.0.app
. Запустите следующие команды, чтобы удостовериться, что Xcode установлен корректно:sudo xcode-select --switch /Applications/Xcode_16.0.app xcode-build -version xcode-select -print-path
Если путь отображается неверно или команда
xcodebuild
не работает, то стоит переустановить Xcode. -
Проверьте наличие утилиты
actool
:
Утилитаactool
находится в каталоге Xcode в следующем пути:/Applications/Xcode_16.0.app/Contents/Developer/usr/bin/actool
Выполните команду для проверки ее наличия:
ls /Applications/Xcode_16.0.app/Contents/Developer/usr/bin/actool
Если файл не найден, это может означать, что ваш Xcode установлен неправильно.
-
Обновите пути:
Поскольку вы используете Azure DevOps, убедитесь, что ваша конфигурация AGENT корректно указывает на нужные версии Xcode и их инструменты. Например, попробуйте установить переменные окружения, чтобы указать на правильные пути:export PATH="/Applications/Xcode_16.0.app/Contents/Developer/usr/bin:$PATH"
Это должно помочь системе распознать
actool
. -
Запустите Xcode License Agreement:
Иногда, после обновления Xcode, необходимо согласиться с лицензией. Это можно сделать с помощью следующей команды:sudo xcodebuild -license
Убедитесь, что вы согласились с условиями.
-
Проверьте наличие обновлений для Azure DevOps:
Если проблема все еще существует, проверьте наличие обновлений для Azure DevOps, так как поддержка новых версий Xcode может быть добавлена в более поздних версиях. -
Используйте другой хостинг:
Если проблема не решается, рассмотрите возможность использования Self-Hosted Agent с предустановленной версией Xcode 16.0, что иногда позволяет установить больше контроля над инструментами и путями.
Заключение
Если все вышеперечисленные шаги не помогают, я рекомендую обратиться в службу поддержки Azure DevOps или на форумы сообщества, чтобы узнать о возможных особенностях совместимости версии Xcode и инструментов сборки. Вы также можете попробовать временно вернуться к Xcode 15.4, если это возможно, пока проблема с версией 16.0 не будет решена.