这段废话居多,可以直接从第二段开始看,之所以想换掉原生的安卓webview谷歌内核,改用可能会不稳定一些的x5内核,是因为要安装app的机器性能不足,用了同是原生内核的闪电浏览器仍然卡顿,我想自己肯定比不了开发闪电的大神,预感原生内核已经到了瓶颈,再优化也八成是徒劳,所以换内核可能是优化的唯一途径,听说x5虽然不稳定一些,但是优化更好,所以也是抱着试试看的心态尝试了一下,用一个页面测试之后,发现效果比原生内核要好(至少从流畅度上来说),经过几天努力终于完成了app的webview内核改造,虽然最终还是弃用了x5,但还是想写一篇文章来记录一下我这个初级使用者在让x5内核跑起来的过程中遇到的一些坑

替换内核我参考的是这篇文章,比较傻瓜式的教程,没有多余的步骤,比较适合第一次接触x5的安卓开发人员,在这里也对文章作者表示感谢
https://blog.csdn.net/ruiruiddd/article/details/107062671

刚开始做简单app改造的时候其实很顺利,一下子内核就跑起来了,页面的运行效果也很好,让我一度以为事情可以这么简单地结束,让本来不报太大希望的我瞬间提起了干劲

谁知道到复杂app改造的时候,内核就是死活跑不起来,我开始看后台的报错的信息(这里有我的锅,因为其他信息太多了,所以我选择就看警告和报错的信息,其实更应该全部信息都看,所以给我的启示就是以后写代码后台的打印语句用完了就及时注释掉,不然越积越多,代码一多后台就完全不能看了),我比对了启动x5成功和失败的后台报错信息,找了其中失败时才有的报错,去网上查信息,发现x5的参考文献真的少,这几个报错的信息就更少了

没有办法,我把两个app的配置尽量调成一致,把复杂app的不必要的功能都一点点注释掉,尽量就让其做一个工作,进来加载一个网页,这个工作其实非常麻烦,毕竟app已经很复杂,想调成完全一样根本不可能,我也不知道是不是哪个没改的不起眼的语句导致了x5的加载失败,那一天是一点结果都没有,本来只是想试试,谁知道这么麻烦,如果当初知道这么麻烦,我一定不会去换,毕竟x5的副作用可能会非常大,稳定性和流畅度的取舍,确实也说不上谁好谁坏

谁知道就在我要放弃的时候,第二天app奇迹般地成功加载了内核,当时我也没多管,把剩下的改造进行完,当然中间也有一点小插曲,初学者使用x5时要注意,改造时,很多类名前要加上com.tencent.smtt.sdk,比如 webView.setWebViewClient(new com.tencent.smtt.sdk.WebViewClient() {…},虽然是我犯的很白痴的问题,但是初学者可能就是会因为这个卡住,因为很多教程直接在上面import了,下面就没加com.tencent.smtt.sdk,初学者看教程没注意import部分,如果自己没import,也没在类名前加com.tencent.smtt.sdk,可能就会一时摸不着头脑,为什么使用setWebViewClient和setWebChromeClient进行配置时会报错

还有就是打开摄像头等硬件时需要询问的问题,原生已经做到不要询问直接打开了,但是X5好像得用其他的方式,目前有看到一篇文章介绍到x5的setWebChromeClientExtension配置方式,网上X5的资料确实太少了,这篇文章也是机缘巧合才搜到的,貌似setWebChromeClientExtension的配置方式内容比较丰富,我还没有深入探索,应该很值得深究,很多问题可能都能在这个配置里得到解决,详见文章
https://blog.csdn.net/qq_36818970/article/details/102697286

这篇文章最后也成了解决问题的关键,因为文章提供了一条解决x5问题的新途径,向官方提交错误详情,申请帮助,这点后面再说

本以为事情就这样结束了,没想到换了一台机器又出了问题,当时非常的惊讶,因为两台机器基本就是一样,除了分辨率,剩下的主要配置都是一样的,开始以为真的是分辨率的问题,就用成功启动x5内核的机器的刷机包刷了失败的机器,没有成功,后来把两台机器的设置里的配置调成一样还是不行,最后都怀疑到是不是安卓补丁程序版本差了两年的原因

后来在继续"乱搞"之前,我想到了前面提到的文章里写的向官方寻求帮助的方式,于是我去官网找到了向官方反馈的链接
https://x5.tencent.com/


然后按提示填写完表格就好,注意不要乱点击下图的链接,因为跳回来你会发现之前填写的内容不会保存,全部白填了

但是要说的是反馈并不是重点,因为我千辛万苦填完后发现根本提交不了,非常坑,而重点是下图中的网址

用x5改造完的webview加载
http://debugtbs.qq.com
这个网址,会打开x5的调试工具
注意无论内核改造后是否能成功启动内核,都必须要改造完再加载这个网址,原生的webview打开不了x5的调试工具,只会跳转到官网,改造就根据上面提到的文章进行傻瓜式改造
https://blog.csdn.net/ruiruiddd/article/details/107062671
调试工具详见下图

因为官网反馈要提交 X5内核版本和X5sdk版本,所以我就用调试工具查了两台机器的内核版本和sdk版本信息
查询方式如下图

这一查就发现了问题所在,成功的机器有内核版本,而失败的机器查不到内核版本,看来就是失败的机器里不存在x5内核导致的x5内核加载失败,于是点击了下图所示的图标,功能名称怎么看都像是能解决内核缺失问题的样子,最后等待下载完内核,问题也终于解决了,内核成功启动

当然至今为止我也没有完全弄清楚为什么一台机器突然可以加载内核了,而另一台机器却不行,我上网查了些x5内核的资料,其中有篇文章谈到x5内核使用必须联网,我想到成功的那台机器最开始也是不行,后来莫名其妙放了一个晚上就行了,而且我想到两台机器还有一点不同,就是成功的机器只能连wifi,而失败的机器是可以连接wifi和网线的,连网线时是连不了外网的(但其实之后尝试只连wifi还是不行),最后我又想到当时用调试工具下载内核并不是一下子就下载完的,下了有大概十几秒,这样的话后来只连wifi还是不行的情况就有了一种解释,就是当时看内核启动失败我就直接关闭了app,而我现在怀疑x5内核改造完 会在app启动后在连接网络的机器中自动下载内核,而下载内核需要一定时间,我马上关闭了启动内核失败的app导致内核还没下载完就被我中断了,当然这些都只是我的猜测
如果我的猜测没错的话,在改造x5都执行了正确的操作的情况下,如果还是启动内核失败,不妨在确保机器连网的情况下让启动内核失败的app运行几分钟,或许再次启动app或者重启后就能成功加载x5内核了(没试验过,纯属猜测)
(现在想想如上文所述 之前简单app能启动时复杂app仍旧启动内核失败,按猜测简单app能启动时内核应该已经下载好,复杂app此时应该可以启动,但事实并非如此,看来我的猜测多半有错)

当然按照上面用x5调试工具手动下载内核的方式就八成可以解决问题了,就是麻烦一些,至此,新手应该也可以成功跑起x5内核了

我觉得从无到有是做任何事情很关键,且最枯燥艰难的一步,所以写下这我程序员生涯的第一篇长文,以作记录

初使用tbs的x5内核所遇到的坑,初学者如何第一次跑起x5内核相关推荐

  1. 【内核定制】超详细华为Honor 9i(LLD-AL20)重新编译内核(解除ptrace禁用)以使用Frida

    目录 所需资料 详细步骤 检查手机版本 开启大小写敏感(仅限WSL) 安装make-3.81(已是该版本可以跳过) 编译内核 制作修补后的内核镜像文件 刷入制作的内核镜像文件 最终测试 最终成品 参考 ...

  2. android腾讯x5播放器,腾讯x5内核浏览器WebView调起微信支付,以及实现x5内核视频播放...

    1.新建项目在app目录下新建文件夹libs,用于导入腾讯内核jar依赖包 图片发自简书App 2.main目录下新建jniLibs文件夹,用于存放x5内核的.so文件,播放视频用. 图片发自简书Ap ...

  3. linux内核编译及添加系统调用(hdu)_浅谈关于Linux内核write系统调用操作的原子性

    Linux系统的write调用到底是不是原子的.网上能搜出一大堆文章,基本上要么是翻译一些文献,要么就是胡扯,本文中我来结合实例来试着做一个稍微好一点的回答. 先摆出结论吧.结论包含两点,即write ...

  4. linux 3.5.0-23-generic内核版本系统调用数目,Linux操作系统分析(三)- 更新内核与添加系统调用...

    环境:Ubuntu 12.10     学号:SA****199 1.更新内核: 直接安装的系统内核版本一般不是最新,用 uname -a 查看一下 自己的版本,OK,我的是: Linux chenh ...

  5. mageia linux 5.1 内核,Linux 5.10 LTS发布 为近期最重要的内核版本之一

    原标题:Linux 5.10 LTS发布 为近期最重要的内核版本之一 正如人们所期待的那样,Linus Torvalds今天正式发布了Linux 5.10. 除了是2020年的最后一个内核发布,这也是 ...

  6. 《Linux内核设计与实现》读书笔记(十八)- 内核调试

    内核调试的难点在于它不能像用户态程序调试那样打断点,随时暂停查看各个变量的状态. 也不能像用户态程序那样崩溃后迅速的重启,恢复初始状态. 用户态程序和内核交互,用户态程序的各种状态,错误等可以由内核来 ...

  7. Linux内核 eBPF基础:perf(1):perf_event在内核中的初始化

    Linux内核 eBPF基础 perf(1):perf_event在内核中的初始化 荣涛 2021年5月12日 本文相关注释代码:https://github.com/Rtoax/linux-5.10 ...

  8. Linux内核移植漫谈——你不是第一个想移植Linux内核的人

    Jack:在读大学的时候我想过移植Linux操作系统. 我:现在呢? Jack:我还是想移植Linux操作系统.你教我移植吧. 我:你知道什么是"Linux内核移植"吗? Jack ...

  9. Linux内核设计与实现(1)第一章:Linux内核简介

    Linux内核设计与实现(1)第一章:Linux内核简介 1. linux历史及与Unix关系 2. 内核组成 3. 用户空间和内核空间 4. 系统调用 5. 中断 6. Unix强大的原因 7. L ...

  10. android 重新编译内核,[原创]华为内核重新编译踩坑记

    华为内核重新编译踩坑记 前几天有朋友找我帮他跟一个加密,由于js太乱了,想从app入手,于是打算用frida脱壳,结果发现报错 Failed to attach: remote_write PTRAC ...

最新文章

  1. 电脑安装python为什么不能用-python安装后不能运行怎么办
  2. 【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
  3. laravel mongodb如何声明数据类型_什么是MongoDB?简介,架构,功能和示例
  4. Linux入门之常用命令(10)软连接 硬链接
  5. 864. 二维数组区块计数
  6. 云计算、分布式计算、并行计算、网格计算、集群
  7. Asp.net 对路径的访问被拒绝 解决办法
  8. day57 闭包函数 函数提升 BOM操作 js选择器 替换元素 类属性操作
  9. 基于matlab的SMO实现
  10. 在linux中at 调度出错,Linux 技巧: 用cron 和at 调度作业
  11. 实时渲染大赛太卷了,来看提前交卷的优秀参赛作品
  12. 快来,分享两款好用的制图软件
  13. Django 图书-英雄
  14. 关于7.0去掉Chrome后,平台默认浏览器报错webview not installed的问题
  15. 基于SSM图书借阅管理系统
  16. 使用 TDengine 快速搭建车联网平台
  17. layer弹出层内点击确认提交数据并关闭弹出层
  18. linux合并iso文件,多个ISO文件怎样合并为一个ISO文件(Linux下的操作)
  19. 惯性导航之四元数与欧垃角互转(五)
  20. 史上最简单的linux访问外网

热门文章

  1. java heapdump 分析工具_heapdump分析工具
  2. TiledMap使用笔记
  3. 厦门市建筑物矢量数据(Shp格式+带高度)
  4. 如何自己写一个CNV分析软件?
  5. 在一起计时器_奇妙物理·高中篇:打点计时器基本介绍
  6. Android5开机自动执行sh,自动脚本执行器
  7. 网课查课插件 支持 60类型+ 彩虹查课插件 网络查课查询
  8. Easyui常用按钮图标汇总
  9. 十二届蓝桥杯c++A组答案
  10. vscode 中的 Lammps Syntax Highlighting 插件