firebase - FirebaseAuth.instance.signInWithEmailAndPassword(email, password) 使颤振崩溃
问题描述
Flutter App 在执行 firebase auth 功能 signInWithEmailAndPassword 时崩溃
我认为这个问题与不兼容的版本有关。但是对于较低的版本,我们遇到了 androidx 的问题。
Future<String> signInWithEmailAndPassword(String email, String password)async{
FirebaseUser user = (await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password)).user; //Here it crashes
return user.uid;
}
pubspec.yaml 中的依赖项:
dependencies:
flutter:
sdk: flutter
cloud_firestore: any
firebase_auth: 0.14.0+5
我在项目级别 .gradle 中的依赖项:
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'
}
在应用程序级别 .gradle
defaultConfig {
applicationId "com.example.testtool"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
和依赖项(也在应用程序级别.gradle):
dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.google.firebase:firebase-analytics:17.0.1'
implementation 'androidx.multidex:multidex:2.0.1'
}
apply plugin: 'com.google.gms.google-services'
这是错误:
I/flutter (25442): Another exception was thrown: NoSuchMethodError: The getter 'position' was called on null.
I/chatty (25442): uid=10234(com.example.testtool) 2.ui identical 8 lines
I/flutter (25442): Another exception was thrown: NoSuchMethodError: The getter 'position' was called on null.
W/BiChannelGoogleApi(25442): [FirebaseAuth: ] getGoogleApiForMethod() returned Gms: com.google.firebase.auth.api.internal.zzak@98a1ffc
E/JavaBinder(25442): *** Uncaught remote exception! (Exceptions are not yet supported across processes.)
E/JavaBinder(25442): java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v4/util/ArrayMap;
E/JavaBinder(25442): at com.google.firebase.auth.internal.zzam.zzc(Unknown Source:22)
E/JavaBinder(25442): at com.google.firebase.auth.internal.zzam.zzde(Unknown Source:17)
E/JavaBinder(25442): at com.google.firebase.auth.internal.zzam.zzdd(Unknown Source:8)
E/JavaBinder(25442): at com.google.firebase.auth.internal.zzan.zzdf(Unknown Source:1)
E/JavaBinder(25442): at com.google.firebase.auth.internal.zzm.isAnonymous(Unknown Source:47)
E/JavaBinder(25442): at com.google.firebase.auth.api.internal.zzep.zza(Unknown Source:9)
E/JavaBinder(25442): at com.google.firebase.auth.api.internal.zzdx.dispatchTransaction(Unknown Source:9)
E/JavaBinder(25442): at com.google.android.gms.internal.firebase_auth.zza.onTransact(Unknown Source:13)
E/JavaBinder(25442): at android.os.Binder.execTransact(Binder.java:731)
E/JavaBinder(25442): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.util.ArrayMap" on path: DexPathList[[zip file "/data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/lib/arm64, /data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/JavaBinder(25442): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
E/JavaBinder(25442): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/JavaBinder(25442): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/JavaBinder(25442): ... 16 more
E/AndroidRuntime(25442): FATAL EXCEPTION: Binder:25442_2
E/AndroidRuntime(25442): at com.google.firebase.auth.internal.zzat.zzi(Unknown Source:57)
E/AndroidRuntime(25442): at com.google.firebase.auth.internal.zzat.zzg(Unknown Source:10)
E/AndroidRuntime(25442): at com.google.firebase.auth.FirebaseAuth.zza(Unknown Source:62)
E/AndroidRuntime(25442): at com.google.firebase.auth.FirebaseAuth$zzb.zza(Unknown Source:5)
E/AndroidRuntime(25442): at com.google.firebase.auth.api.internal.zzcr.zzdx(Unknown Source:15)
E/AndroidRuntime(25442): at com.google.firebase.auth.api.internal.zzen.zzen(Unknown Source:35)
E/AndroidRuntime(25442): at com.google.firebase.auth.api.internal.zzen.zza(Unknown Source:41)
E/AndroidRuntime(25442): at com.google.firebase.auth.api.internal.zzep.zza(Unknown Source:9)
E/AndroidRuntime(25442): at com.google.firebase.auth.api.internal.zzdx.dispatchTransaction(Unknown Source:9)
E/AndroidRuntime(25442): at com.google.android.gms.internal.firebase_auth.zza.onTransact(Unknown Source:13)
E/AndroidRuntime(25442): at android.os.Binder.execTransact(Binder.java:731)
E/AndroidRuntime(25442): Caused by: java.lang.ClassNotFoundException: Didn't find class "android.support.v4.util.ArrayMap" on path: DexPathList[[zip file "/data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/lib/arm64, /data/app/com.example.testtool-H8ql3WqJ13OCb4aCfdLNsQ==/base.apk!/lib/arm64-v8a, /system/lib64]]
E/AndroidRuntime(25442): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
E/AndroidRuntime(25442): at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(25442): at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(25442): ... 16 more
I/Process (25442): Sending signal. PID: 25442 SIG: 9
Lost connection to device.
解决方案
问题是与 androidx 不兼容。如果您遇到类似情况,请尝试将您的项目迁移到 androidx https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility