2016-05-20 3 views
18

が..アプリディレクトリ内のGoogleサービスのJSONファイルを保存した...新しいfirebase SDKのアップグレードガイドを追った...まだ同じエラーなどあなたはデータベースのためですが...java.lang.IllegalStateException:私はこの問題を取得してきた名前を持つFirebaseApp [DEFAULT]

Caused by: java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist. 
+0

firebaseプロジェクトをパッケージ名で作成し、google-services.jsonをダウンロードしましたか? –

+0

はい、私は正常に動作diskpersistenceを設定せずに私のアプリをinfactでした。私はここにドキュメントで述べたように、私のApplicationクラスにdispersistenceを有効にしようと... https://firebase.google.com/support/guides/firebase-android#get_a_database_reference_numbered ...私のコードは –

+0

既知の問題を失敗します。https: //firebase.google.com/docs/crash/android#known-issues –

答えて

32

Firebaseクラッシュレポートを使用していますか?このエラーは、メインプロセスではなくバックグラウンドプロセスに当たった場合に発生する可能性があります。

クラッシュレポートは、クラッシュを送信する第二工程(background_crash)を作成します。残念ながら、Androidアプリのすべてのプロセスは共通のApplicationサブクラスを共有するため、onCreateメソッドはバックグラウンドプロセスでも実行されます。それは失敗したデータベースを初期化しようとします。

修正がFirebaseが正しく設定されている場合、データベース・コールが(メインプロセスになります)のみ実行されることを確認することです。

@Override 
public void onCreate() { 
    super.onCreate(); 
    if (!FirebaseApp.getApps(this).isEmpty()) { 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
} 
+0

これは、おかげでたくさん:) –

+0

があまりにも私に問題を解決するようだ...この問題を解決するようです。 –

+0

私はこのソリューションを使用しようとしましたが、中括弧内のコードは決して実行されません。雲あなたは私にそれを働かせるためのヒントを与えますか? –

4

このエラーは、アプリケーションにFirebaseを置かないで解決しました。私はそれをMainActivityに入れました。例: MainActivity.java

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    ... 
} 

-UPDATE

他の解決策は、1つのFirebaseDatabaseのインスタンスが含まれているDatabaseHelperクラスを作成することです。

public class DatabaseHelper { 
    private static boolean persistenceEnable = false; 
    private static FirebaseDatabase mDatabase; 


    public static boolean isPersistenceEnable(){ 
    return persistenceEnable; 
    } 
    public static FirebaseDatabase getInstance() { 
    if (mDatabase == null) { 
     mDatabase = FirebaseDatabase.getInstance(); 
     if(persistenceEnable==true) { 
     mDatabase.setPersistenceEnabled(true); 
     } 
    } 

    return mDatabase; 
    } 
} 

次のように使用します。FirebaseDatabase database = DatabaseHelper.getInstance(); @Ianバーバーのソリューションを拡張

+0

FirebaseDatabaseが私にエラーを表示しています。私は@leeを助けてくれますか? –

0

、あなたはすべての非主要なプロセスのためのカスタムApplication.onCreateの処理をスキップする場合は、この一般的なチェックをしてみてください。追加のプロセスがあなたに属していない場合は、カスタムを実行する必要はありません。

@Override 
public void onCreate() { 
    super.onCreate(); 
    if (FirebaseApp.getApps(this).isEmpty()) { 
     // No firebase apps; we are in a non-main process 
     // skip custom Application.onCreate 
     return; 
    } 
    // Firebase init only in the main process 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    // other code 
} 
関連する問題