首页 > 解决方案 > 添加flutter firebase auth ui后应用程序崩溃

问题描述

Flutter firebase auth UI 有一些问题,因为 firebase_auth 版本未匹配问题

我的颤振应用程序崩溃并且无法识别问题,在 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)

如何解决这个问题?

在项目“应用程序”中,已解析的 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

对于扩展调试信息,使用 ./gradlew --info :app:assembleDebug 从命令行执行 Gradle 以查看工件的依赖路径。此错误消息来自 google-services Gradle 插件,在 https://github.com/google/play-services-plugins 报告问题并通过将“googleServices { disableVersionCheck = false }”添加到您的 build.gradle 文件来禁用。

#flutter_firebase_ui 有很多问题 #google 请雇用我,我可以帮助您的开发人员

标签: flutterfirebaseuiflutter-dependencies

解决方案


依赖配置

对于 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-servicesfirebase_auth

Firebase 或 Firestore 初始化

至于应用程序初始化,我有这个

Firestore firestore = Firestore.instance;
firestore.settings(timestampsInSnapshotsEnabled: true);

在 my_initFirestore中,紧随其后被调用super.initState()

@override
void initState() {
    super.initState();
    _initFirestore();
    checkCurrentUser();
}

Firebase(以及我使用过的所有其他 Firebase 插件)的初始化方式类似,但使用firebase_core:依赖项而不是cloud_firestore:in pubspec.yaml

例如,来自flutter/plugins/packages/firebase_storageGitHub存储库

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));
}

您还可以使用这篇 Medium 文章作为开始使用 Flutter Firebase Auth UI 的指南。

为了将来参考,您可以导航到flutter/plugins/packages/{package name}Github 并找到main.dart里面的examples/lib演示。随意利用它来解决您的依赖问题!


推荐阅读