浏览器的定制开发,不得不涉及到国产化系统,特别在当前的国产化大潮下,各类操作系统和CPU层出不穷,包括UOS、中标麒麟、银河麒麟、中科方德、深度、红旗、普华、一铭等国产操作系统,以及龙芯、飞腾、兆芯、海光、鲲鹏等国产CPU。当前,国产化平台下操作系统大部分默认安装FIREFOX以及基于CHROMIUM的定制版,如UOS浏览器。当然用户也可以选择自行安装其他高版本的浏览器(大部分基于linux系统)。
由于国产操作系统的linux生态相对不成熟,在国产OS上的各个版本的浏览器在性能和易用性等方面均不如windows和android平台的版本。比如,国产化平台下的默认安装的浏览器都不支持H264硬解码以及H265编解码;国产化平台下浏览器版本也没有及时更新到较新的浏览器内核版本;还有很多浏览器没有很好地适配硬件特性。
对于硬件适配问题,特别是困扰众人的硬解码的支持,目前国产化系统上支持硬解的主要难点是大部分OS的内核版本低,需要安装一些依赖包,比如vaapi/vdpau的驱动,有些还需要升级一些系统组件比如mesa,xorg等。LINUX下硬解使用VAAPI框架来实现的。默认LINUX下是关闭该编译参数的,另外需要修改一些代码支持H264硬解码,还需要增加一些代码来支持H265格式。
在编译方面也稍微复杂,对于ARM64和AMD64下的编译,跟WIN下类似,下载CHROMIUM LINUX版本,按官方的说明,编译参数指定架构和系统就可以了,如果在编译完要制作DEB/RPM安装包,还需要制定enable_linux_installer = true参数。执行ninja -C out/ReleaseX64 chrome编译完成后,可以执行ninja -C out/ReleaseX64 stable_deb/stable_rpm 制作安装包。
对于MIPS64编译就稍微麻烦一些,CHROMIUM的官方编译脚本对MIPS64支持很不完善。编译参数需要配置为target_cpu="mips64el\ mips_arch_variant=“loongson3” target_os=“linux”。另外chromium自带的clang编译器不支持龙芯编译,还需要到龙芯官网下载龙芯的交叉编译工具链和SYSROOT。另外,较新版本的chomium源码在编译时会有很多代码错误。目前验证下来,最少错误的版本是67版本,通过修改一些文件的语法上的问题就能完整编译下来。
浏览器手艺人目前已经完成多种国产化平台下的浏览器定制开发,特别是针对硬件加速、国密技术、以及各平台的适配等方面,具有深入的研究。有进一步需求,可关注微信公众号(浏览器手艺人)留言或发送邮件browser_craftsman@163.com