【问题标题】:Android ANR in MyFirebaseInstanceIDService just in one product flavorMyFirebaseInstanceIDService 中的 Android ANR 只是一种产品风格
【发布时间】:2018-09-05 11:28:39
【问题描述】:

在我的应用中,我有两种产品风格。他们俩以前都工作得很好。当我尝试运行应用程序并且应用程序在启动过程中冻结时,突然开始出现 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。如果我在developmnet 风格中更改应用程序ID,它就会开始工作(应用程序不会冻结)。

我尝试了以下测试:

  1. 我通过添加一个字母来更改开发风格的包 ID:“com.myapp.developmentX”。我也在 google-services.json 文件中进行了相应的更改。然后开发味道也开始了。但是 Firebase 服务当然不起作用,因为新的应用程序 ID 没有在 Firebase 控制台中配置。
  2. 在清单文件中,我删除了 MyFirebaseMessagingService 和 MyFirebaseMessagingService 以及 MyFirebaseInstanceIDService。然后应用程序在启动时仍然冻结,但 logcat 中的错误略有变化: com.myapp.development 中的 ANR PID:683 原因:执行服务 com.myapp.development/com.google.firebase.iid.FirebaseInstanceIdService

  3. 我检查了一个旧的 git 分支并尝试启动它,但问题仍然存在。

  4. 我也试过:卸载应用程序并重新安装。清洁项目。删除构建目录。重启测试设备。使用安卓模拟器。重新启动计算机。重启安卓工作室。将 Android Studio 更新到最新的 Mac 版 3.1.4。但这些都没有帮助。

看起来问题与应用程序 ID 和 Firebase 有关,但我找不到。 有人有什么想法吗?

在 Shark 和 sebasira 的 cmets 之后更新。

在 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

但这没有帮助。

【问题讨论】:

  • 你可以试试这种方式stackoverflow.com/questions/50470926/…
  • 我猜你需要另一个google-services.json,每个应用ID一个。
  • 每种口味都需要不同的google-services.json 文件。就这么简单

标签: android firebase firebase-cloud-messaging android-anr-dialog


【解决方案1】:

我遇到了完全相同的问题,我的应用配置也与您的完全相同。

这个问题是由我在代码中使用的最新 Facebook SDK 引起的,它在应用启动之前使 Firebase 崩溃,因此应用进入 ANR。

我将我的 Facebook SDK 版本设置为 4.35.0,这解决了问题。

试试看,如果有帮助,请告诉我。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2019-04-03
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
相关资源
最近更新 更多