android webview 不支持 webgl (bug修复)
本文最后更新于 1012 天前,其中的信息可能已经有所发展或是发生改变。

纯纯标题党,在 android 5.0 后 android webview 就默认支持了 webgl3d 渲染,上周遇到一个问题,破解某个应用之后注入我的 webviewActivity 发现无法渲染 webgl3d 相关的视图,于是写一下这个 bug 定位到修复的流程

1. 定位 bug

webview 内容无法渲染,首先作为一个合格的开发人员。要对自己的代码有信心,先自行测试,adb 连接手机后在 chrome://inspect 中调试 webview 内容

  • 手动修改加载 地址 为 https://www.baidu.com 首先排除 webview 加载逻辑
  • 刷新渲染有问题的目标网址,查看 console 是否有导致渲染问题的 报错输出
  • 是否有 老的项目 h5 地址, 使用老项目的 h5 地址 测试。

按上面的流程走了一遍,发现定位不了问题。百度 可以渲染但是我们自己的网页渲染不了,老项目有的可以有的不行。专业的事找专业的人,拉 h5 看看,把目前定位到的现象总结一下,发给 h5 开发,这样可以帮 h5 开发定位问题节省很多时间。(切记,开发中 bug 定位需要协助的时候,要把现象,行为,报错。尽可能多的信息披露给同伴,不要挤牙膏一样问一点说一点)

h5 根据我们的关键信息测试出 有的项目能渲染是因为用的 webgl 2d, 不能渲染的是因为用的 webgl3d。

2. 了解相关技术

作为一个 android 开发,可能对 某些概念不太清楚。工作的时候要有迅速掌握陌生概念的能力,迅速了解一下 webgl ,以及 webgl 和 android webview 相关的知识。

webgl 3d 在 android 5.0 之后的 webview 中 是默认支持的,以及我们的老项目用的 webview 封装都是同一套代码。那么为什么会导致现在的 webview 无法渲染。

3. 定位问题

webview settings 是同一套代码,android targetsdk 版本没问题,h5 代码没问题。那当前工作和以前的完成的项目区别只有一个就是 破解的 主体游戏。

到此定位到问题。

4. 解决问题

必须要了解,什么情况下 webview 会不支持 webgl3d 。直接搜是搜不到答案的,需要对android 的基础掌握的比较深。

android 有一个 硬件加速是默认开启的,但是可以对某个view 或者某个页面进行关闭。

我破解的这个游戏 就是在 application 级别关闭了硬件加速,导致 webview 不支持 webgl3d 渲染。

android:hardwareAccelerated="false"

在 manifest 中去掉这个属性就可以解决问题了。这个问题的解决还是比较考验基础的

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇