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

问题描述:

我在Play商店有一个应用程序,我定期更新Android工具更新和依赖关系更新,但就是这样。 我只是确保它能够编译并使用最新的Android平台和支持库。致命异常:android.app.RemoteServiceException从包中发布的错误通知

我不添加任何功能或任何东西。

最近我已经收到了很多碰撞对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世代或我不知道的支持库中发生了变化。如果你有任何线索,这将是受欢迎的。

AS 3.0使用新的gradle版本。在我的应用程序中,我有同样的问题。这是由新的资源ID造成的。如果比较由不同gradle版本生成的R.java文件,则可以看到相同的资源具有不同的ID。就我而言,我使用DevToDev SDK来接收推送消息。我初始化SDK并在MainActivity中传递通知中使用的资源,很显然,如果用户在更新后不启动应用程序,那么会在通知中使用用于recources的旧ID。这会导致应用程序崩溃。我还没有解决我的问题呢,我可以为您提供解决的唯一办法是使用广播接收器捕捉的应用程序更新事件

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

,并有初始化SDK。

如果你想replacate这个问题,你可以尝试做这些步骤:

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