Другое

Ошибка 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

Предпринятые шаги по устранению проблемы:

  1. Очистка кэшей:

    • rm -rf ~/Library/Developer/Xcode/DerivedData
    • rm -rf ~/Library/Caches/org.swift.swiftpm
    • rm -rf ~/Library/Caches/com.apple.dt.Xcode
    • rm -rf ~/Library/org.swift.swiftpm
  2. Сброс кэшей пакетов в Xcode:

    • File -> Packages -> Reset Package Caches
    • File -> Packages -> Resolve Package Versions
  3. Перезагрузка 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:

swift
// В Package.swift
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .exact("11.15.0")),

2. Уточнение требований к версиям зависимостей

Если вам нужна более новая версия Firebase SDK, попробуйте явно указать совместимые версии:

swift
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .upToNextMajor(from: "12.4.0")),

3. Изменение названия пакета

Как отмечено в ответах на StackOverflow, изменение названия пакета может помочь:

swift
// Вместо "Firebase" используйте "firebase-ios-sdk"
.package(url: "https://github.com/firebase/firebase-ios-sdk.git", .exact("12.4.0")),

4. Пошаговая очистка и переустановка

  1. Полностью удалите Firebase SDK из проекта
  2. Очистите все кэши, как вы уже делали
  3. Добавьте 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 модули только во внутренней реализации, используйте:

swift
@_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 с текущей средой разработки. Основные решения включают:

  1. Использование Firebase SDK версии 11.15.0 - рекомендованной для Xcode 26
  2. Уточнение версий зависимостей в Package.swift файле
  3. Постепенная интеграция - добавление Firebase без других SDK для тестирования
  4. Переход на CocoaPods как более стабильный вариант интеграции

Более того, для будущих проектов рекомендуется тщательно проверять совместимость всех зависимостей перед началом разработки и избегать использования бета-версий SDK в продакшн-приложениях.

Источники

  1. Firebase Apple SDK Release Notes - Compatibility Issues
  2. Firebase Installation Methods - Swift Package Manager Requirements
  3. StackOverflow - Firebase SPM Dependency Resolution
  4. StackOverflow - Package Name Issues
  5. StackOverflow - Xcode Version Compatibility
  6. Firebase Swift Package Manager Documentation
Авторы
Проверено модерацией
Модерация