添加抖动Firebase身份验证ui

时间:2018-12-14 14:30:35

标签: flutter firebaseui flutter-dependencies

Flutter Firebase身份验证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)

如何解决这个问题?

  

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

     

以下依赖项是直接或直接的项目依赖项   具有传递依赖,从而导致与   问题。   -项目“ app”取决于项目“ firebase_auth”,该项目取决于com.google.firebase:firebase-auth@16.0.2   -项目“应用”取决于项目“ firebase_core”,而项目“ 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以查看到的dep endency路径   神器。此错误消息来自google-services Gradle   插件,在https://上报告问题   github.com/google/play-services-plugins并通过添加禁用   “ googleServices {disableVersionCheck = false}”到您的build.gradle   文件。

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

3 个答案:

答案 0 :(得分: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:依赖性,而不是cloud_firestore:中的pubspec.yaml

例如,来自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作为入门指南,以快速掌握Firebase Auth UI。

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

答案 1 :(得分:0)

使用FirebaseApp之前,需要对其进行初始化。您可以将其添加到您的onCreate方法中。

@Override
public void onCreate() {
    super.onCreate();
    FirebaseApp.initializeApp(this);
}

还要确保您的build.gradle中有依赖项

dependencies {
    ....
}

apply plugin: 'com.google.gms.google-services'

答案 2 :(得分:0)

我也面临同样的问题,并通过在AndroidManifest.xml中添加Facebook应用ID来解决 尝试在Android Studio上运行Android应用,您会收到错误消息