5

处理泄漏时,我java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.Application.onCreate. 据我了解,发生这种情况是因为 LeakCanary 创建了我的应用程序类而没有所有 Google Play 服务的东西,并且 Firebase 无法成功初始化。任何想法如何解决这一问题?

编辑:我正在使用leakcanary-android:1.4-beta2,这发生在转储堆之后。

4

3 回答 3

3

或者,您可以按照文档的建议保留 google play services 插件配置。

通过将其添加到 AndroidManifest.xml 来禁用 FirebaseInitProvider

<provider
    android:name="com.google.firebase.provider.FirebaseInitProvider"
    android:enabled="false" />

并将其添加到您的 Application 类

FirebaseOptions options = FirebaseOptions.fromResource(this);
FirebaseApp.initializeApp(this, options);

这样您就不必手动配置 FirebaseOptions。

于 2016-09-04T11:38:38.167 回答
0

看来问题是由 Firebase 的自动初始化过程引起的。要解决此问题,您应该手动禁用 Firebase Init Provider 和 init Firebase。为此,您应该执行以下操作:

在您的文件中禁用提供程序AndroidManifest

<provider
android:name="com.google.firebase.provider.FirebaseInitProvider" 
android:authorities="${applicationId}.firebaseinitprovider" 
android:enabled="false" /> 

通过将这样的行添加到您的类来手动初始化 Firebase Application

FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this))

PS @ne'mi 的答案几乎是正确的,除了您需要添加authorities禁用提供程序。决定创建一个新的答案,这样其他人会更容易找到功能齐全的答案。

于 2018-03-23T14:01:03.783 回答
0

我相信我找到了解决方法。无需使用 Google Play 服务插件,您可以自己在其中或任何地方google-services.json配置和初始化 Firebase 。Application.onCreate

@Provides
@Singleton
protected FirebaseApp proviceFirebaseApp(Application application) {
    FirebaseOptions options = new FirebaseOptions.Builder()
            .setApplicationId(application.getPackageName())
            .setDatabaseUrl(BuildConfig.FIREBASE_DATABASE_URL)
            .setApiKey(BuildConfig.FIREBASE_API_KEY)
            .build();
    return FirebaseApp.initializeApp(application, options);
}

找到钥匙有点神秘。在里面google-services.json你需要数据库 url,即project_info.firebase_url. 如果您有多个使用 Firebase 存储库的应用程序,则client此处将有多个对象。

如果您使用的是 Google 登录,则 oauth id 在里面client[app].oauth_client[1].client_idclient您可以根据包名称找出您oauth_client的第二个对象,如下所示:

{
  "client_id": "asfagasdgdas",
  "client_type": 3
}

api键是client[app].api_key,再次根据你的包找到客户端。

原谅伪json。

该结构稍后可能会更改,这是为 Play Services 版本 9.0.1 编写的。

于 2016-06-02T12:26:07.843 回答