[java] 이름이 [DEFAULT] 인 FirebaseApp이 존재하지 않습니다.

Firebase 클라우드 메시징으로 마이그레이션 한 후 내 앱을 열면 충돌이 발생하고 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());

}
}



답변

다시 한 번 확인하십시오.

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

앱의 gradle 파일 하단에서 프로젝트를 정리하고 다시 빌드하십시오.


답변

여기에 관련이 있는지 확실하지 않습니다. 그러나이 충돌이 발생할 수있는 또 다른 시나리오가 있습니다.


앱에 서비스 (다른 프로세스 포함)가 있고 자체 Application클래스를 만드는 경우 서비스와 포 그라운드 앱은 동일한 Application 클래스 ( 동일한 인스턴스 아님)를 사용하여 초기화합니다. 이제 com.google.firebase:firebase-crash종속성을 사용하여 충돌을 처리 할 때 백그라운드 서비스가 생성 your.app.packagename:background_crash됩니다. 어떤 이유로 내 앱에서 충돌이 발생했습니다. 특히 Application 클래스에서 다음과 같이 전화를 걸었 기 때문에

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

Application 클래스를 사용하여 초기화 할 때 백그라운드 서비스가 어떻게 든 Firebase가 초기화되지 않는다고 가정합니다. 이 문제를 해결하기 위해

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


답변

나는 비슷한 문제가 있었고 나에게 그것은 명백한 합병의 버그 / 문제였습니다. 나는 것을 발견했습니다 FirebaseInitProvider때문에 최종 매니페스트 파일에 주입되지 않은 tools:node="replace"내 응용 프로그램의 매니페스트 파일에. 따라서이 xml 태그를 제거하면 FirebaseInitProvider삽입되고 Firebase가 제대로 초기화 될 수 있습니다.


답변

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'


답변

@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에 대한 크레딧


답변

onCreate of Application 클래스 내에서 Firebase 초기화를 이동합니다. 또한 오프라인 지속성을 활성화 한 경우 FirebaseDatabase.getInstance (). setPersistenceEnabled (true)가 다른 초기화보다 먼저 와야합니다.


답변

아래와 같이 모든 구성을 확인하십시오.

1-firebase 프로젝트 설정 : google-services.json이 맞습니까?
여기에 이미지 설명 입력

2- Firebase SDK 추가
여기에 이미지 설명 입력

3- 정리-프로젝트 다시 빌드

도움이 되었기를 바랍니다.