Ошибка Firebase SDK в Xcode: решение проблемы SPM
Решаем ошибку 'unexpectedly did not find the new dependency' при установке Firebase SDK через Swift Package Manager в Xcode 26.0.1. Совместимые версии и методы устранения конфликтов зависимостей.
Почему возникает ошибка при установке Firebase SDK через Swift Package Manager в Xcode?
Среда:
- Xcode: 26.0.1
- macOS: Sequoia 15.6
Проблема:
При попытке установки Firebase SDK через Swift Package Manager (SPM) в Xcode возникает следующая ошибка:
stripe-ios:
Updating from https://github.com/stripe/stripe-ios
firebase-ios-sdk:
Fetching from https://github.com/firebase/firebase-ios-sdk.git
unexpectedly did not find the new dependency in the package graph: sourceControl(identity: firebase-ios-sdk, location: SwiftPM.SPMPackageDependency.SourceControlLocation.remote(SwiftPM.SPMSourceControlURL(sourceControlURL: https://github.com/firebase/firebase-ios-sdk.git)), requirement: 12.4.0 – Next Major)
Интегрированные компоненты:
- Stripe SDK
Предпринятые шаги по устранению проблемы:
-
Очистка кэшей:
rm -rf ~/Library/Developer/Xcode/DerivedDatarm -rf ~/Library/Caches/org.swift.swiftpmrm -rf ~/Library/Caches/com.apple.dt.Xcoderm -rf ~/Library/org.swift.swiftpm
-
Сброс кэшей пакетов в Xcode:
- File -> Packages -> Reset Package Caches
- File -> Packages -> Resolve Package Versions
-
Перезагрузка Xcode и Mac
Вопрос:
В чем может быть причина этой ошибки и как её можно решить?
Ошибка “unexpectedly did not find the new dependency in the package graph” при установке Firebase SDK через Swift Package Manager в Xcode 26.0.1 на macOS Sequoia 15.6 возникает из-за нескольких возможных причин, связанных с совместимостью версий и механизмами разрешения зависимостей.
Содержание
- Основные причины ошибки
- Решения проблемы
- Предотвращение будущих проблем
- Дополнительные рекомендации
- Выводы
Основные причины ошибки
1. Несовместимость версий Firebase SDK
Как отмечено в официальных заметках о выпуске Firebase, существуют проблемы совместимости между различными версиями Firebase SDK и Xcode 26:
“Due to a dependency issue, for Swift Package Manager users, use version 11.15.0 instead.”
Версия 12.4.0, которую вы используете, может конфликтовать с требованиями Xcode 26 и зависимостями Stripe SDK.
2. Проблемы разрешения зависимостей Swift Package Manager
Ошибка “unexpectedly did not find the new dependency” указывает на то, что Swift Package Manager не может корректно разрешить граф зависимостей между Firebase SDK и другими пакетами в вашем проекте. Как показывают дискуссии на StackOverflow, это происходит при наличии конфликтующих требований к версиям:
“firebase-ios-sdk >= 12.2.0 practically depends on ‘googledatatransport’ 10.1.0…<11.0.0”
3. Особенности Xcode 26 и Swift Package Manager
Несмотря на то что документация Firebase указывает, что Swift Package Manager поддерживается в Xcode 16.2 и выше, существуют известные проблемы с последними версиями Xcode:
“Fixed Sendable warnings introduced in the Xcode 26 beta”
4. Конфликт с Stripe SDK
Интеграция Stripe SDK может создавать дополнительные сложности, так как оба пакета имеют общие зависимости, которые могут конфликтовать между собой.
Решения проблемы
1. Использование совместимой версии Firebase SDK
Замените версию Firebase SDK на рекомендованную для Xcode 26:
// В Package.swift
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .exact("11.15.0")),
2. Уточнение требований к версиям зависимостей
Если вам нужна более новая версия Firebase SDK, попробуйте явно указать совместимые версии:
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "12.4.0")),
3. Изменение названия пакета
Как отмечено в ответах на StackOverflow, изменение названия пакета может помочь:
// Вместо "Firebase" используйте "firebase-ios-sdk"
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .exact("12.4.0")),
4. Пошаговая очистка и переустановка
- Полностью удалите Firebase SDK из проекта
- Очистите все кэши, как вы уже делали
- Добавьте Firebase SDK заново через Xcode:
- File → Add Packages…
- Вставьте URL:
https://github.com/firebase/firebase-ios-sdk.git - Выберите конкретную версию (не “Up to Next Major”)
5. Использование CocoaPods как альтернативы
Если Swift Package Manager продолжает вызывать проблемы, рассмотрите переход на CocoaPods, который остается каноническим способом интеграции Firebase:
pod 'Firebase/Core'
pod 'Firebase/Auth'
pod 'Firebase/Firestore'
Предотвращение будущих проблем
1. Мониторинг совместимости версий
Регулярно проверяйте официальные заметки о выпуске Firebase на предмет совместимости с используемой версией Xcode.
2. Использование стабильных версий SDK
Избегайте использования “master” ветки или “Next Major” версий в продакшн-проектах, как предупреждают эксперты:
“We shouldn’t use version 8.12.0 as it is still under development”
3. Ведение зависимостей в Package.swift
Вместо добавления пакетов через интерфейс Xcode, управляйте зависимостями через Package.swift файл для лучшего контроля версий.
Дополнительные рекомендации
1. Проверка окружения разработки
Убедитесь, что все инструменты разработки обновлены:
- Xcode Command Line Tools
- Swift Package Manager
- Git
2. Изоляция проблем
Попробуйте создать тестовый проект с Firebase SDK без Stripe SDK, чтобы определить, какой пакет вызывает конфликт.
3. Использование @_implementationOnly
Если вы импортируете Firebase модули только во внутренней реализации, используйте:
@_implementationOnly import FirebaseCore
@_implementationOnly import FirebaseFirestore
Выводы
Ошибка “unexpectedly did not find the new dependency in the package graph” при установке Firebase SDK в Xcode 26.0.1 вызвана, скорее всего, несовместимостью версий Firebase SDK 12.4.0 с текущей средой разработки. Основные решения включают:
- Использование Firebase SDK версии 11.15.0 - рекомендованной для Xcode 26
- Уточнение версий зависимостей в Package.swift файле
- Постепенная интеграция - добавление Firebase без других SDK для тестирования
- Переход на CocoaPods как более стабильный вариант интеграции
Более того, для будущих проектов рекомендуется тщательно проверять совместимость всех зависимостей перед началом разработки и избегать использования бета-версий SDK в продакшн-приложениях.