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"