一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种深度定制WebView,对外提供独立WebviewAAR的方法及装置与流程

2022-06-08 23:00:14 来源:中国专利 TAG:

aar的方法,在原生webview apk原本通道的基础上,将原生webview apk中的众多模块整体编译成一个custom webview aar,将custom webview aar单独提供给三方开发者编译依赖,将custom webview aar和三方app最终编译在同一个apk中,能够最大限度的避免不同app使用的webview内核相互之间的冲突和污染。
11.进一步地,custom webview aar包括上下两大模块,下边的模块为custom webview aar模块,将整个chromium模块编译打包成一个独立的aar;上边的模块为使用webview接口的三方app模块。
12.进一步地,custom webview aar直接编译至三方app中,直接调用custom webview aar的glue桥接层,然后通过chromium的内部分层架构,依次通过awcontent层、content层、webkit glue层,最终调用到最核心的blink模块。
13.进一步地,使将一个基于system webview构建的app快速改造成使用custom webview aar,即三方app改造使用custom webview aar,包括以下步骤:
14.将原有chromium中的system webview的相关包名更改为custom webview aar相关包名;
15.将layout文件中使用的system webview改为全称的custom webview aar包名;
16.添加对custom webview aar包的依赖,并重新编译。
17.进一步地,生成custom webview aar,具体包括以下步骤:
18.移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar;
19.修改chromium code,编译生成custom webview aar;
20.基于custom webview aar接口编写demo,验证custom webview aar功能。
21.进一步地,移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar,具体是将aosp fwk中frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,再修改依赖的包名为custom webview包名后(比如custom.webkit.webview),添加android_library gn模板,将其编译成custom webview jar。
22.进一步地,移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar,具体包括以下步骤:
23.将aosp fwk层frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,并修改包名为custom webview包名;
24.将原先aosp fwk层frameworks/base/core/java/android/webkit/目录下原先对webview apk的反射调用改为直接调用;
25.编译android_library模板,编译custom webview jar,供后面编译custom webview aar依赖使用。
26.进一步地,修改chromium code,编译生成custom webview aar,具体是修改src/android_webview目录,将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖,最后通过chromium内部gn构建系统的dist_aar模板,参照原生webview apk的gn编译链,将chromium内部的众多模块一起编译生成custom webview aar。
27.进一步地,修改chromium code,编译生成custom webview aar,具体包括以下步
骤:
28.将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖;
29.梳理webview gn编译依赖链,为后续的工作做准备;
30.通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar。
31.进一步地,通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar,具体在通过dist_aar模板生成aar时,通过resource_included_patterns,jar_excluded_patterns将特定的res和class排除掉,否则编译出的custom webview aar非常大,且当三方app也依赖android.support包时,编译会报错。
32.本发明又一较佳实施例提供了一种深度定制webview,对外提供独立webview aar的装置,装置在原生webview apk原本通道的基础上,将原生webview apk中的众多模块整体编译成一个custom webview aar,将custom webview aar单独提供给三方开发者编译依赖,将custom webview aar和三方app最终编译在同一个apk中,能够最大限度的避免不同app使用的webview内核相互之间的冲突和污染。
33.进一步地,custom webview aar包括上下两大模块,下边的模块为custom webview aar模块,将整个chromium模块编译打包成一个独立的aar;上边的模块为使用webview接口的三方app模块。
34.进一步地,custom webview aar直接编译至三方app中,直接调用custom webview aar的glue桥接层,然后通过chromium的内部分层架构,依次通过awcontent层、content层、webkit glue层,最终调用到最核心的blink模块。
35.进一步地,使将一个基于system webview构建的app快速改造成使用custom webview aar,包括以下模块:
36.第一更名模块,用于将原有chromium中的system webview的相关包名更改为custom webview aar相关包名;
37.第二更名模块,用于将layout文件中使用的system webview改为全称的custom webview aar包名;
38.添加模块,用于添加对custom webview aar包的依赖,并重新编译。
39.进一步地,具体包括以下模块:
40.移植模块,用于移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar;
41.编译模块,用于修改chromium code,编译生成custom webview aar;
42.验证模块,用于基于custom webview aar接口编写demo,验证custom webview aar功能。
43.进一步地,移植模块,具体是将aosp fwk中frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,再修改依赖的包名为custom webview包名后(比如custom.webkit.webview),添加android_library gn模板,将其编译成custom webview jar。
44.进一步地,移植模块具体包括以下单元:
45.移动单元,用于将aosp fwk层frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,并修改包名为custom webview包名;
46.调用修改单元,用于将原先aosp fwk层frameworks/base/core/java/android/webkit/目录下原先对webview apk的反射调用改为直接调用;
47.编译单元,用于编译android_library模板,编译custom webview jar,供后面编译custom webview aar依赖使用。
48.进一步地,编译模块,具体是修改src/android_webview目录,将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖,最后通过chromium内部gn构建系统的dist_aar模板,参照原生webview apk的gn编译链,将chromium内部的众多模块一起编译生成custom webview aar。
49.进一步地,编译模块具体包括以下单元:
50.修改单元,用于将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖;
51.梳理单元,用于梳理webview gn编译依赖链,为后续的工作做准备;
52.打包单元,通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar。
53.进一步地,打包单元具体在通过dist_aar模板生成aar时,通过resource_included_patterns,jar_excluded_patterns将特定的res和class排除掉,否则编译出的custom webview aar非常大,且当三方app也依赖android.support包时,编译会报错。
54.本发明的又一较佳实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,处理器执行程序时,实现如上述中任一项的方法。
55.本发明的又一较佳实施例提供了一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序使计算机执行时实现如上述中任一项的一种深度定制webview,对外提供独立webview aar的方法。
56.技术效果
57.本发明提供的一种深度定制webview,对外提供独立webview aar的方法、装置及电子设备,将原先custom webview apk的内容整体编译成一个custom webview aar,然后将此custom webview aar提供给三方app的开发者在编译三方app时编译依赖,让此custom webview aar和三方app一起编译。使得三方app可以自由定制webview内核,同时三方app更可以独立升级webview内核,而对同样使用webview接口的其它app没有任何影响,从而应用开发者可以自由修改定制webview内核,而不用担心对其它app的影响,满足了应用的特殊需求,弥补了system webview的不足。
58.以下将对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
具体实施方式
59.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解
释本发明,并不用于限定本发明。
60.以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
61.本发明提供了一种深度定制webview,对外提供独立webview aar的方法,在原生webview apk原本通道的基础上,将原生webview apk中的众多模块整体编译成一个custom webview aar,将custom webview aar单独提供给三方开发者编译依赖,将custom webview aar和三方app最终编译在同一个apk中,能够最大限度的避免不同app使用的webview内核相互之间的冲突和污染。
62.其中,custom webview aar包括上下两大模块,下边的模块为custom webview aar模块,将整个chromium模块编译打包成一个独立的aar;上边的模块为使用webview接口的三方app模块。下边的custom webview aar模块将整个chromium模块编译打包成一个独立的aar,该aar作为custom webview接口层以custom.webkit.webview包名的形式对外提供给应用开发者。
63.而上边的custom webview aar模块是将custom webview aar直接编译至三方app中,不需要反射调用到webview chromuim内核,直接调用custom webview aar的glue桥接层,然后通过chromium的内部分层架构,依次通过awcontent层、content层、webkit glue层,最终调用到最核心的blink模块。
64.使将一个基于system webview构建的app快速改造成使用custom webview aar,即三方app改造使用custom webview aar,包括以下步骤:
65.将原有chromium中的system webview的相关包名更改为custom webview aar相关包名;
66.将layout文件中使用的system webview改为全称的custom webview aar包名;
67.添加对custom webview aar包的依赖,并重新编译。
68.本发明一较佳实施例提供了一种深度定制webview,对外提供独立webview aar的方法,生成custom webview aar具体包括以下步骤:
69.步骤100,移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar;
70.步骤200,修改chromium code,编译生成custom webview aar;
71.步骤300,基于custom webview aar接口编写demo,验证custom webview aar功能。
72.其中,步骤100,移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar,具体是将aosp fwk中frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,再修改依赖的包名为custom webview包名后(比如custom.webkit.webview),添加android_library gn模板,将其编译成custom webview jar。具体包括以下步骤:
73.步骤101,将aosp fwk层frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,并修改包名为custom webview包名,本实施例
中,本发明改为custom.webkit.xxx
[0074][0075]
步骤102,将原先aosp fwk层frameworks/base/core/java/android/webkit/目录下原先对webview apk的反射调用改为直接调用;由于原生webview接口层的code是通过反射调用到webview apk的实现的,现在在webview aar方案下,不再需要反射调用,需要将原先的反射调用改为直接调用。
[0076]
步骤103,编译android_library模板,编译custom webview jar,供后面编译custom webview aar依赖使用。编译android_library模板,编译custom webview jar,供后面编译custom webview aar依赖使用。编译方法如下:
[0077]
[0078][0079]
步骤200,修改chromium code,编译生成custom webview aar,具体是修改src/android_webview目录,将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖,本发明实施例中,是以custom webview包名custom.webkit.webview为例,将java file中的import android.wekkit.xxx的接口改为import custom.webkit.xxx,最后通过chromium内部gn构建系统的dist_aar模板,参照原生webview apk的gn编译链,将chromium内部的众多模块一起编译生成custom webview aar。
[0080]
具体包括以下步骤:
[0081]
步骤201,将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖;主要是将src/android_webview目录下的java code中原先对system webview的依赖改为对custom webview依赖(包括import包名,返回值包名,参数包名,本发明就是将原先的android.webkit.xxx改为了custom.webkit.xxx),大致如下:
[0082][0083]
步骤202,梳理webview gn编译依赖链,为后续的工作做准备;
[0084]
步骤203,通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar。在编写dist_aar模板编译custom webview aar时,需要去掉原先webview apk中androidmanifest.xml中冗余的字段,比如
[0085]
《activity android:name="org.chromium.android_webview.devui.mainactivity"》字段,《application android:extractnativelibs》字段等,否则custom webview aar在和三方app集成时编译会报错。
[0086]
同时由于官方src/build/config/android/rules.gni中提供的template("dist_aar")模板默认只支持打包如下几个资源
[0087]
#currently supports:
[0088]
#*androidmanifest.xml
[0089]
#*classes.jar
[0090]
#*jni/
[0091]
#*res/
[0092]
#*r.txt
[0093]
#*proguard.txt
[0094]
暂不支持打包如下几个资源,特别是assets资源
[0095]
#does not yet support:
[0096]
#*public.txt
[0097]
#*annotations.zip
[0098]
#*assets/
[0099]
[0100][0101]
我们默认生成的custom webview aar中是不包含assets资源的,所以我们需要编写额外的shell脚本,对生成的custom webview aar进行二次处理,主要工作为解压原先的aar,将assets资源copy到解压后的目录,然后重新压缩成custom webview aar,因为aar本质上也是一种压缩包。
[0102]
最后,通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar,具体在通过dist_aar模板生成aar时,通过resource_included_patterns,jar_excluded_patterns将特定的res和class排除掉,否则编译出的custom webview aar非常大,且当三方app也依赖android.support包时,编译会报错。
[0103]
本发明实施例提供的一种深度定制webview,对外提供独立webview aar的方法使用custom webview aar方案,将aar跟三方app最终编译在同一个apk中,对webview内核的修改只会影响当前app,从而三方开发者可以根据自己的需要自由定制webview内核,而无需担心对其它app的影响。不同app所集成使用的custom webview aar相互之间隔离,避免在使用时的相互冲突和污染。custom webview aar方案有独立的custom webview接口层和实现层,应用开发者可以自由修改定制custom webview aar接口和实现,且这种修改和定制,只对本app生效,对其它app不会造成任何的影响,从而可以满足应用对webview的多样化需求。
[0104]
custom webview aar的接口定义和使用方式跟system webview非常相似(仅仅是接口包名的不同),可以最大限度的复用之前的经验或改造之前基于system webview的应用。应用开发者可以基于自己原本的system webview集成开发经验,无缝迁移到custom webview aar的集成开发中。同时也能够将一个基于system webview构建的app快速改造成使用custom webview aar。
[0105]
另外需要说明的是,本发明实施例提供的一种深度定制webview,对外提供独立webview aar的方法修改内核后,会将修改后的内核整体编译成一个aar,对外提供修改后的内核的形式和载体是aar(aar(android archive)是android平台上的一种编译后的二进制归档文件格式,但本身不可以独立安装)。并且,本发明实施例提供一种深度定制webview,对外提供独立webview aar的方法使用场景是仅仅针对单个使用custom webview接口的app,此内核归此app独享,对外提供的aar形式的内核载体,最终会编译到使用custom webview接口app里面去,多个app编译依赖的aar内核相互之间相互隔离,互不影响。并且,本实施例中的接口层和实现层没有分离,编译在同一个aar中,最终是随着aar一
起编译到最终的三方app中。
[0106]
本发明又一较佳实施例提供了一种深度定制webview,对外提供独立webview aar的装置,装置在原生webview apk原本通道的基础上,将原生webview apk中的众多模块整体编译成一个custom webview aar,将custom webview aar单独提供给三方开发者编译依赖,将custom webview aar和三方app最终编译在同一个apk中,能够最大限度的避免不同app使用的webview内核相互之间的冲突和污染。
[0107]
进一步地,custom webview aar包括上下两大模块,下边的模块为custom webview aar模块,将整个chromium模块编译打包成一个独立的aar;上边的模块为使用webview接口的三方app模块。
[0108]
进一步地,custom webview aar直接编译至三方app中,直接调用custom webview aar的glue桥接层,然后通过chromium的内部分层架构,依次通过awcontent层、content层、webkit glue层,最终调用到最核心的blink模块。
[0109]
进一步地,使将一个基于system webview构建的app快速改造成使用custom webview aar,包括以下模块:
[0110]
第一更名模块,用于将原有chromium中的system webview的相关包名更改为custom webview aar相关包名;
[0111]
第二更名模块,用于将layout文件中使用的system webview改为全称的custom webview aar包名;
[0112]
添加模块,用于添加对custom webview aar包的依赖,并重新编译。
[0113]
进一步地,具体包括以下模块:
[0114]
移植模块,用于移植aosp fwk webview sdk code,添加android_library模板编译成单独的jar;
[0115]
编译模块,用于修改chromium code,编译生成custom webview aar;
[0116]
验证模块,用于基于custom webview aar接口编写demo,验证custom webview aar功能。
[0117]
进一步地,移植模块,具体是将aosp fwk中frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,再修改依赖的包名为custom webview包名后(比如custom.webkit.webview),添加android_library gn模板,将其编译成custom webview jar。
[0118]
进一步地,移植模块具体包括以下单元:
[0119]
移动单元,用于将aosp fwk层frameworks/base/core/java/android/webkit/目录下的java文件移到chromium代码仓的预选目录,并修改包名为custom webview包名;
[0120]
调用修改单元,用于将原先aosp fwk层frameworks/base/core/java/android/webkit/目录下原先对webview apk的反射调用改为直接调用;
[0121]
编译单元,用于编译android_library模板,编译custom webview jar,供后面编译custom webview aar依赖使用。
[0122]
进一步地,编译模块,具体是修改src/android_webview目录,将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖,最后通过chromium内部gn构建系统的dist_aar模板,参照原生webview apk的gn编译链,将
chromium内部的众多模块一起编译生成custom webview aar。
[0123]
进一步地,编译模块具体包括以下单元:
[0124]
修改单元,用于将src/android_webview目录下原先对system webview接口的依赖改成对custom webview接口的依赖;
[0125]
梳理单元,用于梳理webview gn编译依赖链,为后续的工作做准备;
[0126]
打包单元,通过dist_aar模板,将梳理得到的webview gn编译依赖链所涉及的模块全部编译打包成aar。
[0127]
进一步地,打包单元具体在通过dist_aar模板生成aar时,通过resource_included_patterns,jar_excluded_patterns将特定的res和class排除掉,否则编译出的custom webview aar非常大,且当三方app也依赖android.support包时,编译会报错。
[0128]
上述实施例提供的一种深度定制webview,对外提供独立webview aar的装置是为实现一种深度定制webview,对外提供独立webview aar的方法,其实现方式同上,因此,此处将不再赘述。
[0129]
本实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如上述中任一项的方法。本实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现上述任一项的方法。
[0130]
该实施例的计算机设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个数据同步方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
[0131]
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述计算机设备中的执行过程。
[0132]
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。
[0133]
所述处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0134]
所述存储器可以是所述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。所述存储器也可以是所述计算机设备的外部存储设备,例如所述计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器还可以既包括所述计算机设备的内部存储单元也包括外部存储设备。所述存储器用于存储所述计算机程序以及所述计算机设备所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
[0135]
在本发明的另一较佳实施方式中,本发明提供了一种存储有计算机程序的计算机可读存储介质,计算机程序使计算机执行时实现如上述中任一项的一种深度定制webview,对外提供独立webview aar的方法。
[0136]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献