CocoaPods не обновляет Firebase SDK до версии 4.0.0

Я пытаюсь обновить мой проект Swift до Firebase new SDK Version 4.0.0 с помощью CocoaPods (как это было предложено в документации), но обновленный SDK, похоже, не устанавливается, даже если я следую инструкциям в документации.

Может ли кто-нибудь помочь мне понять, почему это не работает и что я могу сделать, чтобы обновить новый Firebase SDK?

Мой подфайл

# Uncomment this line to define a global platform for your project
platform :ios, '9.2'
# Uncomment this line if you're using Swift
use_frameworks!


target 'myProject' do

pod 'Firebase'
pod 'Firebase/Auth'
pod 'Firebase/Core'
pod 'Firebase/Storage'
pod 'Firebase/Database'
pod 'Firebase/Crash'
pod 'Firebase/Messaging'


pod 'Alamofire', '~> 4.4'

end

Когда я запускаю pod install, я получаю этот, казалось бы, многообещающий вывод (за исключением того, что он не является версией 4, как я думаю, это должно быть):

Analyzing dependencies
Downloading dependencies
Using Alamofire (4.4.0)
Installing Firebase 3.17.0 (was 3.17.0)
Using FirebaseAnalytics (3.9.0)
Using FirebaseAuth (3.1.1)
Using FirebaseCore (3.6.0)
Using FirebaseCrash (1.1.6)
Using FirebaseDatabase (3.1.2)
Using FirebaseInstanceID (1.0.10)
Using FirebaseMessaging (1.2.3)
Using FirebaseStorage (1.1.0)
Using GTMSessionFetcher (1.1.9)
Using GoogleToolboxForMac (2.1.1)
Using Protobuf (3.3.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 8 dependencies from the Podfile and 13 total pods installed.

Я могу сказать, что он не обновляется до последнего SDK, потому что новая документация по firebase не соответствует функциям, которые работают в моем проекте. Мой проект находится в Swift, поэтому, например:

Работы

FIRApp.configure()

Не работает (но предлагается документацией)

FirebaseApp.configure()

Я тоже пробовал эти решения:

Ответ 1

Не было ничего плохого в вашем оригинале Podfile;) Вы просто путаете pod install с pod update - вы использовали первый, но вместо этого вы должны использовать последний. Краткий обзор, чтобы разобраться:

установить. Когда вы запускаете pod install, он разрешает только зависимости для контейнеров, которые еще не указаны в Podfile.lock. Для контейнеров в Podfile.lock он загружает указанную там явную версию, не проверяя, доступна ли более новая версия - я считаю, что это (ожидаемое) поведение вызывало вашу проблему.

обновление pod. Если вы запустите pod update, CocoaPods обновит каждый код, указанный в вашем Podfile, до последней возможной версии. Конечно, соблюдая ограничения версии, указанные в вашем Podfile, если таковые имеются.

Для получения дополнительной информации, обязательно проверьте pod install vs. pod update.

Ответ 2

У меня была аналогичная проблема и застрял на следующем выходе, даже после запуска run pod repo remove master и pod install и pod update:

Using AmazonAd (2.2.15)
Using Firebase (3.17.0)
Using FirebaseAnalytics (3.9.0)
Using FirebaseCore (3.6.0)
Using FirebaseInstanceID (1.0.10)
Using Google (3.1.0)
Using Google-Mobile-Ads-SDK (7.19.1)
Using GoogleToolboxForMac (2.1.1)

Я все время видел заметку в выводе команды обновления pod:

[!] Google has been deprecated

Итак, я удалил Google из файла podfile:

 pod Google

Затем я снова запустил:

 pod update

и Received:

Using AmazonAd (2.2.15)
Installing Firebase 4.3.0 (was 3.17.0)
Installing FirebaseAnalytics 4.0.4 (was 3.9.0)
Installing FirebaseCore 4.0.8 (was 3.6.0)
Installing FirebaseInstanceID 2.0.4 (was 1.0.10)
Installing Google-Mobile-Ads-SDK 7.24.1 (was 7.19.1)
Using GoogleToolboxForMac (2.1.1)
Installing nanopb (0.3.8)

Ответ 3

Аналогично тому, как Alamofire в моем исходном podfile заявляет версию, которую я хотел бы сделать, сделав это для firebase, она обновила версию 4.0.0 и теперь работают соответствующие функции firebase.

Например:

Изменить (для каждого):

pod 'Firebase/Auth'

To:

pod 'Firebase/Auth', '~> 4.0.0'

Полный пример моего нового podfile и вывода после запуска pod install выглядит следующим образом.

Правильный подфайл:

# Uncomment this line to define a global platform for your project
platform :ios, '9.2'
# Uncomment this line if you're using Swift
use_frameworks!


target 'myProject' do

pod 'Firebase', '~> 4.0.0'
pod 'Firebase/Auth', '~> 4.0.0'
pod 'Firebase/Core', '~> 4.0.0'
pod 'Firebase/Storage', '~> 4.0.0'
pod 'Firebase/Database', '~> 4.0.0'
pod 'Firebase/Crash', '~> 4.0.0'
pod 'Firebase/Messaging', '~> 4.0.0'


pod 'Alamofire', '~> 4.4'

end

Выход

Analyzing dependencies
Downloading dependencies
Using Alamofire (4.4.0)
Using Firebase (4.0.0)
Using FirebaseAnalytics (4.0.0)
Using FirebaseAuth (4.0.0)
Using FirebaseCore (4.0.0)
Using FirebaseCrash (2.0.0)
Using FirebaseDatabase (4.0.0)
Using FirebaseInstanceID (2.0.0)
Using FirebaseMessaging (2.0.0)
Using FirebaseStorage (2.0.0)
Using GTMSessionFetcher (1.1.10)
Using GoogleToolboxForMac (2.1.1)
Using Protobuf (3.3.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 8 dependencies from the Podfile and 13 total pods installed

Ответ 4

У меня была та же проблема, и я просто исправил ее, изменив подсектор pod на полное имя таких как:

-    pod 'Firebase/Core'
-    pod 'Firebase/RemoteConfig'
+    pod 'FirebaseCore', '4.0.9'
+    pod 'FirebaseRemoteConfig', '2.0.3'

Скорее странно, что эта путаница произошла в первую очередь, но по крайней мере это исправляет ее.