2017-10-18 115 views
0

我在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世代或我不知道的支持庫中發生了變化。如果你有任何線索,這將是受歡迎的。

回答

1

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. 發送測試通知到您的設備
相關問題