[DEFAULT]という名前のFirebaseAppは存在しません


81

Firebase Cloud Messagingに移行した後、アプリを開くとクラッシュしjava.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.、新しいgoogle-services.jsonを既に配置してSDKを更新したというエラーがスローされます。

これが私のMainActivityです

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

//Check Google play service
    GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance();
    int resultCode = googleAPI.isGooglePlayServicesAvailable(this);

    if (resultCode != ConnectionResult.SUCCESS) {
        if (GooglePlayServicesUtil.isUserRecoverableError(resultCode)) {
            GooglePlayServicesUtil.getErrorDialog(resultCode, this,
                    PLAY_SERVICES_RESOLUTION_REQUEST).show();
        } else {
            Log.e(LOG_TAG, "This device is not supported.");
            finish();
        }
    }

    Log.i(TAG, "InstanceID token: " + FirebaseInstanceId.getInstance().getToken());

}
}

回答:


111

再確認してください、あなたは追加しました

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

アプリのgradleファイルの下部にあり、プロジェクトをクリーンアップして再構築します


私は削除apply plugin: 'com.google.gms.google-services' 私のアプリのGradleのからではなく、呼び出し時に、新しいエラーが発生したFirebaseInstanceId.getInstance().getToken()、私の中でMainActivity私のアプリがクラッシュします。
なつみゆ2016年

1
私の悪い...私は追加する必要がありましたapply plugin: 'com.google.gms.google-services' か?追加しようとすると、まだエラーが発生します。それは言うDidn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
natsumiyu 2016年

こんにちは森、あなたは今のところこのエラーを無視することができます、そして彼らは次のリリースでこの問題を修正するでしょう。それがfirebaseチームの言うことです:)。
Venkatesan 2016年

これを追加すると、「Error:Execution failed for task ':app:mergeModernDebugResources'。> [string / google_api_key] /<path>/app/src/main/res/values/defaults.xml [string / google_api_key] /<path>/app/build/generated/res/google-services/modern/debug/values/values.xml:エラー:リソースが重複しています」FCMのセットアップガイドまたは移行ガイドにもこの手順が表示されませんでした。私が見逃したかもしれないリンクがありますか?
Cニック・

1
flutter clean & flutter run回答で示唆されているように、フラッターが必要になる場合もあります。
Nae 2018

21

ここに関連があるかどうかはわかりません。しかし、このクラッシュが発生する可能性がある別のシナリオがあります。


アプリに(プロセスが異なる)Applicationサービスがあり、独自のクラスを作成している場合、サービスとフォアグラウンドアプリは同じアプリケーションクラス(同じインスタンスではない)を使用して初期化します。com.google.firebase:firebase-crashクラッシュを処理するために依存関係を使用している場合、バックグラウンドサービスが作成されますyour.app.packagename:background_crash。何らかの理由で、これは私のアプリでクラッシュを引き起こしていました。具体的には、アプリケーションクラスで、次のような呼び出しを行っていたためです。

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Applicationクラスで初期化するときのバックグラウンドサービスは、どういうわけかFirebaseが初期化されていないと思います。これを修正するために、私はしました

if (!FirebaseApp.getApps(this).isEmpty())
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

これは広告でも起こります。ユーザーが広告をクリックすると、アプリFirebaseに戻り、利用できなくなります。
theJosh 2016

@Codevalley、私の場合、app:editorと呼ばれる別のプロセス(Adobe Creative SDK Image Editor)がありました。同じアプリケーションクラスを使用していたため、存在しないFirebaseアプリからトークンを取得しようとしました。トークンを取得する前にチェックすると、問題が解決しました。どうもありがとうございます!:)
rzaaeeff 2017

12

私も同様の問題を抱えていましたが、私にとってはマニフェストマージのバグ/問題でした。アプリのマニフェストファイルがFirebaseInitProvider原因でtools:node="replace"、最終的なマニフェストファイルに挿入されていないことがわかりました。そのため、このxmlタグを削除してみてくださいFirebaseInitProvider。挿入されると、Firebaseを適切に初期化できます。


合併ツール@ jmodrako–
Killer

現在、tools:node = "replace"ではなくtools:replace = "android:name"に更新しました。その助けを願って
キラー

11

build.gradleファイル:

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

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

\ app \ build.gradleファイル:

apply plugin: 'com.android.application'

android {
    ..
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ..
    compile 'com.google.firebase:firebase-core:9.0.2'
    compile 'com.google.firebase:firebase-messaging:9.0.2'
}

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

エラー:(90、0)IDが「com.google.gms.google-services」のプラグインが見つかりません。
Gilberto Ibarra 2016年

10

@jmodrakoの答えは...私の問題を解決tools:node="replace"しますtools:node="merge"

説明... AndroidManifest.xmlで

から

<application
...
tools:node="replace">

<application
...
tools:node="merge">

問題をライブラリのテーマとマージしますか? を使用して解決されたビルドの問題tools:replace="android:theme"

https://stackoverflow.com/a/38060272/2765087へのクレジット


2

Firebaseの初期化をonCreateofApplicationクラス内に移動します。また、オフライン永続性を有効にしている場合は、FirebaseDatabase.getInstance()。setPersistenceEnabled(true)が他の初期化の前に来る必要があります。


誤って投票をクリックしたため、賛成票を投じることができません:(
Developine

2

以下のようにすべての構成を確認します。

1-firebaseプロジェクトの設定:google-services.jsonは正しいですか? ここに画像の説明を入力してください

2- FirebaseSDKを追加します ここに画像の説明を入力してください

3-クリーン-プロジェクトを再構築します

うまくいけば、これは役に立ちます!


2

次の行をapp / build.gradleに追加します

apply plugin: 'com.google.gms.google-services'  // Google Services plugin

そして、build.gradleをプロジェクトする次の行

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

0

Android Studio

  1. プラグインを適用します: 'com.google.gms.google-services'(build.gradle-モジュールレイヤー)
  2. メニュー〜>ビルド〜> CleanProject

私のために働く。


0

アプリケーションをFirebaseに登録し、google-services.jsonをルートプロジェクトにコピーします。

classpath 'com.google.gms:google-services:3.1.0ルートbuild.gradleを適用 します。

apply plugin: 'com.google.gms.google-servicesプロジェクトのgradleに適用します。


0

依存関係に次を追加するだけです。

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
...
compile 'com.google.firebase:firebase-core:9.0.2'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}

適用する plugin: 'com.google.gms.google-services'



0

私の場合、アプリの起動時にFirebaseを初期化していなかったので、それを解決するために次のことを行う必要がありました

@Service
public class FirebaseSetup implements CommandLineRunner {
    public void run(String... args) throws Exception {
        initializeFirebase();
    }
    private void initializeFirebase() throws FileNotFoundException, IOException {
        FileInputStream serviceAccount = new FileInputStream(ResourceUtils.getFile("classpath:ssf1-v1-firebase-adminsdk-zr72u-afcb5bc13b.json"));
        FirebaseOptions options = new FirebaseOptions.Builder().setCredentials(GoogleCredentials.fromStream(serviceAccount)).build();
        FirebaseApp.initializeApp(options);
    }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.