在我的应用中,我有两种产品口味。他们两个过去都工作正常。突然,当我尝试运行应用程序时,我开始出现ANR错误,并且该应用程序在启动过程中冻结。 Logcat中的错误是:
com.myapp.development中的ANR PID:7937 原因:执行服务com.myapp.development / com.myapp.development.service.MyFirebaseInstanceIDService
从不调用方法MyFirebaseInstanceIDService.onTokenRefresh。该应用程序冻结,然后执行我自己的任何代码。
生产风味仍然很好。
Firebase控制台中的所有设置均正确设置。该应用程序在Play商店中,并且两种样式都可以正常工作。
productFlavors {
production {
applicationId 'com.myapp'
dimension "default"
}
development {
applicationId 'com.myapp.development'
dimension "default"
}
}
如您所见,这两种风格之间的唯一区别是应用程序ID。而且,如果我更改了developermnet风格的应用程序ID,它就会开始起作用(该应用程序不会冻结)。
我尝试了以下测试:
在清单文件中,删除MyFirebaseMessagingService和MyFirebaseMessagingService和MyFirebaseInstanceIDService。然后应用程序在启动时仍然冻结,但是logcat中的错误略有变化: com.myapp.development中的ANR PID:683 原因:执行服务com.myapp.development / com.google.firebase.iid.FirebaseInstanceIdService
我签出了一个旧的git分支,并尝试启动它,但问题仍然存在。
问题似乎与应用程序ID和Firebase有关,但我找不到。 有人有什么想法吗?
在Shark和sebasira发表评论后更新。
在Firebase控制台中,我只有一个项目,并且为它定义了两个应用程序-每种口味都有一个。在那种情况下,不需要多个google-services.json,每种口味一个。该文件对于所有口味都是相同的,可以放在根目录中: 应用/ google-services.json
文件结构如下:
{
"project_info": {...},
"client": [...],
}
如您所见,有很多客户。在该数组中定义了所有应用程序ID(所有调味剂)。这就是为什么如果我从Firebase下载每个应用程序的google-services.json文件,它们都是一样的。
无论如何,我试图为每种风味分别放置一个不同的google-services.json文件:
app/src/
flavor1/google-services.json
flavor2/google-services.json
但这没有帮助。
答案 0 :(得分:1)
我面临着完全相同的问题,我的应用程序配置也与您的完全相同。
该问题是由我在代码中使用的最新Facebook SDK引起的,它在应用启动之前使Firebase崩溃,因此应用转到了ANR。
我将我的Facebook SDK版本设置为4.35.0,就解决了该问题。
尝试一下,让我知道是否有帮助。