添加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"
    

...

具体注意compileSdkVersiontargetSdkVersion,以及google-servicesfirebase_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 集合

Flutter:firebase_auth 好像不行,怎么授权?

flutter-firebase_auth-gradlew.bat 异常退出