一种动态配置chromium功能模块的方法、装置及电子设备制造方法及图纸

技术编号:29043962 阅读:17 留言:0更新日期:2021-06-26 05:55
本发明专利技术公开了一种动态配置chromium浏览器功能模块的方法、装置及电子设备,其中方法包括以下步骤:梳理chromium浏览器的功能模块,识别chromium浏览器未配置开关的功能项;针对未配置开关的功能项添加配置开关;根据需求设置功能配置清单并控制功能项的编译;运行所述chromium浏览器,控制功能项参与或不参与运行。本发明专利技术的一种动态配置chromium功能模块的方法、装置及电子设备,通过梳理chromium各功能模块并进行模块化处理,将chromium各功能添加功能开关,并对外提供功能开关配置,以达到快速定制裁剪chromium功能,平衡功能、性能与binary size的目的,实现动态配置chromium功能模块。功能模块。

【技术实现步骤摘要】
一种动态配置chromium功能模块的方法、装置及电子设备


[0001]本专利技术涉及浏览器领域,尤其涉及一种动态配置chromium功能模块的方法、装置及电子设备。

技术介绍

[0002]Chromium是一个优秀的、功能丰富的开源浏览器引擎,很多平台的embed view或Hybrid App都是基于Chromium浏览器引擎构建的。整个Chromium引擎内部不仅囊括了众多内核platform级功能,比如完毕的W3C spec支持度、丰富的HTML tag和CSS3样式属性,还包括Chromium在外围实现的众多Application级功能,比如网页翻译、多用户、夜间模式等。
[0003]虽然Chromium是一个功能丰富的浏览器引擎,但由于Chromium倡导用空间换时间,导致Chromium在追求速度的同时,妥协了一些其它点,比如Memory,Binary Size等,在一定程度上使得Chromium显得有些臃肿。当将Chromium应用在某些特定平台上时,Chromium的一些功能甚至是冗余的。比如在TV系统上并没有GPS模块,TV上根本就不需要Chromium LBS模块,也不需要支持实现HTML Geolocation API;再比如TV上也没有Camera模块,所以TV系统上的Chromium也不需要WebRTC模块。
[0004]因此,很多时候我们在基于Chromium打造自己的浏览器或浏览器SDK时,可能我们并不需要Chromium这样的大而全的功能,我们需要根据不同的场景或硬件平台,特别是嵌入式平台,对Chromium的这些众多功能进行适配性裁剪,实现一个小而精的客制化的浏览器或浏览器SDK,达到功能,性能与size的平衡。
[0005]但是Chromium中的很多功能并没有实现模块化,更没有实现各功能模块的可配置化,很多模块并没有暴露并提供一个外部flag开关,而是很多功能交叉在一起。Chromium的这种现状,使得当一些平台需要对Chromium进行功能裁剪时,非常麻烦。需要理清Chromium中各种功能的相互关系以及各功能的整体链路走向,然后才能对这些功能进行裁剪。

技术实现思路

[0006]有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是Chromium中的功能没有实现模块化,也没有实现各功能模块的可配置化,也没有提供外部的flag开关,使得对Chromium进行功能剪裁时非常麻烦。因此,本专利技术提供了一种动态配置chromium功能模块的方法、装置及电子设备,通过梳理chromium各功能模块并进行模块化处理,将chromium各功能添加功能开关,并对外提供功能开关配置,以达到快速定制裁剪chromium功能,平衡功能、性能与binary size的目的,实现动态配置chromium功能模块。
[0007]为实现上述目的,本专利技术提供了一种动态配置chromium浏览器功能模块的方法,包括以下步骤:
[0008]梳理chromium浏览器的功能模块,识别chromium浏览器未配置开关的功能项;
[0009]针对未配置开关的功能项添加配置开关;
[0010]根据需求设置功能配置清单并控制功能项的编译;
[0011]运行所述chromium浏览器,控制功能项参与或不参与运行。
[0012]进一步地,梳理chromium浏览器的功能模块,具体包括以下步骤:
[0013]通过chromium浏览器的功能设计文档和功能对应的code,识别chromium浏览器个功能模块的关系和依赖调用链路;
[0014]通过功能模块的关系和依赖调用链路,识别各功能模块的交叉点;
[0015]判断chromium浏览器中功能模块的数量和交叉点的数量,当chromium浏览器中功能模块的数量和交叉点的数量小于阈值时,对交叉的功能模块进行重构,将交叉的功能模块独立出来;
[0016]当chromium浏览器中功能模块的数量和交叉点的数量大于阈值时,合并部分交叉的功能模块,形成新的较大的功能模块。
[0017]进一步地,根据gn args

list生成的gn buildflag option输出、代码中的FeatureList字样、commandline switches字样、buildflag宏、自定义宏结合chromium目录结构综合起来梳理chromium各功能模块。
[0018]进一步地,识别chromium浏览器未配置开关的功能项,具体包括以下步骤:
[0019]梳理chromium浏览器的启动流程、相关code、gn编译链涉及到的build.gn文件,识别代码中或build.gn文件中没有配置功能开关的点,从而识别出chromium浏览器未配置开关的功能项。
[0020]进一步地,识别chromium浏览器未配置开关的功能项,具体包括以下步骤:
[0021]查看gn args

list生成gn build开关列表,并且查看所有的commandline,识别出已配置开关的功能项,从而推导出剩下的功能项为未配置开关。
[0022]进一步地,针对未配置开关的功能项添加配置开关,具体包括以下步骤:
[0023]通过功能项的设计文档和相关代码,确定功能项相互之间的关系;
[0024]确定要为功能项添加的开关类型和数量;
[0025]然后创建开关。
[0026]进一步地,所述开关类型包括build开关和runtime开关。
[0027]进一步地,确定为功能项添加的开关类型为build开关时,在build.gn文件中新增一个buildflag,然后通过所述buildflag控制相关文件的编译;
[0028]同时在build中根据buildflag,定义一个buildflag宏或自定义宏;
[0029]然后在代码中将功能代码用这些宏包起来。
[0030]进一步地,确定为功能项添加的开关类型为runtime开关时,针对FeatureList rumtime开关,在功能代码目录下创建一个单独的xxx_features.h/xxx_features.cc文件,里面存放所述功能模块的feature

rumtime开关;
[0031]针对commandline runtime开关,在功能代码目录下创建一个单独的xxx_switches.h/xxx_switches.cc,里面存放所述功能的commandline

runtime开关;
[0032]然后在代码中将功能代码用这些开关包起来。
[0033]进一步地,根据需求设置功能配置清单并控制功能项的编译,包括以下步骤:
[0034]根据平台软硬件特性和用户的具体需求,设置一个结构化的功能配置清单;
[0035]从所述功能配置清单中解析得到build开关,并应用到build本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种动态配置chromium浏览器功能模块的方法,其特征在于,包括以下步骤:梳理chromium浏览器的功能模块,识别chromium浏览器未配置开关的功能项;针对未配置开关的功能项添加配置开关;根据需求设置功能配置清单并控制功能项的编译;运行所述chromium浏览器,控制功能项参与或不参与运行。2.如权利要求1所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,梳理chromium浏览器的功能模块,具体包括以下步骤:通过chromium浏览器的功能设计文档和功能对应的code,识别chromium浏览器个功能模块的关系和依赖调用链路;通过功能模块的关系和依赖调用链路,识别各功能模块的交叉点;判断chromium浏览器中功能模块的数量和交叉点的数量,当chromium浏览器中功能模块的数量和交叉点的数量小于阈值时,对交叉的功能模块进行重构,将交叉的功能模块独立出来;当chromium浏览器中功能模块的数量和交叉点的数量大于阈值时,合并部分交叉的功能模块,形成新的较大的功能模块。3.如权利要求2所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,根据gn args

list生成的gn buildflag option输出、代码中的FeatureList字样、commandline switches字样、buildflag宏、自定义宏结合chromium目录结构综合起来梳理chromium各功能模块。4.如权利要求2所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,识别chromium浏览器未配置开关的功能项,具体包括以下步骤:梳理chromium浏览器的启动流程、相关code、gn编译链涉及到的build.gn文件,识别代码中或build.gn文件中没有配置功能开关的点,从而识别出chromium浏览器未配置开关的功能项。5.如权利要求2所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,识别chromium浏览器未配置开关的功能项,具体包括以下步骤:查看gn args

list生成gn build开关列表,并且查看所有的commandline,识别出已配置开关的功能项,从而推导出剩下的功能项为未配置开关。6.如权利要求1所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,针对未配置开关的功能项添加配置开关,具体包括以下步骤:通过功能项的设计文档和相关代码,确定功能项相互之间的关系;确定要为功能项添加的开关类型和数量;然后创建开关。7.如权利要求6所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,所述开关类型包括build开关和runtime开关。8.如权利要求7所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,确定为功能项添加的开关类型为build开关时,在build.gn文件中新增一个buildflag,然后通过所述buildflag控制相关文件的编译;同时在build中根据buildflag,定义一个buildflag宏或自定义宏;
然后在代码中将功能代码用这些宏包起来。9.如权利要求7所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,确定为功能项添加的开关类型为runtime开关时,针对FeatureList rumtime开关,在功能代码目录下创建一个单独的xxx_features.h/xxx_features.cc文件,里面存放所述功能模块的feature

rumtime开关;针对commandline runtime开关,在功能代码目录下创建一个单独的xxx_switches.h/xxx_switches.cc,里面存放所述功能的commandline

runtime开关;然后在代码中将功能代码用这些开关包起来。10.如权利要求7所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,根据需求设置功能配置清单并控制功能项的编译,包括以下步骤:根据平台软硬件特性和用户的具体需求,设置一个结构化的功能配置清单;从所述功能配置清单中解析得到build开关,并应用到build.gn中,控制功能项的编译。11.如权利要求10所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,根据平台软硬件特性和用户的具体需求,设置一个结构化的功能配置清单,设置功能配置清单通过程序自动化配置及人工个性化定制配置相结合完成。12.如权利要求11所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,调用平台接口,获取到当前设备的硬件信息,根据设备的硬件性能自动配置一部分功能配置清单,根据硬件性能动态开启或关闭某些功能项的开关。13.如权利要求10所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,从所述功能配置清单中解析得到build开关,并应用到build.gn中,控制功能项的编译,具体包括:从所述功能配置清单中解析得到build开关,然后设置到build.gn中,最后生成build.ninja编译文件,最后通过ninja编译生成具体的target产品输出件。14.如权利要求10所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,运行chromium浏览器,控制功能项参与或不参与运行,具体包括:从功能配置清单中解析得到运行时runtime开关,控制功能项参与或不参与运行。15.如权利要求12所述的一种动态配置chromium浏览器功能模块的方法,其特征在于,从功能配置清单中解析得到runtime开关,然后设置到commandline中,chromium浏览器在运行时读取所述commandline值,动态开启或关闭功能项。16.一种动态配置chromium浏览器功能模块的装置,其特征在于,包括以下模块:梳理模块,用于梳理chromium浏览器的功能模块,识别chromium浏览器未配置开关的功能项;新增模块,用于针...

【专利技术属性】
技术研发人员:顾怀建黄俊杰
申请(专利权)人:视若飞信息科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1