Flutter项目iOS正常,Android调用Firebase.initializeApp()抛channel-error异常求助
解决Flutter Android端Firebase.initializeApp()抛出Channel-Error异常
问题现象
- iOS端项目运行正常,Android端调用
Firebase.initializeApp()时抛出如下异常:PlatformException (PlatformException(channel-error, Unable to establish connection on channel., null, null))
完整堆栈日志
✓ Built build/app/outputs/flutter-apk/app-debug.apk. W/FlutterActivityAndFragmentDelegate(19624): A splash screen was provided to Flutter, but this is deprecated. See flutter.dev/go/android-splash-migration for migration steps. Connecting to VM Service at ws://127.0.0.1:51576/EjKjPfki7E8=/ws E/flutter (19624): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: PlatformException(channel-error, Unable to establish connection on channel., null, null) E/flutter (19624): #0 FirebaseCoreHostApi.initializeCore package:firebase_core_platform_interface/…/pigeon/messages.pigeon.dart:199 E/flutter (19624): <asynchronous suspension> E/flutter (19624): #1 MethodChannelFirebase._initializeCore package:firebase_core_platform_interface/…/method_channel/method_channel_firebase.dart:29 E/flutter (19624): <asynchronous suspension> E/flutter (19624): #2 MethodChannelFirebase.initializeApp package:firebase_core_platform_interface/…/method_channel/method_channel_firebase.dart:73 E/flutter (19624): <asynchronous suspension> E/flutter (19624): #3 Firebase.initializeApp package:firebase_core/src/firebase.dart:40 E/flutter (19624): <asynchronous suspension> E/flutter (19624): #4 main package:cadsys_adm/main.dart:11 E/flutter (19624): <asynchronous suspension> E/flutter (19624):
相关代码与依赖
触发异常的main代码
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(MyApp()); }
pubspec.yaml中的Firebase依赖
firebase_core: ^1.19.2 firebase_messaging: ^12.0.3
可行解决方案
以下是针对该Android端独有异常的排查和解决方向:
升级Firebase依赖版本
当前使用的依赖版本较旧,存在通道兼容性问题。建议升级到稳定版最新版本,示例:firebase_core: ^2.24.2 firebase_messaging: ^14.7.11升级后执行
flutter pub get,再执行flutter clean+flutter pub get清理缓存后重新编译。校验Android端Firebase配置
- 确认
android/app/google-services.json是从Firebase控制台正确下载的,且文件内的包名与android/app/build.gradle中的applicationId完全一致。 - 检查
android/build.gradle中是否添加了正确的Google服务插件依赖:dependencies { classpath 'com.google.gms:google-services:4.4.0' // 版本不低于4.3.10即可 } - 确认
android/app/build.gradle末尾已应用插件:apply plugin: 'com.google.gms.google-services'
- 确认
调整初始化时机
在WidgetsFlutterBinding.ensureInitialized()后添加短暂延迟,确保Flutter与原生通道完全初始化:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Future.delayed(const Duration(milliseconds: 500)); await Firebase.initializeApp(); runApp(MyApp()); }适配Android SDK版本
确保android/app/build.gradle中的SDK版本符合要求:android { compileSdkVersion 34 defaultConfig { minSdkVersion 21 targetSdkVersion 34 } }彻底清理构建缓存
执行以下命令清理后重新编译:flutter clean cd android && ./gradlew clean cd .. && flutter pub get flutter run
内容的提问来源于stack exchange,提问作者Robert Benedetto
相关产品推荐
相关产品推荐

