Android 8.0接收通知後會手機崩潰,一直提示系統停止運行

最近用極光推送,發現有新的SDK,就試試用.我的手機是Nexus 6P,原生8.0,結果一更新,手機就不斷閃屏,系統崩潰,說要恢復出廠設置了

幸虧重啓前截停了.然後求助極光推送,可得到的答覆不是SDK的問題,碰巧也有人碰到這問題,但他說他的解決方法是在drawable-xxxx各分辨率下加上jpush_notification_icon.png就可以避免了.可我試了不行.鬱悶啊.一天重啓幾十遍.也跟着官方的SDK那樣配置,一樣還是不行.

主要出的系統log(不是app的log)在這裏

<span style="font-size:12px;">E/AndroidRuntime: FATAL EXCEPTION: main  
Process: com.android.systemui, PID: 10388  
java.lang.IllegalArgumentException: width and height must be > 0  
at android.graphics.Bitmap.createBitmap(Bitmap.java:1001)  
at android.graphics.Bitmap.createBitmap(Bitmap.java:968)  
at android.graphics.Bitmap.createBitmap(Bitmap.java:918)  
at android.graphics.Bitmap.createBitmap(Bitmap.java:879)  
at android.graphics.drawable.AdaptiveIconDrawable.updateMaskBoundsInternal(AdaptiveIconDrawable.java:333)  
at android.graphics.drawable.AdaptiveIconDrawable.updateLayerBounds(AdaptiveIconDrawable.java:295)  
at android.graphics.drawable.AdaptiveIconDrawable.onStateChange(AdaptiveIconDrawable.java:782)  
at android.graphics.drawable.Drawable.setState(Drawable.java:775)  
at android.widget.ImageView.drawableStateChanged(ImageView.java:1305)  
at android.view.View.refreshDrawableState(View.java:20012)  
at android.view.View.dispatchAttachedToWindow(View.java:17409)  
at android.view.ViewGroup.addViewInner(ViewGroup.java:4955)  
at android.view.ViewGroup.addView(ViewGroup.java:4746)  
at com.android.systemui.statusbar.phone.NotificationIconAreaController.updateIconsForLayout(NotificationIconAreaController.java:247)  
at com.android.systemui.statusbar.phone.NotificationIconAreaController.updateNotificationIcons(NotificationIconAreaController.java:155)  
at com.android.systemui.statusbar.phone.StatusBar.updateNotificationShade(StatusBar.java:1956)  
at com.android.systemui.statusbar.phone.StatusBar.updateNotifications(StatusBar.java:2136)  
at com.android.systemui.statusbar.phone.StatusBar.addNotificationViews(StatusBar.java:6702)  
at com.android.systemui.statusbar.phone.StatusBar.addEntry(StatusBar.java:1627)  
at com.android.systemui.statusbar.phone.StatusBar.onAsyncInflationFinished(StatusBar.java:1644)  
at com.android.systemui.statusbar.notification.NotificationInflater$AsyncInflationTask.onAsyncInflationFinished(NotificationInflater.java:641)  
at com.android.systemui.statusbar.notification.NotificationInflater.finishIfDone(NotificationInflater.java:460)  
at com.android.systemui.statusbar.notification.NotificationInflater.-wrap0(Unknown Source:0)  
at com.android.systemui.statusbar.notification.NotificationInflater$6.onViewApplied(NotificationInflater.java:343)  
at android.widget.RemoteViews$AsyncApplyTask.onPostExecute(RemoteViews.java:3421)  
at android.widget.RemoteViews$AsyncApplyTask.onPostExecute(RemoteViews.java:3401)  
at android.os.AsyncTask.finish(AsyncTask.java:695)  
at android.os.AsyncTask.-wrap1(Unknown Source:0)  
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)  
at android.os.Handler.dispatchMessage(Handler.java:105)  
at android.os.Looper.loop(Looper.java:164)  
at android.app.ActivityThread.main(ActivityThread.java:6541)  
at java.lang.reflect.Method.invoke(Native Method)  
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)</span>  

後來終於有官方的技術人員解答了這個問題. 原來是系統的bug, 原貼在這裏:

https://blog.pusher.com/upgrade-app-android-oreo-avoid-factory-reset/

如果你也有這個問題,你看看你新建的項目的資源文件目錄裏是不是有個mipmap-anydpi-v26的目錄?裏面有icon的xml文件? 處理的方法有三種,要麼target SDK低於26或者不用這個icon,把這目錄裏面的icon的xml刪掉.或者在manifest里加meta-data,

<meta-data  
        android:name="com.google.firebase.messaging.default_notification_icon"  
        android:resource="@drawable/your_non_adaptive_drawable" />

不過我自己試過加meta-data,還是不行.所以最簡單的方法就是把那些icon的xml刪了就是了.希望遇到這問題的各位也能順利解決,我就困擾了兩天,重啓了4,50次了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章