exception - 尝试将数据推送到 Firebase 时,Flutter 应用程序中断
问题描述
所以我正在使用firebase插件并按照谷歌所说的将它连接到firebase,但是如果我尝试添加(创建)一些东西,它会破坏应用程序。
这是我的火力基地设置:
我已经从添加到 application/build.grandle 的 firebase 下载了 google-services.json:
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.android.tools.build:gradle:3.3.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
我的 grundle 文件到 application/app/build.grundle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
android {
compileSdkVersion 28
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.comp.appname"
minSdkVersion 21
targetSdkVersion 27
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
}
flutter {
source '../..'
}
dependencies {
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation 'com.google.firebase:firebase-firestore:18.1.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
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'
}
apply plugin: 'com.google.gms.google-services'
这是有错误的构建
Launching lib\main.dart on Android SDK built for x86 in debug mode...
Initializing gradle...
Resolving dependencies...
Running Gradle task 'assembleDebug'...
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
Built build\app\outputs\apk\debug\app-debug.apk.
Syncing files to device Android SDK built for x86...
D/ ( 7903): HostConnection::get() New Host Connection established 0xe4dd3840, tid 7928
D/EGL_emulation( 7903): eglMakeCurrent: 0xe4dc10c0: ver 3 1 (tinfo 0xe53dc010)
D/skia ( 7903): Program linking failed.
I/chatty ( 7903): uid=10087(com.comp.appname) 1.gpu identical 9 lines
D/skia ( 7903): Program linking failed.
D/skia ( 7903): Program linking failed.
D/skia ( 7903): Program linking failed.
I/chatty ( 7903): uid=10087(com.comp.appname) 1.gpu identical 2 lines
D/skia ( 7903): Program linking failed.
W/DynamiteModule( 7903): Local module descriptor class for providerinstaller not found.
I/DynamiteModule( 7903): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller( 7903): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
I/presentationap( 7903): The ClassLoaderContext is a special shared library.
I/chatty ( 7903): uid=10087(com.comp.appname) FirestoreWorker identical 2 lines
I/presentationap( 7903): The ClassLoaderContext is a special shared library.
W/presentationap( 7903): Accessing hidden field Ldalvik/system/BaseDexClassLoader;->pathList:Ldalvik/system/DexPathList; (light greylist, reflection)
W/presentationap( 7903): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryDirectories:Ljava/util/List; (light greylist, reflection)
W/presentationap( 7903): Accessing hidden field Ldalvik/system/DexPathList;->systemNativeLibraryDirectories:Ljava/util/List; (light greylist, reflection)
W/presentationap( 7903): Accessing hidden field Ldalvik/system/DexPathList;->nativeLibraryPathElements:[Ldalvik/system/DexPathList$NativeLibraryElement; (light greylist, reflection)
W/presentationap( 7903): Accessing hidden method Ldalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement; (light greylist, reflection)
V/NativeCrypto( 7903): Registering com/google/android/gms/org/conscrypt/NativeCrypto's 284 native methods...
W/presentationap( 7903): Accessing hidden method Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; (light greylist, reflection)
D/NetworkSecurityConfig( 7903): No Network Security Config specified, using platform default
W/presentationap( 7903): Accessing hidden field Ljavax/net/ssl/SSLSocketFactory;->defaultSocketFactory:Ljavax/net/ssl/SSLSocketFactory; (light greylist, reflection)
W/presentationap( 7903): Accessing hidden field Ljavax/net/ssl/SSLServerSocketFactory;->defaultServerSocketFactory:Ljavax/net/ssl/SSLServerSocketFactory; (light greylist, reflection)
I/ProviderInstaller( 7903): Installed default security provider GmsCore_OpenSSL
E/AndroidRuntime( 7903): FATAL EXCEPTION: AsyncTask #2
E/AndroidRuntime( 7903): Process: com.comp.appname, PID: 7903
E/AndroidRuntime( 7903): java.lang.RuntimeException: An error occurred while executing doInBackground()
E/AndroidRuntime( 7903): at android.os.AsyncTask$3.done(AsyncTask.java:354)
E/AndroidRuntime( 7903): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
E/AndroidRuntime( 7903): at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
E/AndroidRuntime( 7903): at java.util.concurrent.FutureTask.run(FutureTask.java:271)
E/AndroidRuntime( 7903): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
E/AndroidRuntime( 7903): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/AndroidRuntime( 7903): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/AndroidRuntime( 7903): at java.lang.Thread.run(Thread.java:764)
E/AndroidRuntime( 7903): Caused by: java.lang.NoSuchMethodError: No virtual method set(Lcom/google/firebase/firestore/DocumentReference;Ljava/util/Map;)Lcom/google/firebase/firestore/Transaction; in class Lcom/google/firebase/firestore/Transaction; or its super classes (declaration of 'com.google.firebase.firestore.Transaction' appears in /data/app/com.comp.appname-GbnYcinQxOfE2R1J20iZcg==/base.apk!classes9.dex)
E/AndroidRuntime( 7903): at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$6.doInBackground(CloudFirestorePlugin.java:379)
E/AndroidRuntime( 7903): at io.flutter.plugins.firebase.cloudfirestore.CloudFirestorePlugin$6.doInBackground(CloudFirestorePlugin.java:374)
E/AndroidRuntime( 7903): at android.os.AsyncTask$2.call(AsyncTask.java:333)
E/AndroidRuntime( 7903): at java.util.concurrent.FutureTask.run(FutureTask.java:266)
E/AndroidRuntime( 7903): ... 4 more
I/Process ( 7903): Sending signal. PID: 7903 SIG: 9
Application finished.
可能值得一提的是,我使用了代理,但它配置正确,并且可以与另一个应用程序一起使用
解决方案
修复,
我不得不像这样降级构建 gradle:在 myapp/build.gradle
dependencies {
classpath 'com.google.gms:google-services:4.2.0'
classpath 'com.android.tools.build:gradle:3.2.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
并从 myapp/app/build.gradle 中删除了所有不必要的内容
dependencies {
implementation 'com.google.firebase:firebase-core:16.0.8'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
}
apply plugin: 'com.google.gms.google-services'
我还删除了所有未使用的依赖项,例如 image_picker 和 firebase_ml_vision
推荐阅读
- python - 如何在 Django 中将数据从一个列表传输到另一个列表?
- bash - 模拟选项卡以在 bash 脚本中自动填充导航(cd)?
- sql - 如何在保留“,”的同时显示员工姓名而不是员工 ID
- snowflake-cloud-data-platform - 如何查找 Snowflake Task 正在针对哪个仓库运行?
- pandas - 将熊猫数据框中特定单元格的值设置为其他两个单元格的总和
- python - 如何在特定的父 div 类中定位特定的 div 类,python selenium
- ag-grid - 如何为 AgGrid 标题组设置自定义样式(不是类)?
- python - 如何在python中的多个数据框中添加新列
- java - 从 dot net core 调用 Java 组件
- java - 使用 ASM 动态检测 java 类时出现“LinkageError:尝试重复的类定义”