Android TV 8.0 Browser播放視訊閃退
平臺
- 平臺:Mstar Android 8.0 TV
問題
- 問題:在Browser裡面去播放網路視訊,或者是播放音樂都會閃退。
錯誤日誌
於是跑去查看了報錯資訊,結果發現如下所示:
pid: 5312, tid: 5312, name: android.browser >>> com.android.browser <<< signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x229 Cause: null pointer dereference r0 00000229 r1 ed26682d r2 00000000 r3 0000006f ...... scr 20000013 backtrace: #00 pc 00cbaefc /system/app/webview/webview.apk (offset 0x8e4000) stack: ff8ce328 ff8ce35f [stack] ff8ce32c f0343c47 /system/lib/libc.so (__system_property_read+38) ......

一臉懵逼.jpg
問題分析
what xxxx???這是什麼鬼錯誤,以前從沒見過。內心崩潰3s,開始了google和baidu之旅。
接下來發現一個更加懵逼的事情,別人的backtrace都是顯示的.so檔案,而我的卻是一個apk。。。接著去找backtrace是apk的問題,找了半天沒找到,好吧,其實找到一個,按照他的辦法(addr2line去看webview的2個so檔案都是問號)試了也不行。這裡如何使用addr2line來分析so檔案報錯我就不說了,網上一大推。
內心是崩潰的。。。調整一下心情,於是打算換一種方式去解決問題,那就是更新apk,因為報錯的是webview.apk,google又是內建的apk,就是說是沒有原始碼的,所以就去網上下載了webview的( ofollow,noindex">下載地址,貌似被牆了 )最新版本,丟進去測試之後發現播放視訊和音樂都不會閃退了。
解決方法
更新webview需要進行以下三步操作:
-
frameworks/base/core/res/res/xml/config_webview_packages.xml
1.將config_webview_packages.xml的packageName改為com.google.android.webview,如果不修改,則會報錯webview找不到,導致Browser閃退
-
external/chromium-webview/prebuilt/arm/webview.apk
2.替換webview,你可以修改mk檔案,也可以將apk檔名修改為webview.apk
-
frameworks/base/core/res
3.編譯res,生成framework-res.apk,然後編譯webview,生成webview.apk,最後將這兩個apk,cp到板子裡面對應的路徑下,reboot
最後經過多次測試,並沒有發現閃退和報錯的問題。
ps.在找不到解決問題的方法的時候,我們可以嘗試著從另外一個角度去思考問題,然後去解決問題。