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的(下载地址,貌似被墙了)最新版本,丢进去测试之后发现播放视频和音乐都不会闪退了。

解决方法

更新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.在找不到解决问题的方法的时候,我们可以尝试着从另外一个角度去思考问题,然后去解决问题。

你可能感兴趣的:(Android TV 8.0 Browser播放视频闪退)