【问题标题】:Default FirebaseApp not initialized error默认 FirebaseApp 未初始化错误
【发布时间】:2019-03-13 10:42:36
【问题描述】:

我看到消息Default FirebaseApp is not initialized in this process com.armoured. Make sure to call FirebaseApp.initializeApp(Context) first. 有一些例外情况

堆栈跟踪如下:

2019-03-12 20:42:33.607 11511-11511/com.armoured E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.armoured, PID: 11511
java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.armoured. Make sure to call FirebaseApp.initializeApp(Context) first.
    at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
    at com.google.firebase.auth.FirebaseAuth.getInstance(Unknown Source:1)
    at com.armoured.fragments.LoginFragment.onCreateView(LoginFragment.java:59)
    at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
    at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)
    at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625)
    at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411)
    at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366)
    at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273)
    at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3273)
    at androidx.fragment.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
    at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)
    at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:620)
    at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:178)
    at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1391)
    at android.app.Activity.performStart(Activity.java:7165)
    at android.app.ActivityThread.handleStartActivity(ActivityThread.java:2975)
    at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:180)
    at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:165)
    at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:142)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1816)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6718)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

我的问题与this 问题中的问题完全相同。但是,该问题中的任何解决方案都不适合我。我已经在我的 gradle 文件中添加了 apply plugin: 'com.google.gms.google-services'。我在所有代码中都使用了firebase:16.0.3 依赖项。

最后一个细节:我已经在我的片段中添加了FirebaseApp.initializeApp(Context)。为了完整起见,我将在问题中添加出现此错误的函数,以便你们可以了解有关该错误的上下文。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    FirebaseApp.initializeApp(getActivity());
    View view = inflater.inflate(R.layout.fragment_login, container, false);
    mViewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
    mAuth = FirebaseAuth.getInstance();
    ButterKnife.bind(this,view);
    return view;
}

编辑:我正在按要求附加应用程序级别的 gradle 级别文件。

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

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.armoured"
        minSdkVersion 23
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

dependencies {
    api 'com.google.android.material:material:1.0.0-beta01'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.0.0-beta01'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
    implementation 'com.jakewharton:butterknife:10.1.0'
    implementation 'com.google.firebase:firebase-core:16.0.3'
    implementation 'com.google.firebase:firebase-auth:16.0.3'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0-beta01'
    implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-beta01'
    implementation 'androidx.recyclerview:recyclerview:1.0.0-beta01'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.0-alpha4'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha4'

}

【问题讨论】:

  • 您能否编辑问题以显示整个 build.xml 文件,即使您认为它是正确的?
  • 通过 build.xml 文件,我假设您是指应用级别的 gradle 文件?
  • 抱歉,build.gradle,你修改的那个。
  • 我已将其附在我的编辑中。我还链接了建议此更改的问题(因此它不会被标记为重复)。
  • @sunilsunny 是的,这正在解决它。将其从 4.1 更改为 4.2。如果你写这个作为答案,我会接受。

标签: android firebase firebase-authentication


【解决方案1】:

将根 build.gradle 中的 classpath4.1 升级到 4.2 应该可以解决此问题,因为 4.1 有一个 issue 已在 4.2 中修复。

所以你的依赖应该看起来像这样。

dependencies {
   // other classpaths
    classpath 'com.google.gms:google-services:4.2.0'
}

【讨论】:

    【解决方案2】:

    在您的问题中,您说您将 apply plugin: 'com.google.gms.google-services' 添加到您的 build.gradle 中,但我在那里看不到它。它应该位于应用级 build.gradle 的最底部。也许您修改了顶层 build.gradle 而不是应用程序的。没有这条线肯定会导致您看到的问题。

    此外,不再需要使用相同版本的 Firebase 依赖项。他们现在各自独立修订。如果您只是第一次集成 Firebase,则应使用 setup documentation 中显示的所有最新版本。

    【讨论】:

    • 嘿,Doug,如果您查看文件的最顶部,我确实添加了您提到的行。
    • 根据链接说明的同一页,它应该位于最底部。
    • 嗨,Doug,我把它放在最底部,但它仍然不起作用。 Sunil 上面的评论:更改为 4.2 gradle 版本而不是使用 4.1 有所帮助。我猜这是 4.1 版本中的一个错误。
    猜你喜欢
    • 2020-08-16
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2019-07-05
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 2019-02-06
    相关资源
    最近更新 更多