이름이 [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이 맞습니까? 
3- 정리-프로젝트 다시 빌드
도움이 되었기를 바랍니다.
안드로이드 스튜디오
- 플러그인 적용 : 'com.google.gms.google-services'(build.gradle-모듈 레이어)
- 메뉴 ~> 빌드 ~> 클린 프로젝트
나를 위해 잘 작동합니다.
Firebase에 애플리케이션을 등록하고 google-services.json을 루트 프로젝트에 복사합니다.
classpath 'com.google.gms:google-services:3.1.0루트 build.gradle에 적용하십시오 .
apply plugin: 'com.google.gms.google-services프로젝트 Gradle에 적용하십시오 .
종속성에 다음을 추가하십시오.
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'
빌드 작업 (GoogleServicesJson)을 파일 이름 Google-Services.Json으로 변경합니다.
제 경우에는 앱 시작시 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);
}
}
참고 URL : https://stackoverflow.com/questions/37342403/firebaseapp-with-name-default-doesnt-exist
'Nice programing' 카테고리의 다른 글
| Django ModelForm : save (commit = False)는 무엇에 사용됩니까? (0) | 2020.11.04 |
|---|---|
| npm을 사용하여 "devDependencies"만 설치하는 방법 (0) | 2020.11.04 |
| CString과 :: std :: string :: std :: wstring을 서로 변환하는 방법은 무엇입니까? (0) | 2020.11.04 |
| Python urllib2 : HTTPError 예외 중에도 콘텐츠 본문을 읽습니까? (0) | 2020.11.04 |
| ConcurrentMap의 putIfAbsent를 사용하기 전에 맵에 키가 포함되어 있는지 확인해야합니다. (0) | 2020.11.04 |
