CN110597564A - 一种安装包构建和业务组件加载方法、装置、终端设备 - Google Patents

一种安装包构建和业务组件加载方法、装置、终端设备 Download PDF

Info

Publication number
CN110597564A
CN110597564A CN201810513532.3A CN201810513532A CN110597564A CN 110597564 A CN110597564 A CN 110597564A CN 201810513532 A CN201810513532 A CN 201810513532A CN 110597564 A CN110597564 A CN 110597564A
Authority
CN
China
Prior art keywords
sub
component
components
business
objects
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810513532.3A
Other languages
English (en)
Inventor
俞静飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810513532.3A priority Critical patent/CN110597564A/zh
Publication of CN110597564A publication Critical patent/CN110597564A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种安装包构建和业务组件加载方法、装置、终端设备,其中,该安装包构建方法包括:获取业务组件编译文件;确定业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,所述对象包括与所述业务相关的代码和资源;根据所述依赖关系将所述业务组件拆分为多个子组件,将该业务组件拆分得到的多个子组件打包,生成安装包。利用本申请实施例提供的技术方案,可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。

Description

一种安装包构建和业务组件加载方法、装置、终端设备
技术领域
本申请属于计算机技术领域,尤其涉及一种安装包构建方法、业务组件加载方法、装置、终端设备和存储介质。
背景技术
开放服务网关协议(Open Services Gateway Initiative,OSGI)是一种面向JAVA的动态模型系统,OSGI服务平台由两部分组成:OSGI框架和OSGI标准服务,其中,框架是实现并提供OSGI功能的运行环境,而标准服务定义了很多用于执行常见任务的可重用接口。OSGI中定义了OSGI模块的概念,并将之称为一个业务组件(bundle),在OSGI框架中bundle是最小单位。
目前,对于大型应用(APP),由于其业务功能繁琐复杂,通常会模块化构建应用的安装包,例如采用OSGI技术来模块化构建应用的安装包,以电商应用为例,基于OSGI技术模块化构建应用的安装包可以包括:购物车业务组件、搜索业务组件、支付业务组件、直播业务组件、基础服务业务组件等等,各个业务组件之间解耦,在运行环境中,可以以业务组件为最小单位进行独立安装,或独立动态加载,独立更新等操作。
通常,在安装包的各个业务组件中部分业务组件的活跃度较低(例如,电商应用中的直播业务组件,音乐应用中的支付业务组件等),所以终端在初始安装应用的安装包时可以暂时不安装部分业务组件。在终端运行应用过程中,当用户操作涉及到未安装业务组件时再安装该业务组件。
应该注意,上面对技术背景的介绍只是为了方便对本发明的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本发明的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
发明人发现,如果一个业务组件的业务功能比较复杂,组件体积过大,会在安装、加载或更新时花费比较多的时间,这会影响应用的响应效率和用户体验。
本申请实施例提供一种安装包构建方法、业务组件加载方法、装置和存储介质,可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
根据本发明实施例的第一方面,提供一种安装包构建方法,其中,所述方法包括:
获取业务组件编译文件;
确定所述业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,所述对象包括与所述业务相关的代码和资源;
根据所述依赖关系将所述业务组件拆分为多个子组件;
将所述业务组件拆分得到的多个子组件打包,生成安装包。
根据本发明实施例的第二方面,提供一种如第一方面所述的方法,其中,所述多个对象包括仅被一个界面依赖的独立对象和被至少两个界面依赖的公共对象;
其中,确定业务组件内多个界面与多个对象的依赖关系包括:
确定所述界面依赖的独立对象,或者确定所述界面依赖的独立对象和公共对象,得到所述依赖关系。
根据本发明实施例的第三方面,提供一种如第二方面所述的方法,其中,根据所述依赖关系将所述业务组件拆分为多个子组件包括:
根据所述依赖关系将所述业务组件拆分为公共子组件和独立子组件,其中,至少一个独立子组件包括一个界面依赖的独立对象,至少一个公共子组件包括至少两个界面依赖的公共对象。
根据本发明实施例的第四方面,提供一种如第三方面所述的方法,其中,所述公共子组件还可以包括一个界面依赖的独立对象。
根据本发明实施例的第五方面,提供一种如第二方面所述的方法,其中,所述多个子组件中至少两个子组件包括的独立对象不同。
根据本发明实施例的第六方面,提供一种如第二方面所述的方法,其中,不同的界面依赖的独立对象不同。
根据本发明实施例的第七方面,提供一种如第一方面所述的方法,其中,所述多个子组件具有相同的打包标识(packageID)。
根据本发明实施例的第八方面,提供一种如第一方面所述的方法,其中,所述多个子组件中至少两个子组件的序号标识(entryID)不同。
根据本发明实施例的第九方面,提供一种如第一方面所述的方法,其中,所述方法还包括:
生成组件集合,所述组件集合包括所述多个子组件以及所述子组件的相关信息。
根据本发明实施例的第十方面,提供一种如第九方面所述的方法,其中,所述相关信息包括访问地址信息,子组件大小信息和/或校验信息。
根据本发明实施例的第十一方面,提供一种业务组件加载方法,其中,所述方法包括:
根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,所述至少一个子组件是根据所述业务组件内的对象与界面的依赖关系拆分所述业务组件确定的。
根据本发明实施例的第十二方面,提供一种如第十一方面所述的方法,其中,所述方法还包括:
生成组件集合,所述组件集合包括所述至少一个子组件以及所述子组件的相关信息。
根据本发明实施例的第十三方面,提供一种如第十二方面所述的方法,其中,所述方法还包括:
根据所述组件集合确定要加载的所述至少一个子组件的相关信息;
并且,根据所述相关信息加载所述至少一个子组件。
根据本发明实施例的第十四方面,提供一种如第十二方面所述的方法,其中,所述相关信息包括访问地址信息,子组件大小信息和/或校验信息。
根据本发明实施例的第十五方面,提供一种如第十一方面所述的方法,其中,所述触发指令是界面交互,所述至少一个子组件中的一个子组件包含所述界面依赖的对象。
根据本发明实施例的第十六方面,提供一种如第十一方面所述的方法,其中,所述方法还包括:
预先设定触发指令和子组件的对应关系,并且根据所述对应关系和所述触发指令确定所述要加载的所述至少一个子组件。
根据本发明实施例的第十七方面,提供一种安装包构建装置,其中,所述装置包括:
获取模块,其用于获取业务组件编译文件;
确定模块,其用于确定所述业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,所述对象包括与所述业务相关的代码和资源;
拆分模块,其用于根据所述依赖关系将所述业务组件拆分为多个子组件;
构建模块,其用于将所述业务组件拆分得到的多个子组件打包,生成安装包。
根据本发明实施例的第十八方面,提供一种业务组件加载装置,其中,所述装置包括:
加载模块,其用于根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,所述至少一个子组件是根据所述业务组件内的对象与界面的依赖关系拆分所述业务组件确定的。
根据本发明实施例的第十九方面,提供一种终端设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现前述第一方面至第十方面中任一项所述的方法。
根据本发明实施例的第二十方面,提供一种终端设备,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现前述第十一方面至第十六方面中任一项所述的方法。
本申请的有益效果在于,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,并且可以以该子组件为单位进行动态加载,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
参照后文的说明和附图,详细公开了本发明的特定实施方式,指明了本发明的原理可以被采用的方式。应该理解,本发明的实施方式在范围上并不因而受到限制。在所附权利要求的精神和条款的范围内,本发明的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例1中安装包构建方法流程图;
图2是本申请实施例1中安装包构建示意图;
图3是本申请实施例2中业务组件加载方法流程图;
图4是本申请实施例2中业务组件加载示意图;
图5是本申请实施例3中安装包构建装置构成示意图;
图6是本申请实施例3中终端设备构成示意图;
图7是本申请实施例4中业务组件加载装置示意图;
图8是本申请实施例4中终端设备构成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
在本申请实施例中,术语“第一”、“第二”等用于对不同元素从称谓上进行区分,但并不表示这些元素的空间排列或时间顺序等,这些元素不应被这些术语所限制。术语“和/或”包括相关联列出的术语的一种或多个中的任何一个和所有组合。术语“包含”、“包括”、“具有”等是指所陈述的特征、元素、元件或组件的存在,但并不排除存在或添加一个或多个其他特征、元素、元件或组件。
在本申请实施例中,单数形式“一”、“该”等包括复数形式,可以广义地理解为“一种”或“一类”而并不是限定为“一个”的含义;此外术语“所述”应理解为既包括单数形式也包括复数形式,除非上下文另外明确指出。此外术语“根据”应理解为“至少部分根据……”,术语“基于”应理解为“至少部分基于……”,除非上下文另外明确指出。
在本申请实施例中,可互换术语“电子设备”和“终端设备”包括所有诸如移动电话、寻呼机、通信装置、电子记事簿、个人数字助理(PDA)、智能电话、便携式通信装置,平板电脑,个人计算机,服务器等设备。
本申请实施例中涉及Atlas,Activity等技术术语,为便于理解,以下简单说明。
Atlas是近年来衍生出来的一个运行于Android系统上的容器化框架,主要用于在运行环境中按需的完成各个bundle的安装、加载代码和资源,Atlas框架中bundle与OSGI的bundle含义类似,但与bundle有关的具体代码规范有所区别。
在APP中,一个Activity通常指一个用户可操作界面,用户可使用该界面进行交互操作,在一个Activity上可以显示一些控件,该界面可以充满屏幕也可以小于屏幕或浮动在其他界面之上,一个应用程序通常由多个Activity组成,一般会指定应用中的某个Activity为“主”Activity,即首次启动应用时呈现给用户的Activity,而且一个Activity可启动另一个Activity,以便执行不同的操作。每次新Activity启动时,前一Activity便会停止。
以下结合附图对本申请实施例进行说明。
实施例1
本申请实施例1提供一种安装包构建方法,图1是该方法流程图,如图1所示,该方法包括:
步骤101,获取业务组件编译文件;
步骤102,确定该业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,该对象包括与该业务相关的代码和资源;
步骤103,根据该依赖关系将该业务组件拆分为多个子组件;
步骤104,将该业务组件拆分得到的多个子组件打包,生成安装包。
通过本实施例,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。在本实施例中,业务组件是一个应用中具有业务独立性的业务模块,或者具有一定功能独立性的中间件,以电商APP为例,其可以被拆分为多个业务bundle,例如,评价bundle、详情bundle、支付bundle、首页bundle、下单bundle、直播bundle等等,各个bundle之间可以进行功能的调用,每个bundle有唯一的资源段(package ID)。其中bundle分为本地bundle和远程bundle,其中,本地bundle是指安装包构建时打到安装包内部的bundle,远程bundle是指安装包构建时未打到安装包内,但放在云端服务器上的bundle。
在本实施例中,在步骤101中,获取业务组件编译文件;该业务组件编译文件是构建安装包过程中编译的中间产物,其包括多个对象,每个对象对应一个业务组件的子功能,每个对象包括实现该子功能相关的代码、资源,其中,代码是编译好的类(class)文件,资源是指一些帮助文档、图标、视频、音频等,以直播bundle为例,其包括直播对象、打赏对象、美颜对象等等,例如,在美颜对象中包括实现美颜功能的代码以及资源。
在本实施例中,该编译文件可以是awb(android wireless bundle)文件,awb是atlas架构下构建最终安装包(apk)前的中间产物,每个awb最终会打成一个bundle,其具体获取awb的方法可以参考现有技术,例如,该awb的获取方法与安卓库项目的文件aar的获取方法类似,不同之处在于,awb有与之对应的打包标识(packageID)。
在本实施例中,例如,针对以下bundleA,bundleB,bundleC,在步骤101中获取的编译文件为bundleA的awb,bundleB的awb,bundleC的awb。
在本实施例中,在步骤102中,确定bundle编译文件内多个对象与多个界面(Activity)的依赖关系。
在本实施例中,每个业务组件对应多个Activity,以实现与用户的交互,以详情bundle为例,其对应了店铺Activity、商品Activity、分享Activity等,分别用于向用户展示店铺详情、商品详情以及分享目标详情等等,上述Activity与每个业务组件中包含的对象存在依赖关系,在本实施例中,存在依赖关系是指Activity需要调用对象中的代码或者资源,或者对象中的代码或资源作为参数或结果返回给Activity,以下具体说明。
在本实施例中,每个bundle编译文件包含的多个对象可以被划分为仅被一个界面依赖的独立对象和被至少两个界面依赖的公共对象;即在一个对象中的代码或资源仅被一个Activity调用,或者作为参数或结果仅返回给一个Activity时,该对象为独立对象;其中,不同的界面依赖的独立对象不同;在一个对象中的代码或资源被至少两个Activity调用,或者作为参数或结果返回给至少两个Activity时,该对象为公共对象,以详情bundle为例,其对应了店铺Activity、商品Activity,该详情bundle包括以下对象:店铺详情对象、商品详情对象、查看详情对象、滑动操作对象等,由于查看详情对象、滑动操作对象被店铺Activity和商品Activity依赖,因此,查看详情对象、滑动操作对象都属于公共对象,店铺详情对象、商品详情对象分别被店铺Activity、商品Activity依赖,因此店铺Activity、商品Activity属于独立对象。
在步骤102中,可以确定该界面依赖的独立对象,或者确定该界面依赖的独立对象和公共对象,得到该依赖关系。
为了便于理解,以下结合表1举例说明如何确定该依赖关系。
表1Activity与对象的依赖关系
如表1所示,针对Activity1,其依赖的独立对象是对象1,其没有依赖公共对象,针对Activity2,其依赖的独立对象是对象2,3,其依赖的公共对象是4,针对Activity3,其依赖的独立对象是对象6,其依赖的公共对象是4,5;针对Activity4,其依赖的独立对象是对象7,其依赖的公共对象是4,5,由此,得到了Activity1-Activity4以及对象1-6之间的依赖关系。
在本实施例中,为了便于后续的拆分,可以将多个Activity和多个对象用标识进行区分,但本实施例并不以此作为限制,也可以通过字符串等其他方式区分。
在步骤103中,可以根据该依赖关系将该业务组件拆分为公共子组件和独立子组件,其中,至少一个(可以为每个)独立子组件包括一个界面依赖的独立对象,至少一个(可以为每个)公共子组件包括至少两个界面依赖的公共对象。
在本实施例中,在存在多个公共对象时,可以将该多个公共对象划分至不同的公共子组件,也可以将该公共对象划分至一个公共子组件,或者一个公共子组件还可以包括一个界面依赖的独立对象,以下结合表1进行说明。
在一个实施方式中,可以将业务组件拆分为与Activity数量一致的子组件,即一个Activity对应一个子组件,其中,每个子组件包括一个Activity依赖的独立对象,不同的子组件包括的独立对象不同,另外,可选的,子组件还可以包括公共对象,在子组件仅包括独立对象时,该子组件为独立子组件,在子组件包括独立对象和公共对象时,该子组件为公共子组件。
如表1所示,可以将该bundle拆分为4个sub-bundle,其中sub-bundle1包括Activity1依赖的独立对象1,sub-bundle2包括Activity2依赖的独立对象2,3,sub-bundle3包括Activity3依赖的独立对象6,sub-bundle4包括Activity4依赖的独立对象7,另外,还可以将公共对象4,5一起划分至sub-bundle1~4中的任意一个或几个中,也可以将公共对象4,5分别划分至sub-bundle1~4中的任意两个中,例如将对象4,5划分至sub-bundle1中,sub-bundle1为公共子组件,sub-bundle2~4为独立子组件;其中,为了便于各个开发人员的理解,可以将所有的公共对象都默认划分至第一个Activity对应的子组件中,但本实施例并不以此作为限制。
在一个实施方式中,可以将业务组件拆分为比Activity数量多的子组件,即一个Activity对应一个独立子组件,每个独立子组件包括一个Activity依赖的独立对象,不同的独立子组件包括的独立对象不同,另外,将各个Activity共同依赖的公共对象单独组成一个或多个公共子组件。
如表1所示,可以将该bundle拆分为5个sub-bundle,其中sub-bundle1包括Activity1依赖的独立对象1,sub-bundle2包括Activity2依赖的独立对象2,3,sub-bundle3包括Activity3依赖的独立对象6,sub-bundle4包括Activity4依赖的独立对象7,sub-bundle5包括公共对象4,5,sub-bundle5为公共子组件,sub-bundle1~4为独立子组件,以上仅为示例,本实施例并不以此作为限制,例如也可以拆分成6个子组件,与前例不同之处在于,sub-bundle5包括Activity2~4依赖的公共对象4,sub-bundle6包括Activity3~4依赖的公共对象5。
在本实施例中,为了方便调用,可以拆分后的多个子组件用标识进行区分,但本实施例并不以此作为限制,也可以通过字符串等其他方式区分,其中,在使用标识进行区分时,每个子组件具有独立的序号标识(entryID),即至少两个子组件的序号标识不同,但多个子组件具有相同的packageID,其该packageID为未被拆分的原bundle的packageID(即与编译文件awb对应的packageID相同),该packageID在打包时由安卓打包工具(AndroidAsset Packaging Tool,AAPT)指定。
例如,一个bundle的资源段为0x7f00000,其中7f为该bundle的packageID,该bundle拆分后的子组件的序号标识可以利用7f后的两位表示,例如,针对sub-bundle1,其可以表示为0x7f01000,针对sub-bundle2,可以表示为0x7f10000,即sub-bundle1和2共享相同的packageID7f,但各自的序号标识不同,分别为01,10,以上仅为示例说明,但本实施例并不以此作为限制,也可以使用其他方式表示该序号标识。
在本实施例中,在拆分得到子组件后,在步骤104中,将该业务组件拆分得到的多个子组件打包,生成安装包,该打包过程可以参考现有技术,例如,将每个子组件打包为.so文件的形式存储于安装包(apk)的lib/armeabi中,加壳签名后,生成最后的安装包(apk)。
图2是安装包构建流程图,如图2所示,获取bundle A的awb,将bundle拆分为独立子组件以及公共子组件,其具体拆分方法可以参考步骤102~步骤103,此处不再赘述,针对每个子组件由AAPT使用不同的entryID分别打包生成.so文件,每个.so文件对应一个子组件,每个.so文件存储于apk的lib/armeabi中,加入外壳dex并加签名后,得到最终的安装包apk,具体可以参考现有技术,以上仅以bundleA为例说明,在实际构建安装包过程中,在有多个bundle时,针对每一个bundle的编译文件awb都作与bundleA的awb相同的处理,将每个bundle拆分的子组件都打包为.so文件的形式存储于安装包(apk)的lib/armeabi中,加壳签名后,生成最后的安装包(apk)。
在本实施例中,该方法还可以包括(未图示):生成组件集合,该组件集合包括该多个子组件以及该子组件的相关信息。
在本实施例中,拆分后的子组件隶属于同一个组件集合(BundleGroup),该BundleGroup用于存放各个子组件以及组件清单(list),该清单用于记录每个子组件的相关信息:包括访问地址信息(url),子组件大小信息和/或校验信息等。
关于该组件集合的具体实施方式请详见实施例2,此处不再赘述。
通过本实施例,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
实施例2
本发明实施例2提供一种业务组件加载方法,图3是该方法流程图,如图3所示,该方法包括:
步骤301,根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,该至少一个子组件是根据该业务组件内的对象与界面的依赖关系拆分该业务组件确定的。
在现有技术中,在执行加载操作时,是以一个bundle为最小单位,如果bundle体积过大,会在加载、以及后续安装、更新等期间花费较多的时间,影响响应效率和用户体验,在本实施例中,以拆分后的子组件sub-bundle为最小单位进行加载,将bundle进一步细粒度化,使得原先耗时的操作分散(平摊)到各个子组件上,提高应用的响应效率和用户体验。
在本实施例中,为了简化说明,可以将“加载”广义的解释为一个子组件的生命周期中的每个操作节点,即本实施例中的“加载”可以理解为子组件的下载、解析、运行等,以下不再进行区分说明。
在本实施例中,该子组件的含义以及具体拆分方法请详见实施例1,重复之处不再赘述。
在本实施例中,该触发指令可以是Activity交互,也可以是其他约定的触发操作,以下示例说明。
例如,用户在浏览商品时,希望进一步观看该商品的视频介绍,那么点击界面上视频播放的交互即可以看作为触发指令,或者,用户在进行直播时,希望对当前显示的界面进一步美颜,那么点击界面上的美颜控件的交互可以看作为触发指令,或者也可以将触发指令设置为启动APP时,或更新APP时,其可以根据需要预先设置,本实施例并不以此作为限制。
在本实施例中,该方法还可以包括:
步骤300(可选),预先设定触发指令和子组件的对应关系,并且根据该对应关系和该触发指令确定该要加载的该至少一个子组件。
在本实施例中,可以预先确定触发加载各个子组件的触发指令,例如,针对直播bundle,将其拆分为直播子组件、打赏子组件以及美颜子组件,例如点击界面上的美颜控件的交互可以看作为加载美颜子组件的触发指令;针对详情bundle,将其拆分为包括商品视频详情子组件、商品图片详情子组件,例如点击商品界面上视频播放的交互即可以看作为加载视频详情子组件触发指令,此处不再一一举例。
在本实施例中,在步骤300中可以根据预先设定的该对应关系,以及是否产生了触发指令确定要加载的至少一个子组件。
在本实施例中,在步骤300前,该方法还可以包括:(未图示)生成组件集合,该组件集合包括该至少一个子组件以及该子组件的相关信息,其中,该相关信息包括访问地址信息,子组件大小信息和/或校验信息。
在本实施例中,该组件集合还可以包括各个子组件之间的依赖关系,各个子组件之间的依赖关系可以根据实施例1中步骤101中的界面和对象的依赖关系确定,即一个子组件对应的界面依赖的公共对象属于另一子组件时,确定该一个子组件依赖于该另一个子组件;例如,针对子组件1,其包含Activity1依赖的独立对象,以及Activity1和Activity2依赖的公共对象,针对子组件2,其包含Activity2对应的独立对象,则由于子组件2中包含的Activity2依赖子组件1中的公共对象,即确定子组件2依赖于子组件1。
例如,针对一个BundleGroup,其包含拆分后的3个子组件sub-bundle1,sub-bundle2,sub-bundle3,还包括组件清单(list),该清单用于记录sub-bundle1,sub-bundle2,sub-bundle3的访问地址信息,子组件大小信息和/或校验信息,另外还可以用于记录sub-bundle1,sub-bundle2,sub-bundle3之间的依赖关系。
在步骤300中,根据该对应关系和该触发指令确定该要加载的子组件,还可以结合该组件集合确定该子组件依赖的其他子组件,以及各个子组件的相关信息,在步骤301中,根据该相关信息加载上述至少一个子组件。
例如,点击商品界面上视频播放的交互后,根据预先确定的对应关系确定要加载的子组件是视频详情子组件,可以根据该子组件的序号标识(entryID)在组件集合中查找视频详情组件的url,大小以及校验信息,还可以根据子组件之间的依赖关系,确定视频详情子组件是否依赖于其他子组件,在确定依赖其他子组件时,在该组件集合中查找该其他子组件的url,大小以及校验信息,根据上述信息加载视频详情子组件,或者视频详情子组件以及其依赖的其他子组件。
在本实施例中,一个BundleGroup中的各个子组件共享相同的BundleClassLoader,不同的BundleGroup的BundleClassLoader不同,该BundleClassLoader负责该bundle的类(代码)加载,该BundleClassLoader的具体实施方式可以参考OSGI规范,图4是该加载过程示意图,如图4所示,一个BundleGroup通过BundleClassLoader可以加载如实施例1中图2所示的各个子组件生成的so文件。在进行更新时,将一个BundleGroup作为一个整体进行更新。
以下以远程bundle为例,说明该业务组件加载方法:在终端设备上运行应用后,一个业务组件内的Activity被触发(上述触发指令),由于远程bundle未安装至本地,因此,会在应用上提示是否需要记载该bundle,在现有技术中,在选择加载时,将该bundle作为一个整体加载至本地,但在本实施例中,可以仅加载包含该Activity依赖对象的子组件,因此,可以缩短加载时间,在良好的网络情况下用户设置无需感知加载的过程,使得访问远程bundle与本地bundle感知区别减少,为bundle即用即得提供了更有利的条件。
通过本实施例,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,并且可以以该子组件为单位进行动态加载,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
实施例3
本发明实施例3提供一种安装包构建装置,由于该装置解决问题的原理与实施例1中的方法类似,因此其具体的实施可以参考实施例1中的方法的实施,内容相同之处,不再重复说明。图5是该装置示意图,如图5所示,该装置包括:
获取模块501,其用于获取业务组件编译文件;
确定模块502,其用于确定该业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,该对象包括与该业务相关的代码和资源;
拆分模块503,其用于根据该依赖关系将该业务组件拆分为多个子组件。
构建模块504,其用于将该业务组件拆分得到的多个子组件打包,生成安装包。
在本实施例中,该获取模块501、确定模块502、拆分模块503、构建模块504的具体实施方式可以参考实施例1步骤101-104,重复之处不再赘述。
在本实施例中,该装置还可以包括(未图示):
生成模块,其用于生成组件集合,该组件集合包括该多个子组件以及该子组件的相关信息,其具体实施方式可以参考实施例1,2,此处不再赘述。
本实施例3还提供一种终端设备,图6是该设备构成示意图,如图6所示,其包括中央处理器601和存储器602;该存储器602耦合到该中央处理器601。该图是示例性的;还可以使用其它类型的结构,来补充或代替该结构,以实现电信功能或其它功能。
在本实施例中,该中央处理器601可以被配置为执行:获取业务组件编译文件;确定该业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,该对象包括与该业务相关的代码和资源;根据该依赖关系将该业务组件拆分为多个子组件,将该业务组件拆分得到的多个子组件打包,生成安装包。
在本实施例中,该中央处理器601还可以被配置为执行:确定该界面依赖的独立对象,或者确定该界面依赖的独立对象和公共对象,得到该依赖关系。
在本实施例中,该中央处理器601还可以被配置为执行:根据该依赖关系将该业务组件拆分为公共子组件和独立子组件,其中,至少一个独立子组件包括一个界面依赖的独立对象,至少一个公共子组件包括至少两个界面依赖的公共对象。
在本实施例中,该中央处理器601还可以被配置为执行:生成组件集合,该组件集合包括该多个子组件以及该子组件的相关信息。
在本实施例中,该中央处理器601执行的具体实施方式可以参考实施例1,此处不再赘述。
如图6所示,该中央处理器601有时也称为控制器或操作控件,可以包括微处理器或其它处理器装置和/或逻辑装置,该中央处理器601接收输入并控制该装置600的各个部件的操作。
在本实施例中,该存储器602,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。并且该中央处理器601可执行该存储器602存储的该程序,以实现信息存储或处理等。其它部件的功能与现有类似,此处不再赘述。该装置600的各部件可以通过专用硬件、固件、软件或其结合来实现,而不偏离本发明的范围。
在本实施例中,还提供一种终端设备(未图示),其包含该装置500,或者装置500可以是与终端设备包含的中央处理器连接的芯片,通过其包含的中央处理器的控制来实现该装置500的功能,另外终端设备还可以包括输入单元、显示器、电源、通信模块(未图示)等,其结构也可以参考现有技术,本实施例并不以此作为限制。
通过本实施例,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
实施例4
本发明实施例4提供一种业务组件加载装置,由于该装置解决问题的原理与实施例2中的方法类似,因此其具体的实施可以参考实施例2中的方法的实施,内容相同之处,不再重复说明。图7是该装置示意图,如图7所示,该装置包括:
加载模块701,其用于根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,该至少一个子组件是根据该业务组件内的对象与界面的依赖关系拆分该业务组件确定的。
在本实施例中,该装置还可以包括:
设定模块702,其用于预先设定触发指令和子组件的对应关系,并且根据该对应关系和该触发指令确定该要加载的该至少一个子组件。
在本实施例中,该装置还可以包括(未图示):
生成模块,其用于生成组件集合,该组件集合包括该多个子组件以及该子组件的相关信息,该设定模块702还可以根据该组件集合确定要加载的该至少一个子组件的相关信息;并且,加载模块701还可以根据该相关信息加载该至少一个子组件。
在本实施例中,加载模块701,设定模块702,生成模块的具体实施方式可以参考实施例2,此处不再赘述。
本实施例4还提供一种终端设备,图8是该设备构成示意图,如图8所示,其包括中央处理器801和存储器802;该存储器802耦合到该中央处理器801。该图是示例性的;还可以使用其它类型的结构,来补充或代替该结构,以实现电信功能或其它功能。
在本实施例中,该中央处理器801可以被配置为执行:根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,该至少一个子组件是根据该业务组件内的对象与界面的依赖关系拆分该业务组件确定的。
在本实施例中,该中央处理器801还可以被配置为执行:生成组件集合,该组件集合包括该至少一个子组件以及该子组件的相关信息。
在本实施例中,该中央处理器801还可以被配置为执行:根据该组件集合确定要加载的该至少一个子组件的相关信息;并且,根据该相关信息加载该至少一个子组件。
在本实施例中,该中央处理器801还可以被配置为执行:预先设定触发指令和子组件的对应关系,并且根据该对应关系和该触发指令确定该要加载的该至少一个子组件。
在本实施例中,该中央处理器801执行的具体实施方式可以参考实施例2,此处不再赘述。
如图8所示,该中央处理器801有时也称为控制器或操作控件,可以包括微处理器或其它处理器装置和/或逻辑装置,该中央处理器801接收输入并控制该装置800的各个部件的操作。
在本实施例中,该存储器802,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。并且该中央处理器801可执行该存储器802存储的该程序,以实现信息存储或处理等。其它部件的功能与现有类似,此处不再赘述。该装置800的各部件可以通过专用硬件、固件、软件或其结合来实现,而不偏离本发明的范围。
在本实施例中,还提供一种终端设备(未图示),其包含该装置700,或者装置700可以是与终端设备包含的中央处理器连接的芯片,通过其包含的中央处理器的控制来实现该装置700的功能,另外终端设备还可以包括输入单元、显示器、电源、通信模块(未图示)等,其结构也可以参考现有技术,本实施例并不以此作为限制。
通过本实施例,根据业务组件内多个对象与多个界面(Activity)的依赖关系将业务组件拆分为多个子组件,并且可以以该子组件为单位进行动态加载,由此可以将业务组件进一步细粒度化为多个子组件,从而将业务组件的加载时间分散到各个子组件上,提高应用的响应效率和用户体验。
本发明实施例还提供一种计算机可读程序,其中当在安装包构建装置中执行该程序时,该程序使得计算机在该安装包构建装置中执行如上面实施例1中的安装包构建方法。
本发明实施例还提供一种计算机可读程序,其中当在业务组件加载装置中执行该程序时,该程序使得计算机在该业务组件加载装置中执行如上面实施例2中的业务组件加载方法。
上述程序可以是能运行于终端设备中的软件。例如:手机淘宝、支付宝或者浏览器等应用软件。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被执行时实现如上面实施例1中的安装包构建方法。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被执行时实现如上面实施例2中的业务组件加载方法。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的装置或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,也可以将实现某功能的模块由多个子模块或子单元组合实现。
本申请中所述的方法、装置或模块可以以计算机可读程序代码方式实现控制器按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请所述装置中的部分模块可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的硬件的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,也可以通过数据迁移的实施过程中体现出来。该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请的全部或者部分可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、移动通信终端、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。

Claims (20)

1.一种安装包构建方法,其中,所述方法包括:
获取业务组件编译文件;
确定所述业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,所述对象包括与所述业务相关的代码和资源;
根据所述依赖关系将所述业务组件拆分为多个子组件;
将所述业务组件拆分得到的多个子组件打包,生成安装包。
2.根据权利要求1所述的方法,其中,所述多个对象包括仅被一个界面依赖的独立对象和被至少两个界面依赖的公共对象;
其中,确定业务组件内多个界面与多个对象的依赖关系包括:
确定所述界面依赖的独立对象,或者确定所述界面依赖的独立对象和公共对象,得到所述依赖关系。
3.根据权利要求2所述的方法,其中,根据所述依赖关系将所述业务组件拆分为多个子组件包括:
根据所述依赖关系将所述业务组件拆分为公共子组件和独立子组件,其中,至少一个独立子组件包括一个界面依赖的独立对象,至少一个公共子组件包括至少两个界面依赖的公共对象。
4.根据权利要求3所述的方法,其中,所述公共子组件还可以包括一个界面依赖的独立对象。
5.根据权利要求2所述的方法,其中,所述多个子组件中至少两个子组件包括的独立对象不同。
6.根据权利要求2所述的方法,其中,不同的界面依赖的独立对象不同。
7.根据权利要求1所述的方法,其中,所述多个子组件具有相同的打包标识(packageID)。
8.根据权利要求1所述的方法,其中,所述多个子组件中至少两个子组件的序号标识(entryID)不同。
9.根据权利要求1所述的方法,其中,所述方法还包括:
生成组件集合,所述组件集合包括所述多个子组件以及所述子组件的相关信息。
10.根据权利要求9所述的方法,其中,所述相关信息包括访问地址信息,子组件大小信息和/或校验信息。
11.一种业务组件加载方法,其中,所述方法包括:
根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,所述至少一个子组件是根据所述业务组件内的对象与界面的依赖关系拆分所述业务组件确定的。
12.根据权利要求11所述的方法,其中,所述方法还包括:
生成组件集合,所述组件集合包括所述至少一个子组件以及所述子组件的相关信息。
13.根据权利要求12所述的方法,其中,所述方法还包括:
根据所述组件集合确定要加载的所述至少一个子组件的相关信息;
并且,根据所述相关信息加载所述至少一个子组件。
14.根据权利要求12所述的方法,其中,所述相关信息包括访问地址信息,子组件大小信息和/或校验信息。
15.根据权利要求11所述的方法,其中,所述触发指令是界面交互,所述至少一个子组件中的一个子组件包含所述界面依赖的对象。
16.根据权利要求11所述的方法,其中,所述方法还包括:
预先设定触发指令和子组件的对应关系,并且根据所述对应关系和所述触发指令确定所述要加载的所述至少一个子组件。
17.一种安装包构建装置,其中,所述装置包括:
获取模块,其用于获取业务组件编译文件;
确定模块,其用于确定所述业务组件(bundle)编译文件内多个对象与多个界面(Activity)的依赖关系,其中,所述对象包括与所述业务相关的代码和资源;
拆分模块,其用于根据所述依赖关系将所述业务组件拆分为多个子组件;
构建模块,其用于将所述业务组件拆分得到的多个子组件打包,生成安装包。
18.一种业务组件加载装置,其中,所述装置包括:
加载模块,其用于根据触发指令,加载业务组件(bundle)拆分后的至少一个子组件,其中,所述至少一个子组件是根据所述业务组件内的对象与界面的依赖关系拆分所述业务组件确定的。
19.一种终端设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1至10中任一项所述的方法。
20.一种终端设备,其特征在于,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求11至16中任一项所述的方法。
CN201810513532.3A 2018-05-25 2018-05-25 一种安装包构建和业务组件加载方法、装置、终端设备 Pending CN110597564A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810513532.3A CN110597564A (zh) 2018-05-25 2018-05-25 一种安装包构建和业务组件加载方法、装置、终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810513532.3A CN110597564A (zh) 2018-05-25 2018-05-25 一种安装包构建和业务组件加载方法、装置、终端设备

Publications (1)

Publication Number Publication Date
CN110597564A true CN110597564A (zh) 2019-12-20

Family

ID=68848579

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810513532.3A Pending CN110597564A (zh) 2018-05-25 2018-05-25 一种安装包构建和业务组件加载方法、装置、终端设备

Country Status (1)

Country Link
CN (1) CN110597564A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367891A (zh) * 2020-03-30 2020-07-03 中国建设银行股份有限公司 建模中间数据的调用方法、装置、设备及可读存储介质
CN111708519A (zh) * 2020-06-12 2020-09-25 北京思特奇信息技术股份有限公司 一种业务组件的处理方法、装置、设备和存储介质
CN112035177A (zh) * 2020-07-29 2020-12-04 长沙市到家悠享网络科技有限公司 安装包处理方法、装置及系统
CN112231010A (zh) * 2020-09-28 2021-01-15 四川新网银行股份有限公司 一种基于osgi规范下的应用配置信息管理及动态更新的方法
CN112394981A (zh) * 2020-12-03 2021-02-23 政采云有限公司 一种前端组件处理方法、装置、设备及介质
CN113553068A (zh) * 2020-04-17 2021-10-26 华为技术有限公司 一种下载应用包的方法、装置和电子设备
CN114860250A (zh) * 2022-04-26 2022-08-05 平安普惠企业管理有限公司 组件拆分方法、装置、电子设备及可读存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807559B1 (en) * 2000-04-06 2004-10-19 Attachmate Corporation System and method for applet management
JP2004334677A (ja) * 2003-05-09 2004-11-25 Canon Inc 分割インストールシステム
US20080196025A1 (en) * 2007-02-12 2008-08-14 Microsoft Corporation Tier splitting support for distributed execution environments
CN106569856A (zh) * 2016-11-02 2017-04-19 腾讯音乐娱乐(深圳)有限公司 一种应用视图资源文件的加载方法和装置
CN107172110A (zh) * 2016-03-07 2017-09-15 阿里巴巴集团控股有限公司 一种应用app的资源加载方法、业务功能实现方法及装置
CN107220059A (zh) * 2017-06-14 2017-09-29 北京小米移动软件有限公司 应用界面的显示方法及装置
CN107241688A (zh) * 2017-06-14 2017-10-10 北京小米移动软件有限公司 应用安装包的签名、验证方法、装置及存储介质
CN107809491A (zh) * 2017-11-30 2018-03-16 北京小米移动软件有限公司 安装包的下载方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807559B1 (en) * 2000-04-06 2004-10-19 Attachmate Corporation System and method for applet management
JP2004334677A (ja) * 2003-05-09 2004-11-25 Canon Inc 分割インストールシステム
US20080196025A1 (en) * 2007-02-12 2008-08-14 Microsoft Corporation Tier splitting support for distributed execution environments
CN107172110A (zh) * 2016-03-07 2017-09-15 阿里巴巴集团控股有限公司 一种应用app的资源加载方法、业务功能实现方法及装置
CN106569856A (zh) * 2016-11-02 2017-04-19 腾讯音乐娱乐(深圳)有限公司 一种应用视图资源文件的加载方法和装置
CN107220059A (zh) * 2017-06-14 2017-09-29 北京小米移动软件有限公司 应用界面的显示方法及装置
CN107241688A (zh) * 2017-06-14 2017-10-10 北京小米移动软件有限公司 应用安装包的签名、验证方法、装置及存储介质
CN107809491A (zh) * 2017-11-30 2018-03-16 北京小米移动软件有限公司 安装包的下载方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111367891A (zh) * 2020-03-30 2020-07-03 中国建设银行股份有限公司 建模中间数据的调用方法、装置、设备及可读存储介质
CN113553068A (zh) * 2020-04-17 2021-10-26 华为技术有限公司 一种下载应用包的方法、装置和电子设备
CN113553068B (zh) * 2020-04-17 2024-01-19 华为技术有限公司 一种下载应用包的方法、装置和电子设备
CN111708519A (zh) * 2020-06-12 2020-09-25 北京思特奇信息技术股份有限公司 一种业务组件的处理方法、装置、设备和存储介质
CN111708519B (zh) * 2020-06-12 2023-08-18 北京思特奇信息技术股份有限公司 一种业务组件的处理方法、装置、设备和存储介质
CN112035177A (zh) * 2020-07-29 2020-12-04 长沙市到家悠享网络科技有限公司 安装包处理方法、装置及系统
CN112231010A (zh) * 2020-09-28 2021-01-15 四川新网银行股份有限公司 一种基于osgi规范下的应用配置信息管理及动态更新的方法
CN112231010B (zh) * 2020-09-28 2023-06-06 四川新网银行股份有限公司 一种基于osgi规范下的应用配置信息管理及动态更新的方法
CN112394981A (zh) * 2020-12-03 2021-02-23 政采云有限公司 一种前端组件处理方法、装置、设备及介质
CN114860250A (zh) * 2022-04-26 2022-08-05 平安普惠企业管理有限公司 组件拆分方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN110597564A (zh) 一种安装包构建和业务组件加载方法、装置、终端设备
CN109117169B (zh) 用于修复内核漏洞的方法和装置
CN110442327B (zh) 一种应用程序构建方法、装置、服务器
CN110046101B (zh) 页面自动化测试方法、装置及计算机存储介质
CN110532020A (zh) 一种微服务编排的数据处理方法、装置及系统
CN112685035B (zh) 项目开发方法及装置、计算机可读存储介质、电子设备
JP2017146966A (ja) パッケージファイルに対する機能拡張方法およびシステム
US10338952B2 (en) Program execution without the use of bytecode modification or injection
CN110895471A (zh) 安装包生成方法、装置、介质及电子设备
JP7106001B2 (ja) サブアプリケーション開発方法、装置、コンピュータ機器、並びにコンピュータプログラム
CN108536451A (zh) 应用程序的埋点注入方法和装置
US10908948B2 (en) Multiple application instances in operating systems that utilize a single process for application execution
CN111068328A (zh) 游戏广告配置表格的生成方法、终端设备及介质
CN108121650B (zh) 一种对于页面用户界面的测试方法及装置
US20170124614A1 (en) Virtualized Services Discovery and Recommendation Engine
CN112631590A (zh) 组件库生成方法、装置、电子设备和计算机可读介质
US10514940B2 (en) Virtual application package reconstruction
CN111782210A (zh) 页面管理方法、装置、电子设备及计算机可读介质
CN112596746B (zh) 应用安装包生成方法、装置、计算机设备和存储介质
CN112068879A (zh) 基于配置化的客户端应用程序开发框架构建方法及装置
CN111435328B (zh) 应用测试方法、装置、电子设备及可读存储介质
CN116382718A (zh) 代码离线部署方法、装置、计算机设备及存储介质
CN110727416A (zh) 开发框架的生成方法及相关装置
CN112764796A (zh) 安装包生成系统
CN106778270B (zh) 一种恶意应用程序的检测方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40019415

Country of ref document: HK

RJ01 Rejection of invention patent application after publication

Application publication date: 20191220

RJ01 Rejection of invention patent application after publication