ANR与FCM和使用applicationIdSuffix构建变体

时间:2017-04-18 16:14:59

标签: android firebase android-gradle firebase-cloud-messaging

我遇到构建变体和FCM的问题。

我定义了3个变体:dev,qa,release

dev/qa have applicationIdSuffix '.dev'

release has no suffix

google-services.json 文件正确定义了两个软件包名称,并且我读到google-services插件在构建过程中会自动读取它。

当我启动dev变体时,一切正常。但之后,如果我切换到发布变体并尝试启动该应用程序只是挂起以下跟踪:

  

xxx中的ANR

     

原因:意图广播{act = com.google.firebase.INSTANCE_ID_EVENT flg = 0x14 cmp = xxx / com.google.firebase.iid.FirebaseInstanceIdInternalReceiver(has extras)}

Dev变体始终有效,但暂存变量也会在开始时挂起。

可能的相关问题:

Application not responding after adding Firebase

注意:我还测试了调试变体与完全相同的配置阶段变量已经有效。因此Gradle在调试变体方面做了不同的事情,因为没有问题。

任何想法如何解决这个问题?这是因为Android Studio还是gradle中的一些错误配置?在构建应用程序时,同事从未见过这个问题。

我也试图删除android studio并重新安装它,也删除了项目并再次拉动源代码,但我的笔记本电脑仍然出现错误。

感谢。

注意:我重新启动了我的笔记本电脑,并从终端运行干净的组装,现在所有的变种似乎都有效。我注意到有时直接从Android工作室构建时,似乎应用程序有点开始,然后它被删除,然后导致FCM接收器挂起,因为应用程序刚被删除。这是Android studio的一些配置吗?

结论

我没有找到导致此问题的Android Studio / Laptop / Gradle设置的实际原因,但是如果您遇到同样的问题。尝试重新启动计算机,重新克隆应用程序项目可能有所帮助,同时使用干净选项从命令行构建变体也可以帮助而不是使用Android studio构建它。

2 个答案:

答案 0 :(得分:0)

确保您已在清单文件中实施这两项服务。

    <service android:name="com.test.notification.MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
    </service>

    <service android:name="com.test.notification.MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
        </intent-filter>
    </service>

答案 1 :(得分:0)

尝试放

MSET one 1 two 2 three 3 four 4
KEYS *o*
-> 1) "two"
-> 2) "four"
-> 3) "one"

到build.gradle的末尾 和

apply plugin: com.google.gms.google-services

依赖性的顶部

compile com.google.firebase:firebase-messaging:x.x.x