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


81

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());

}
}

답변:


110

다시 한 번 확인하십시오.

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

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


나는 제거 apply plugin: 'com.google.gms.google-services' 내 응용 프로그램의 Gradle을에서하지만 호출 할 때 새로운 오류가 발생할 FirebaseInstanceId.getInstance().getToken()내에서 MainActivity내 응용 프로그램이 충돌합니다.
natsumiyu

1
내 나쁜 ... 내가 추가해야 apply plugin: 'com.google.gms.google-services' ? 추가하려고하면 여전히 오류가 발생합니다. 그것은 말한다Didn't find class "com.google.android.gms.dynamite.descriptors.com.google.firebase.auth.ModuleDescriptor"
natsumiyu

안녕하세요 Mori, 지금은이 오류를 무시할 수 있으며 다음 릴리스에서이 문제를 해결할 것입니다. 그것이 firebase 팀이 말하는 것입니다 :).
Venkatesan

이것을 추가하면 "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 : Error : Duplicate resources "FCM 설정 또는 이전 가이드에도이 단계가 표시되지 않았습니다. 내가 놓친 링크가 있습니까?
C Nick

1
Flutter는 flutter clean & flutter run답변에서 제안한대로 필요할 수 있습니다.
Nae

21

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


앱에 서비스 (다른 프로세스 포함)가 있고 자체 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);

이것은 광고에서도 발생합니다. 사용자가 광고를 클릭하면 더 이상 사용할 수없는 Firebase 앱으로 돌아갑니다.
theJosh

@Codevalley, 제 경우에는 app : editor라는 또 다른 프로세스 (Adobe Creative SDK Image Editor)가있었습니다. 동일한 애플리케이션 클래스를 사용하고 있었으므로 존재하지 않는 Firebase 앱에서 토큰을 가져 오려고했습니다. 토큰을 받기 전에 확인하면 문제가 해결되었습니다. 정말 고맙습니다! :)
rzaaeeff

12

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


당신은 합병 도구 @jmodrako 훨씬 익숙하게하지 않은 사람들을 위해 답변을 업데이트하십시오 수 있습니다
킬러

현재 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


2

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


우연히 투표를 클릭 했으므로 내가 upvote를 허용하지 않습니다 :(
Developine

2

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

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

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

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

안드로이드 스튜디오

  1. 플러그인 적용 : 'com.google.gms.google-services'(build.gradle-모듈 레이어)
  2. 메뉴 ~> 빌드 ~> 클린 프로젝트

나를 위해 잘 작동합니다.


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

빌드 작업 (GoogleServicesJson)을 파일 이름 Google-Services.Json으로 변경합니다.


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.