添加flutter firebase auth ui后应用程序崩溃
Posted
技术标签:
【中文标题】添加flutter firebase auth ui后应用程序崩溃【英文标题】:App crashed after adding flutter firebase auth ui 【发布时间】:2019-05-15 20:05:51 【问题描述】:Flutter firebase auth UI 有一些问题,因为 firebase_auth 版本不匹配问题
我的 Flutter 应用程序崩溃了,无法识别问题,在 android studio 中打开后,我遇到了问题,就在这里
Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.mycom.mypetshop. Make sure to call FirebaseApp.initializeApp(Context) first.
at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.2:240)
at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source)
at io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.<init>(FirebaseAuthPlugin.java:54)
at io.flutter.plugins.firebaseauth.FirebaseAuthPlugin.registerWith(FirebaseAuthPlugin.java:47)
at io.flutter.plugins.GeneratedPluginRegistrant.registerWith(GeneratedPluginRegistrant.java:20)
at com.vyapari2online.mypetshop.MainActivity.onCreate(MainActivity.java:11)
at android.app.Activity.performCreate(Activity.java:5990)
如何解决?
在项目“app”中,解决了 Google Play 服务库依赖项 取决于另一个确切版本(例如“[15.0.1]”,但不是 正在解决该版本。图书馆展示的行为将 不为人知。
依赖失败:com.google.android.gms:play-services-flags:15.0.1 -> com.google.android.gms:play-services-basement@[ 15.0.1],但 play-services-basement 版本是 16.0.1。
以下依赖项是直接或直接的项目依赖项 具有传递依赖关系,导致艺术 ifact 与 问题。 -- 项目“app”依赖于项目“firebase_auth”,该项目依赖于 com.google.firebase:firebase-auth@16.0.2 -- 项目“app”依赖于项目“firebase_core”,该项目依赖于 com.google.firebase:firebase-core@16.0.4 -- 项目“app”依赖于项目“cloud_firestore”,该项目依赖于 com.google.firebase:firebase-firestore@17.1.1 -- 项目“app”依赖于项目“google_sign_in”,该项目依赖于 com.google.android.gms:play-services-auth@16.0.1
对于扩展调试信息,从命令行执行 Gradle ./gradlew --info :app:assembleDebug 查看依赖路径 神器。此错误消息来自 google-services Gradle 插件,在 https:// 报告问题 github.com/google/play-services-plugins 并通过添加禁用 “googleServices disableVersionCheck = false ”到您的 b uild.gradle 文件。
#flutter_firebase_ui 有很多问题#google 请雇用我,我可以帮助您的开发人员
【问题讨论】:
Midhilaj,你下面的进展如何? 【参考方案1】:依赖配置
对于 gradle 问题,请确保您的 Android SDK 和 Firebase/Firestore 插件兼容,版本兼容。这对我有用:
dependencies
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.google.firebase:firebase-auth:16.0.5'
在模块/应用中build.gradle
:
android
compileSdkVersion 27
lintOptions
disable 'InvalidPackage'
defaultConfig
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.timeswap.timeswapcore"
minSdkVersion 17
targetSdkVersion 27
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
...
具体注意compileSdkVersion
、targetSdkVersion
,以及google-services
和firebase_auth
的版本号。摆弄这些数字最终让我找到了这个配置,它可能会帮助你找到合适的配置。
Firebase 或 Firestore 初始化
关于App初始化,我有这个
Firestore firestore = Firestore.instance;
firestore.settings(timestampsInSnapshotsEnabled: true);
在我的_initFirestore
中,在super.initState()
之后调用
@override
void initState()
super.initState();
_initFirestore();
checkCurrentUser();
Firebase(以及我使用过的所有其他 Firebase 插件)的初始化方式类似,但使用 firebase_core:
依赖项而不是 pubspec.yaml
中的 cloud_firestore:
。
例如,来自flutter/plugins/packages/firebase_storage
GitHub repo:
void main() async
final FirebaseApp app = await FirebaseApp.configure(
name: 'test',
options: FirebaseOptions(
googleAppID: Platform.isios
? '1:159623150305:ios:4a213ef3dbd8997b'
: '1:159623150305:android:ef48439a0cc0263d',
gcmSenderID: '159623150305',
apiKey: 'AIzaSyChk3KEG7QYrs4kQPLP1tjJNxBTbfCAdgg',
projectID: 'flutter-firebase-plugins',
),
);
final FirebaseStorage storage = FirebaseStorage(
app: app, storageBucket: 'gs://flutter-firebase-plugins.appspot.com');
runApp(MyApp(storage: storage));
您还可以使用 this Medium post 作为指南,开始使用 Flutter Firebase Auth UI。
为了将来参考,您可以导航到 Github 上的 flutter/plugins/packages/package name
并在 examples/lib
中找到 main.dart
以进行演示。随意利用它来解决您的依赖问题!
【讨论】:
【参考方案2】:您需要在使用之前初始化FirebaseApp
。您可以将其添加到您的 onCreate
方法中。
@Override
public void onCreate()
super.onCreate();
FirebaseApp.initializeApp(this);
还要确保你的 build.gradle
中有依赖项
dependencies
....
apply plugin: 'com.google.gms.google-services'
【讨论】:
【参考方案3】:我也面临同样的问题,并通过在 AndroidManifest.xml 中添加 Facebook 应用程序 ID 来解决 尝试使用 Android Studio 运行 Android 应用,您将收到错误消息
【讨论】:
以上是关于添加flutter firebase auth ui后应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
Flutter - firebase_auth updateProfile 方法不起作用
如何在 Flutter 中使用 Firebase Auth 和 Firestore
Flutter 和 Firebase:任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败
Flutter:显示来自经过身份验证的 Firebase Auth 用户的带有 StreamBuilder 的一些 Firestore 集合