致命异常:android.app.RemoteServiceException从包中发布错误通知

时间:2017-10-18 08:43:59

标签: java android push-notification

我在Play商店有一个应用程序,我会定期更新android工具更新和依赖项更新,但那就是它。 我只是确保它可以编译并使用最新的Android平台和支持库。

我没有添加任何功能或任何内容。

最近,我收到了很多关于ActivityThread.java的崩溃消息:

Fatal Exception: android.app.RemoteServiceException
Bad notification posted from package xxx.xxx.xxx: Couldn't create icon: StatusBarIcon(pkg=gxxx.xxx.xxxsuser=0 id=0x7f03002d level=0 visible=true num=0 )

我的应用程序确实收到通知,我使用内部通信SDK,就像这样注册

Intercom.client().setupGCM(token, R.mipmap.notification_icon);

基本上我不会自己拦截通知,我只是使用AsyncTask来请求GCM令牌。

现在看来每次制作应用都收到通知时,根据我收到的报告,它默默地无法创建通知并使应用程序崩溃。

在Android 3.0和compileSDK 26版本之前,我没有遇到过这个问题。 我没有改变,也没有处理通知的代码,也没有Intercom SDK版本。

我是否提到我自己无法复制这个问题,我的手机上都有调试和生产版本,我可以收到通知。

但是我在野外遇到了很多这样的崩溃事件。除了将数千个通知发送到同一个应用程序之外,您可以这样做。

但它似乎集中在Android 7的三星手机上。但不仅如此。

我想,我希望我不是唯一有这个问题的人,我打赌在APK世代或我不知道的支持库中有一些变化。如果你有任何线索,那将是受欢迎的。

1 个答案:

答案 0 :(得分:1)

AS 3.0使用新的gradle版本。在我的应用程序中,我有同样的问题。它是由新的资源ID引起的。如果比较由不同gradle版本生成的R.java文件,则可以看到相同的资源具有不同的ID。就我而言,我使用DevToDev SDK来接收推送消息。我初始化SDK并传递MainActivity中通知中使用的资源,显然,如果用户在更新后无法启动应用程序,则会有通知中使用的资源的旧ID。这会导致应用崩溃。我还没有解决我的问题,我可以解决它的唯一方法是使用BroadcastReceiver来捕获应用更新事件

<receiver android:name=".AppUpdateBroadcastReceiver"  android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
        </intent-filter>
    </receiver>

并在那里初始化您的SDK。

如果您想要重新解决此问题,可以尝试执行以下步骤:

  1. 安装旧版本的应用,启动它并确保通知正常工作
  2. 从AS
  3. 安装apk后禁用自动启动
  4. 安装新版本的应用程序(使用新的gradle版本构建),但不要启动它
  5. 向您的设备发送测试通知