我正在使用 Firebase 身份验证构建 Flutter 应用程序。当我在我的 android 模拟器或我的 android 手机上使用 flutter run 进行测试时,该应用程序运行良好,没有出现重大错误。
当我尝试构建 apk 或 appbundle 并且 Firebase.initializeApp() 失败时会出现问题。
由于我没有在调试模式下运行,我不确定如何跟踪此错误。
[更新]
我可以跟踪捕获从 Firebase.initializeApp() 抛出的异常的错误,并且是 MissingPluginException(在频道 plugins.flutter.io/firebase_core 上找不到方法 Firebase#initializeCore 的实现)
我仍然不明白为什么这个错误只是在发布时出现,而在调试时运行得很好。
这是我的 app/build.gradle 片段
(...)
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.onesignal.androidsdk.onesignal-gradle-plugin'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
(...)
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:26.2.0')
implementation 'com.google.firebase:firebase-dynamic-links'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-firestore'
}
还有我的项目 build.gradle 依赖
(...)
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.4'
classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.9, 0.99.99]'
}
(...)
还有我的 firebase 依赖
dependencies:
flutter:
sdk: flutter
firebase_core: ^0.7.0
cloud_firestore: ^0.16.0
firebase_auth: ^0.20.0+1
firebase_storage: ^7.0.0
答案 0 :(得分:0)
我遇到了同样的问题,所以我所做的是在我的 main.dart
文件中,我刚刚添加了这段代码,它对我有用。它的作用是,如果 Firebase.intitalizeApp()
失败,那么它会显示一个我创建的 errorPage,如果它加载,那么它可以显示应用程序主页,如果它仍在加载,则它显示一个加载页面。这是它的代码。希望它可以帮助您为我工作。
@override
Widget build(BuildContext context) {
return FutureBuilder(
// Initialize FlutterFire
future: Firebase.initializeApp(),
builder: (context, snapshot) {
// Check for errors
if (snapshot.hasError) {
return SomethingWentWrong();
}
// Show Application
if (snapshot.connectionState == ConnectionState.done) {
return StreamProvider<Help4YouUser>.value(
value: AuthService().user,
child: MaterialApp(
debugShowCheckedModeBanner: false,
home: Wrapper(),
),
);
}
// Initialization
return PouringHourGlassPageLoad();
},
);
}