Meniu
Securizat & de încredere Datele tale sunt în siguranță
Suport dedicat 24/7 Suntem mereu aici pentru tine
Partener de încredere Soluții pentru business-ul tău

Forum

Depanare avansată a dependențelor iOS în Flutter

Caz real: Firebase, Google Sign-In, MLKit (mobile_scanner) & CocoaPods Acest articol documentează un caz real de dependency hell pe iOS într-un proiect…

Publicat: 1 februarie 2026

Caz real: Firebase, Google Sign-In, MLKit (mobile_scanner) & CocoaPods

Acest articol documentează un caz real de dependency hell pe iOS într-un proiect Flutter matur, cu multe pluginuri Google/Firebase. Scopul este să arate de ce apar conflictele, cum le identifici corect și care este un fix stabil, reproductibil — nu workaround-uri temporare.

Context tehnic

Stack-ul implicat:

  • Flutter (aplicație complexă, multe pluginuri)
  • Firebase (firebase_core, firebase_messaging, firebase_auth)
  • Google Sign-In
  • MLKit prin mobile_scanner
  • CocoaPods (iOS)

Simptomul principal:

CocoaPods could not find compatible versions for pod “GoogleUtilities/*”

A apărut sub mai multe forme:

  • GoogleUtilities/UserDefaults
  • GoogleUtilities/Environment
  • conflicte între ~> 7.x, < 8.0, ~> 8.0

De ce se întâmplă asta (explicația reală)

Problema NU este Flutter.
Problema NU este CocoaPods.

Problema este incompatibilitatea structurală dintre stack-urile Google, în special:

  1. Firebase
  • Firebase 10.x → GoogleUtilities 7.x
  • Firebase 11.x → GoogleUtilities 8.x
  1. Google Sign-In
  • GoogleSignIn 8.x → GoogleUtilities 8.x (prin AppCheck)
  1. MLKit (mobile_scanner)
  • mobile_scanner ≤ 5.x
    → MLKitCommon 11.x
    → GoogleUtilities < 8.0

💥 Rezultatul:

  • Firebase 10.x vrea 7.x
  • GoogleSignIn 8.x vrea 8.x
  • MLKit vrea < 8.0

=> imposibil de rezolvat prin pin-uri amestecate
=> CocoaPods face exact ce trebuie: refuză.

Greșeala clasică (și foarte frecventă)

Pin-uirea forțată în Podfile:

$FirebaseSDKVersion = ‘10.25.0’

Aceasta:

  • pare că rezolvă Firebase
  • DAR rupe Google Sign-In
  • ȘI intră în conflict cu MLKit

Este un anti-pattern în proiecte Flutter moderne cu ecosistem Google.

Soluția corectă (una singură, stabilă)

Principiu

👉 Toate dependențele Google trebuie aliniate pe aceeași generație (8.x)

Asta înseamnă:

  • Firebase 11.x
  • GoogleSignIn 8.x
  • MLKit / mobile_scanner compatibil cu GoogleUtilities 8.x

Fix-ul final (testat, stabil)

1️⃣ pubspec.yaml

dependencies:

firebase_core: ^3.15.2

firebase_messaging: ^15.2.10

firebase_auth: ^5.7.0

google_sign_in: ^6.3.0

mobile_scanner: ^7.1.4

⚠️ Important: mobile_scanner 7.x este cheia. Versiunile mai vechi blochează GoogleUtilities < 8.0.

2️⃣ ios/Podfile

Șterge complet orice pin Firebase.

Corect:

platform :ios, ‘15.0’

ENV[‘COCOAPODS_DISABLE_STATS’] = ‘true’

❌ Greșit (nu face asta):

$FirebaseSDKVersion = ‘10.25.0’

3️⃣ Clean complet (ordine strictă)

cd <project-root>

flutter clean

rm -rf .dart_tool pubspec.lock

flutter pub get

ls ios/Flutter/Generated.xcconfig   # trebuie să existe

cd ios

rm -rf Pods Podfile.lock .symlinks Runner.xcworkspace

pod repo update

pod install –repo-update

4️⃣ Xcode

Deschide doar:

ios/Runner.xcworkspace

NU Runner.xcodeproj.

De ce această soluție funcționează

  • Elimină conflictele 7.x vs 8.x
  • Nu forțează CocoaPods
  • Urmează direcția oficială Google
  • Este compatibilă cu upgrade-uri viitoare
  • Evită bug-uri runtime subtile (AppCheck, Firebase Messaging, Sign-In)

Lecții cheie (pentru proiecte mari)

  1. Nu mixa generații Google (Firebase 10 + GoogleSignIn 8 + MLKit vechi = dezastru)
  2. Pin-urile în Podfile sunt ultimul resort, nu soluția
  3. În Flutter:
    • rezolvarea e aproape întotdeauna în pubspec.yaml
  4. mobile_scanner este un punct critic pe iOS
  5. Dacă vezi GoogleUtilities/* în eroare → problema e de aliniere, nu de cache

Concluzie

Dacă ai Firebase + Google Sign-In + MLKit într-un proiect Flutter iOS:

  • alinierea versiunilor este obligatorie
  • workaround-urile temporare te vor bloca din nou
  • soluția corectă este una singură: stack Google modern, coerent

Poți salva articolul acesta ca checklist de „advanced troubleshooting” — te va scuti de ore (sau zile) data viitoare.

Files:

Advanced iOS Dependency Troubleshooting in Flutter

Advanced iOS Dependency Troubleshooting in Flutter-RO