【问题标题】:Flutter Firebase Remote Config No virtual method isDeveloperModeEnabled()Z in class .../FirebaseRemoteConfigSettingsFlutter Firebase远程配置类.../FirebaseRemoteConfigSettings中没有虚拟方法isDeveloperModeEnabled()Z
【发布时间】:2021-02-16 08:27:48
【问题描述】:

我最近升级了 Flutter 项目中的所有 Firebase 库。之后我收到消息:

/flutter (27126): [ERROR:flutter/shell/platform/android/platform_view_android_jni_impl.cc(43)] java.lang.NoSuchMethodError: 类 Lcom/google/firebase/remoteconfig/ 中没有虚拟方法 isDeveloperModeEnabled()Z FirebaseRemoteConfigSettings;或其超类(“com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings”的声明出现在 /data/app/package_name-1UBO7FEPHLsC2_eb7itJLA==/base.apk!classes3.dex 中)

之后我的应用程序因错误而崩溃:

[致命:flutter/shell/platform/android/platform_view_android_jni_impl.cc(942)] 检查失败:CheckException(env)。

目前我正在使用:

firebase_remote_config:^0.4.0+2

firebase_core:0.5.0+1

我在 android/build.gradle 中的依赖项:

dependencies {
    classpath 'com.android.tools.build:gradle:3.6.4'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.4'
    classpath 'io.fabric.tools:gradle:1.28.1'
    classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
}

android/app/build.gradle

dependencies {

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.13.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
    implementation 'androidx.multidex:multidex:2.0.1'
    implementation 'com.google.firebase:firebase-config:20.0.0'
    implementation 'com.facebook.android:facebook-login:7.1.0'
    implementation 'com.google.firebase:firebase-messaging:21.0.0'
    implementation 'com.google.android.gms:play-services-basement:17.5.0'

    configurations.all {
        resolutionStrategy.force 'com.google.android.gms:play-services-base:17.1.0'
    }
}

【问题讨论】:

    标签: firebase flutter firebase-remote-config


    【解决方案1】:

    终于解决了..

    Okey 不仅改变了这一行

    properties.put("inDebugMode", firebaseRemoteConfigInfo.getConfigSettings().isDeveloperModeEnabled());
    

    properties.put("inDebugMode", false);
    

    & 改变这个

    FirebaseRemoteConfigSettings settings = new FirebaseRemoteConfigSettings.Builder().setDeveloperModeEnabled(debugMode).build();
    firebaseRemoteConfig.setConfigSettings(settings);
    

    FirebaseRemoteConfigSettings settings = new FirebaseRemoteConfigSettings.Builder().build();
    firebaseRemoteConfig.setConfigSettingsAsync(settings);
    

    你也需要改变这个

    FirebaseRemoteConfig.getInstance().setDefaults(defaults);
    

    FirebaseRemoteConfig.getInstance().setDefaultsAsync(defaults);
    

    仍然是一个烦人的问题,应该尽快解决

    【讨论】:

    • 是的,我实际上忘记了我已经完成的这些额外步骤,这里是 +1 供您在此处发布的努力
    【解决方案2】:

    这是插件中的一个错误,有关详细信息,请参阅 github issue: https://github.com/FirebaseExtended/flutterfire/issues/4035

    解决方法:只需添加

    implementation platform('com.google.firebase:firebase-bom')
    

    致您的build.gradle

    【讨论】:

    • 您是如何找到 MethodCallHandler 文件的?我在我的 Mac 上找了一整天都没有运气
    • @user4415205 转到安装flutter的文件夹,这里是隐藏文件夹.pub-cache。或者,如果您使用 IntelliJ,您可以在项目导航器中的 External Libraries -> Flutter Plugins 下轻松找到它
    • 谢谢,我找到了,我做了更新,但同样的问题,这个改变有什么额外的步骤吗?
    • @DimaRostopira 我没有直接在隐藏的.pub-cache 文件夹中的MethodCallHandler.java 文件。如果我然后转到hosted/pub.dartlang.org/firebase_remote_config-0.4.2/android/src/main/java/io/flutter/firebase/firebaseremoteconfig 文件夹,我会找到一个MethodCallHandlerImpl.java 文件。它没有建议的FirebaseRemoteConfig.getInstance().setDefaults(defaults); 更改.. 是错误的文件吗?
    • @Vincenzo 尝试将 implementation platform('com.google.firebase:firebase-bom') 添加到您的构建 gradle
    【解决方案3】:

    如果已设置,请在您的 android 应用的构建 gradle 中删除此代码:

    rootProject.ext {
        set('FlutterFire', [
                FirebaseSDKVersion: '26.1.1'
        ])
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 2018-10-15
      • 2018-02-07
      • 1970-01-01
      • 2019-08-28
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多