Перейти к основному содержимому

Таргетам Swift Package требуется команда разработчика

Unity: Все версии | Платформа: iOS | Зависимости: Swift Package Manager

Описание проблемы

Архивация Xcode-проекта завершается ошибкой сразу после этапа очистки. На каждый Swift-пакет, который поставляет ресурсы, приходится своя ошибка:

error: Signing for "Firebase_FirebaseRemoteConfig" requires a development team.
Select a development team in the Signing & Capabilities editor.
(in target 'Firebase_FirebaseRemoteConfig' from project 'Firebase')

При обычной сборке Build & Run проблема не проявляется, поскольку ресурсные бандлы подписываются только во время архивации и экспорта.

Swift Package Manager создаёт отдельный Xcode-проект для каждого пакета. Внутри такого проекта появляется таргет <ИмяПакета>_<ИмяТаргета> для каждого таргета с ресурсами. У этих таргетов нет собственной команды разработчика, они наследуют её от основного проекта. Если в основном проекте команда не задана, подпись завершается ошибкой.

Решение

Укажите команду разработчика в Unity: Project Settings → Player → iOS → Identification → Signing Team ID. Unity запишет её в экспортированный Xcode-проект, и таргеты Swift Package унаследуют это значение.

Unity Build Automation

Unity Build Automation удаляет эту настройку из экспортированного проекта и передаёт в xcodebuild только идентификатор подписи, поэтому заполнение Team ID в Unity там не помогает. Передайте команду разработчика через аргументы командной строки, используя собственный Gymfile:

xcargs("-UseModernBuildSystem=YES CODE_SIGN_STYLE=Manual DEVELOPMENT_TEAM=<TEAM_ID>")

Сохраните -UseModernBuildSystem=YES. Unity Build Automation передаёт этот флаг по умолчанию, а объявление xcargs заменяет значение целиком.

Положите Gymfile рядом с файлом config.json:

{
"gymfile": "path/to/your/Gymfile"
}

После этого укажите путь к config.json в настройках: Build target → Edit → Edit Advanced Options → Platform specific settings (iOS) → Custom Fastlane Configuration Path. Настройка задаётся отдельно для каждой цели сборки, поэтому своя запись нужна каждой из них.

примечание

Unity знает о проблеме и описывает это решение как временное. См. Swift Packages and Automatic Signing.