Dar*_*usL 5 android firebase leakcanary
在处理泄漏时,我得到了一个java.lang.IllegalStateException: FirebaseApp with name [DEFAULT] doesn't exist.
内部Application.onCreate
.根据我的理解,这是因为LeakCanary创建了我的应用程序类而没有所有Google Play服务,Firebase无法成功初始化.任何想法如何解决这一问题?
编辑:我正在使用leakcanary-android:1.4-beta2
,这是在转储堆后发生的.
我相信我找到了解决方法。google-services.json
您可以在其中或任何地方自行配置和初始化 Firebase,而不是使用 Google Play 服务插件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);
}
Run Code Online (Sandbox Code Playgroud)
寻找钥匙有点神秘。在里面google-services.json
你需要数据库 url,即project_info.firebase_url
. 如果您有多个应用程序使用 Firebase 存储库,则client
此处将会有多个对象。
如果您使用 Google Sign In,则 oauth id 位于 内client[app].oauth_client[1].client_id
。client
您可以根据包名称找出您的包,这oauth_client
是第二个对象,如下所示:
{
"client_id": "asfagasdgdas",
"client_type": 3
}
Run Code Online (Sandbox Code Playgroud)
api key 是client[app].api_key
,再次根据你的包找到客户端。
原谅伪 json。
该结构稍后可能会更改,这是为 Play Services 版本 9.0.1 编写的。
归档时间: |
|
查看次数: |
871 次 |
最近记录: |