web-dev-qa-db-ja.com

デフォルトのFirebaseAppは初期化されていません

Firebase Remote Configを追加したばかりのAndroidアプリで、メッセージDefault FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.を除いていくつか例外があります。

スタックトレースは次のとおりです。

Fatal Exception: Java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.example.app. Make sure to call FirebaseApp.initializeApp(Context) first.
       at com.google.firebase.FirebaseApp.getInstance(Unknown Source)
       at com.google.firebase.remoteconfig.FirebaseRemoteConfig.getInstance(Unknown Source)
       at com.example.app.fragments.SomeFragment.updateFooter(SourceFile:295)
       at com.example.app.fragments.SomeFragment.onCreateView(SourceFile:205)
       at Android.support.v4.app.Fragment.performCreateView(SourceFile:2080)
       at Android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1108)
       at Android.support.v4.app.FragmentManagerImpl.moveToState(SourceFile:1290)
       at Android.support.v4.app.BackStackRecord.run(SourceFile:801)
       at Android.support.v4.app.FragmentManagerImpl.execSingleAction(SourceFile:1638)
       at Android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(SourceFile:679)
       at Android.support.v4.app.FragmentPagerAdapter.finishUpdate(SourceFile:143)
       at Android.support.v4.view.ViewPager.populate(SourceFile:1240)
       at Android.support.v4.view.ViewPager.populate(SourceFile:1088)
       at Android.support.v4.view.ViewPager.setAdapter(SourceFile:542)
       at com.example.app.SomeActivity.onSomeAsyncCallback(SourceFile:908)
       at com.example.app.SomeDataRetriever.onAsyncHttpCompleted(SourceFile:72)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:141)
       at com.example.app.io.AsyncHttp.onPostExecute(SourceFile:19)
       at Android.os.AsyncTask.finish(AsyncTask.Java:679)
       at Android.os.AsyncTask.access$500(AsyncTask.Java:180)
       at Android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.Java:696)
       at Android.os.Handler.dispatchMessage(Handler.Java:102)
       at Android.os.Looper.loop(Looper.Java:150)
       at Android.app.ActivityThread.main(ActivityThread.Java:5665)
       at Java.lang.reflect.Method.invoke(Method.Java)
       at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:799)
       at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:689)

これはバージョン9.6.1で、他のFirebaseコンポーネントも使用しています。

compile 'com.google.firebase:firebase-ads:9.6.1'
compile 'com.google.firebase:firebase-config:9.6.1'
compile 'com.google.firebase:firebase-invites:9.6.1'
compile "com.google.firebase:firebase-messaging:9.6.1"

ドキュメントからthe Javadoc を見ることができるので、この場合は手動で初期化する必要はありません。

例外は、さまざまなデバイスのAndroid 4-6で発生します。

編集:

私はこの質問が少し注目を集めるのを見ます。私はこの説明があなたの何人かにとって興味深いものになると思う: https://firebase.googleblog.com/2016/12/how-does-firebase-initialize-on-Android.html

191
Roy Solberg

私はしばらく前に同じ問題を抱えていました。

初期化せずにFirebaseのインスタンスを取得しようとしています。 Firebaseのインスタンスを取得する前に、このコード行を追加してください。

FirebaseApp.initializeApp(this);
110
Gabriel Lidenor

必ずルートレベルのbuild.gradleに追加してください。

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.0.0'
    }
}

次に、モジュールレベルのGradleファイル(通常はapp/build.gradle)で、ファイルの下部に 'apply plugin'行を追加してGradleプラグインを有効にします。

apply plugin: 'com.Android.application'

Android {
  // ...
}

dependencies {
  // ...
  compile 'com.google.firebase:firebase-core:9.6.1'
  // Getting a "Could not find" error? Make sure you have
  // the latest Google Repository in the Android SDK manager
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

ドキュメント で述べたように。私のgradleファイルにこれを追加するのを忘れたとき、私は上記の質問のように例外がありました。

264
Leonid

google-services:4.1.0に問題があるようです。にダウングレードする

classpath 'com.google.gms:google-services:4.0.0'

またはにアップグレードする

classpath 'com.google.gms:google-services:4.2.0'

dependencies {
    classpath 'com.Android.tools.build:gradle:3.3.0-alpha08'
    classpath 'com.google.gms:google-services:4.2.0'
    /*classpath 'com.google.gms:google-services:4.1.0' <-- this was the problem */
}

それが役に立てば幸い

114
Ammar Bukhari

app/build.gradle ファイルに次の行がありません。

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

そして一度 clean projectして再度実行してください。それは私のためにそれを修正しました。

44
    classpath 'com.google.gms:google-services:4.1.0'

問題があります。代わりに:

    classpath 'com.google.gms:google-services:4.2.0'
16
Alp Altunel

ルートレベルでcom.google.gms:google-services:x.x.xを追加する必要がある最初のものbuild.gradle

buildscript {
repositories {
    jcenter()
}
dependencies {
    classpath 'com.Android.tools.build:gradle:2.3.1'
    classpath 'com.google.gms:google-services:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

}

その後、app/build.gradleにある 'com.google.gms.google-services'プラグインを適用する必要があります。

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.Android.support', module: 'support-annotations'
})
compile 'com.Android.support:appcompat-v7:25.3.1'
compile 'com.Android.support:design:25.3.1'
compile 'com.Android.support:cardview-v7:25.3.1'

compile 'com.google.Android.gms:play-services-gcm:9.8.0'
compile 'com.google.Android.gms:play-services-maps:9.8.0'
compile 'com.google.Android.gms:play-services-location:9.8.0'
compile 'com.google.firebase:firebase-messaging:9.8.0'
testCompile 'junit:junit:4.12'
}


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

それでも問題が解決しない場合は、追加する必要があります。

FirebaseApp.initializeApp(this);

電話をかける直前

FirebaseInstanceId.getInstance().getToken();
12
ankurdayalsingh

さまざまな依存関係を更新した後、コンパイル時にCrashlyticsエラーが発生しました。 'Crashlyticsは無効なAPIキーを見つけました:null。 Crashlyticsプラグインをチェックして、アプリケーションが正常に追加されたことを確認してください。 [email protected]に連絡してください。 [email protected]を何度も試してみたときの自動ではない応答の1つは、FabricとCrashlyticsが別々のチームであるために助けにならないことです。私はCrashlyticsに追加のFabricレイヤーを実装することを避け、Fabricサイトから新しいキーを取得することも、サイトに私を認識させることもできませんでした。私のコードからCrashlyticsを削除するだけでこの問題を回避しようとすると、 'Default FirebaseAppはこのプロセスでは初期化されていません。com.example.app'が表示されます。必ず最初にFirebaseApp.initializeApp(Context)を呼び出して実行してください。

私は 'FirebaseApp.initializeApp(this)'の初期化行を追加する必要は一度もありませんでしたが、実際にはコメントアウトしました。ドキュメントでは、1つのアクティビティにFirebaseを使用するだけであれば、これは不要であるとも述べています。それを加えても違いはありませんでした、それでも実行殺害エラーを得ました。

新しい不明瞭なエラーの原因は、更新されたgoogle-services依存関係でした。今のところ、私は新しい依存関係が引き起こしているショットガンエラーを修正しようとするのにより多くの日数を費やす時間がないので、誰かが解決策を思いつくまで私は古いバージョンに固執するでしょう。奇妙な初期化クラッシュのほかに、新しいバージョンはCrashlyticsユーザーにFabricを強いるかもしれません。ユーザーもこのために古い依存バージョンに強制されています: Crashlyticsは無効なAPIキーを見つけました:null。更新後com.google.gms:google-services:4.1.0

com.google.gms:google-services:4.1.0//BAD
com.google.gms:google-services:4.0.1//GOOD

編集10/17/18:再び以下の依存関係を更新した後

implementation 'com.google.firebase:firebase-ads:17.0.0'
implementation 'com.google.firebase:firebase-auth:16.0.4'
implementation 'com.google.firebase:firebase-database:16.0.3'
implementation 'com.google.firebase:firebase-core:16.0.4

私はグーグル - サービス依存関係の更新を試みたときのように、 'xxxは突然閉じました'というインストールの試みで即座にクラッシュしました。ログを詳しく調べると、これをマニフェストに追加するように指示するリンクが見つかりました。

<meta-data
        Android:name="com.google.Android.gms.ads.APPLICATION_ID"
        Android:value="ca-app-pub-xxxxxx~xxxxxx"/>

これは新しいもので、ここでのセットアップおよびインタースティシャルの手順では説明されていません https://firebase.google.com/docs/Android/setup およびここで https://developers.google.com/admob/) Android/interstitial .

私はかつて私のアプリのために1つの広告関連ID、INTERSTITIAL_UNIT_IDのみを扱う必要がありました。今2つが対処される必要があります。上記の追加に加えて、ドキュメントはここにADMOB_APP_IDを追加することを指示します(あなたが新しいマニフェストコードでads.APPLICATION_IDと結びつくのと同じ番号)

MobileAds.initialize(this, ADMOB_APP_ID);

INTERSTITIAL_UNIT_IDとADMOB_APP_IDのIDは、Google AdMobコンソールで確認できます。私のゲームアプリは、Firebaseの依存関係の最初の更新で広告の配信を停止しましたが、それでも広告は配信されず、

public void onAdFailedToLoad(int errorCode){...

このように混乱しても、初期化エラーが発生してクラッシュしない限り、Googleサービスへの依存関係を更新することはできません。しばらくの間、google-services:4.0.1に行き詰まります。

編集10/24/18:更新後に広告が配信されないという連絡が数週間行われた後のmobileadssdk-advisor + support @ google.comから:

'デバイスログを共有していただきありがとうございます。ログから、それは既存の問題のように見え、これは私達の優先順位リストにあり、私達のチームは修正に取り組んでいますそしてこれはAndroid OおよびPデバイスでだけ起こっています。

OとPデバイスだけ?それが最後の2つのバージョンです、Oは2017年9月25日に出ました。

11
Androidcoder

コメントで@PSIXOによって述べられたように、これはgoogle-servicesの依存バージョンの問題かもしれません。私が変わって

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.1.0'
    }
}

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.0.1'
    }
}

4.1.0バージョンで問題がある可能性があります。私はこれで何時間も無駄にしたので、これを答えとして書くことを考えました。

8
Aayush Singla

FirebaseUI を使用している場合、不要のコードでFirebaseApp.initializeApp(this);サンプル

root-levelbuild.gradleに必ず追加してください:

buildscript {

    repositories {
        google()
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.google.gms:google-services:3.1.1'
        ...
    }
}

次に、モジュールレベルGradleファイルで:

dependencies {

    ...

    // 1 - Required to init Firebase automatically (THE MAGIC LINE)
    implementation "com.google.firebase:firebase-core:11.6.2"

    // 2 - FirebaseUI for Firebase Auth (Or whatever you need...)
    implementation 'com.firebaseui:firebase-ui-auth:3.1.2'
    ...
}

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

それでおしまい。これ以上必要ありません。

7
Phil

別の可能な解決策 - あなたがいくつかのベータ版を使用している場合は別のAndroid Studioを試してください。助けてくれた。新しいAndroid Studioは単純にFirebaseを正しく追加しませんでした。私の場合3.3preview

さらに調査を重ねた結果、新しいAndroid Studioが新しいバージョンのGoogle Servicesでプロジェクトを開始したことが問題であることがわかりました。 @Ammar Bukhari氏が示唆したように、この変更は次のように役立ちました。

クラスパス 'com.google.gms:google-services:4.1.0' - >クラスパス 'com.google.gms:google-services:4.0.0'

GoogleサービスのバージョンとFirebaseのバージョンに互換性の問題があると思います。

プロジェクトのbuild.gradleファイルを変更しました。依存関係

クラスパス「com.google.gms:google-services:4.1.0」から4.2.0

次にモジュールのbuild.gradle依存関係を次のように更新しました。

実装 'com.google.firebase:firebase-database:16.0.6'

実装 'com.google.firebase:firebase-core:16.0.7'

FirebaseApp.initializeApp(this)と入力する必要はありません。

私の場合、Googleサービスのグラドルプラグインはvalues.xmlファイルから必要なgoogle-services.jsonファイルを生成していませんでした。 Firebaseライブラリはこの生成された値ファイルを使用して自分自身を初期化します。値ファイルが見つからない場合でもエラーにはなりません。 valuesファイルが次の場所にあり、google-sevices.jsonファイルから適切な文字列が入力されていることを確認します。

app/build/generated/res/google-services/{build_type}/values/values.xml

および/または

app/build/generated/res/google-services/{flavor}/{build_type}/xml/global_tracker.xml

詳細については、 https://developers.google.com/Android/guides/google-services-plugin を参照してください。

私の特定のケースは、私が実行していたAndroid Studioのバージョンに対して高度すぎるグラドルツールのバージョンを使用していたことです(つまり、Android Studio v3.2でグレードツールv3.2.X-YYYを実行するようにしてください)。

3
TheIT

最近com.google.gms:google-services(4.2.0以下)の依存関係に問題があるAndroid Studioを3.3.1に更新した場合は、com.google.gms:google-servicesを4.2.0に更新してください。

dependencies {
    classpath 'com.Android.tools.build:gradle:3.3.1'
    classpath 'com.google.gms:google-services:4.2.0'
    }
3
Himanshu

Firebase Gradle buildscriptの依存関係を build.gradle(プロジェクトレベル)に追加する必要があります

classpath 'com.google.gms:google-services:3.1.0'

gradle用Firebaseプラグインを app/build.gradle に追加します。

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

build.gradle will include these new dependencies:
    compile 'com.google.firebase:firebase-database:11.0.4'

出典:Android Studio Assistant

3
Artificioo

私にはそれはcom.google.gms:build.gradle内のgoogle-servicesの依存関係をアップグレードしていました

buildscript {
repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.Android.tools.build:gradle:3.3.2'
    classpath 'com.google.gms:google-services:4.2.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
2
Jmz

FirebaseApp.initializeApp(this);を手動で呼び出す必要はありません。我々もそうすべきではありません。

私はちょうどそれについて同じ問題に直面し、そして予期せぬ奇妙な解決策を得ました。

から この答え:

私はtools:node="replace"を削除しました、そしてそれは魅力のように働いています。

2
Rumit Patel

これが起こる理由はcom.google.gms:google-services versionです。私が4.1.0を使っていたとき、私は同じエラーに直面しました。それから私はバージョンをダウングレードします。前

classpath 'com.Android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.1.0'

後に

classpath 'com.Android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:3.2.0'

うまくいけば、それはエラーを解決します。

2

これが発生する理由の1つは、Android.permission.INTERNETAndroidManifest.xml権限を追加することを忘れることです。

<uses-permission Android:name="Android.permission.INTERNET" />

0
bianca

私の問題はこの手順では解決されませんでした

FirebaseApp.initializeApp(this); 

だから私は他の何かを試してみましたそして今私のfirebaseは首尾よく初期化されました。 app module.gradleに以下を追加してみてください

BuildScript{
dependencies {..
classpath : "com.google.firebase:firebase-plugins:1.1.5"
    ..}
}

dependencies {...
implementation : "com.google.firebase:firebase-perf:16.1.0"
implementation : "com.google.firebase:firebase-core:16.0.3"
..}
0
Fahad

アプリケーションクラスのonCreate関数でFirebaseを初期化する必要があります。

 package com.rocks.music.videoplayer;

 import Android.app.Application;
 import Android.content.Context;

 import com.google.firebase.FirebaseApp;


/**
* Created by ashish123 on 22/8/15.
  */
 public class MyApplication extends Application {

private static MyApplication mInstance;

@Override
public void onCreate() {
    super.onCreate();
    mInstance = this;
    try {
        FirebaseApp.initializeApp(this);
    }
    catch (Exception e) {
    }
}

public static Context getInstance() {
    return mInstance;
}

}

マニフェストファイルのコード: -

  <application
    Android:name="com.rocks.music.videoplayer.MyApplication"
    Android:allowBackup="true"
    Android:icon="@drawable/app_icon"
    Android:label="@string/app_name"
    Android:supportsRtl="true"
    Android:theme="@style/AppTheme">
0
Ashish Saini

4.1.0ではなくcom.google.gms:google-services:4.0.1 'を使用してください。

0
tony Macias

[ツール]> [Firebase]をクリックして[アシスタント]ウィンドウを開きます。

リストされている機能の1つ(Analyticsなど)をクリックして展開し、表示されたチュートリアルのリンク(Analyticsイベントのログなど)をクリックします。

[Firebaseに接続]ボタンをクリックしてFirebaseに接続し、必要なコードをアプリに追加します。

https://firebase.google.com/docs/Android/setup

0
kreker

Android Studio Toolsを介してインストールされたFirebase ... Firebase ...

私はAndroid Studioの内蔵ツールを使ってインストールを行いました(Firebaseの最新のドキュメントに従ってください)。これで基本的な依存関係がインストールされましたが、データベースに接続しようとすると、最初にinitializeを呼び出す必要があるというエラーが常に発生しました。

このプロセスでは、デフォルトのFirebaseAppは初期化されません。必ずFirebaseApp.initializeApp(Context)を最初に呼び出してください。

何をしても、このエラーが出ました。

最後に、他の答えの1つでコメントを見た後、私の小学校の中で次のものをバージョン4.1.0から次のように変更しました。

classpath 'com.google.gms:google-services:4.0.1'

それをしたとき、私はついに私を助けている誤りを見ました:

ファイルgoogle-services.jsonが見つかりません。 Googleサービスプラグインはそれなしでは機能できません。検索場所:C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\src\nullnull\debug\google-services.json
C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\src\debug\nullnull\google-services.json
C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\src\nullnull\google-services.json
C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\src\debug\google-services.json
C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\src\nullnullDebug\google-services.json
C:\ Users \%username%\ AndroidStudioProjects\TxtFwd\app\google-services.json

それが問題です。 4.1.0バージョンでは、何らかの理由でそのビルドエラーが発生しないようです - google-services.jsonファイルが見つからないことは言及されていません。私は自分のアプリにgoogle-services.jsonファイルがないので、外に出て追加しました。

しかし、これは既存のリアルタイムデータベースを使用したアップグレードだったので、私は過去にそのファイルを生成する必要はありませんでした。私はfirebaseに行ってそれを生成して追加して問題を解決しました。

4.1.0に変更 /

これらすべてを発見したら、クラスパス変数を(4.1.0に)戻して再構築しましたが、初期化されていないというエラーで再びクラッシュしました。

根本的な問題

  • 4.1.0でビルドしてもプリコンパイル時に有効なエラーが表示されないので、何が起こっているのかわからないかもしれません。
  • 4.1.0に対して実行すると、初期化エラーが発生します。
0
raddevus

手動でFirebaseをFirebaseApp.initializeApp(this);で初期化してもエラーは消えますが、根本的な原因は解決されません。

  • FCMにはGCM専用のcom.google.Android.c2dm.permission.RECEIVE権限が必要です
  • 最初の通知が送信された後にトークンが未登録になる
  • メッセージが受信されない/ onMessageReceived()が呼び出されない

より新しいGradleプラグイン(例えばAndroidプラグイン2.2.3とGradle 2.14.1)を使用するとすべてが修正されました。 (もちろん、セットアップは Firebaseのドキュメント に従って正しくなければなりません)

0
Beeing Jk

変化

classpath 'com.google.gms:google-services:4.1.0'

classpath 'com.google.gms:google-services:4.0.1'

私のために働く

0
Fawad Khan