名称为[DEFAULT]的FirebaseApp不存在


81

迁移到Firebase Cloud Messaging之后。打开应用程序时,它崩溃并引发错误,提示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());

}
}

Answers:


108

请仔细检查,您已添加

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

嗨,森,您现在可以忽略此错误,他们将在下一版本中解决此问题。多数民众赞成在firebase团队说:)。
Venkatesan

当我添加它时,我得到:“错误:任务':app:mergeModernDebugResources'执行失败。> [string / google_api_key] / <路径> /app/src/main/res/values/defaults.xml [string / google_api_key] / <路径> / app / build /生成/res/google-services/modern/debug/values/values.xml:错误:资源重复”在FCM的设置或迁移指南中,我也没有看到此步骤。你有我可能错过的链接吗?
C尼克

1
颤振可能也需要flutter clean & flutter run答案中所建议的。

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图像编辑器)。它使用相同的应用程序类,因此尝试从不存在的Firebase应用程序获取令牌。在获取令牌之前进行检查解决了我的问题。非常感谢!:)
rzaaeeff

12

我遇到过类似的问题,对我来说,这是清单合并的错误/问题。我发现FirebaseInitProvider由于tools:node="replace"我的应用程序清单文件中的内容尚未注入最终清单文件中。因此,请尝试删除此xml标记FirebaseInitProvider并将其注入,然后可以正确初始化Firebase。


您能为那些不太熟悉合并工具@jmodrako的人更新您的答案吗?
Killer

目前,我已经更新到tools:replace =“ android:name”而不是tools:node =“ replace”。希望能有所帮助
Killer

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

将Firebase初始化移动到Application类的onCreate内。另外,如果您启用了离线持久性,则FirebaseDatabase.getInstance()。setPersistenceEnabled(true)应该在进行任何其他初始化之前进行。


现在不小心单击了否决票,所以不容许我投票:(
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

在Firebase中注册您的应用程序,然后将google-services.json复制到您的根项目中。

应用 classpath 'com.google.gms:google-services:3.1.0您的root 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

就我而言,我没有在应用启动时初始化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);
    }
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.