CN112631622A - 应用安装方法、装置、服务器及计算机可读介质 - Google Patents
应用安装方法、装置、服务器及计算机可读介质 Download PDFInfo
- Publication number
- CN112631622A CN112631622A CN202011595405.6A CN202011595405A CN112631622A CN 112631622 A CN112631622 A CN 112631622A CN 202011595405 A CN202011595405 A CN 202011595405A CN 112631622 A CN112631622 A CN 112631622A
- Authority
- CN
- China
- Prior art keywords
- file
- installation
- compiling
- user terminal
- check
- 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
Links
- 238000009434 installation Methods 0.000 title claims abstract description 229
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000012545 processing Methods 0.000 claims description 23
- 238000004806 packaging method and process Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000001413 cellular effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000011900 installation process Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
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
本申请实施例公开了一种应用安装方法、装置、服务器及计算机可读介质,涉及计算机技术领域,方法包括:获取用户终端发送的目标应用程序的下载请求;基于下载请求获取目标应用程序的安装文件和与安装文件对应的编译输出文件,其中,编译输出文件包括安装文件的机器码;将安装文件和与安装文件对应的编译输出文件发送至用户终端,指示用户终端根据安装文件和编译输出文件安装目标应用程序。因此,安装文件的编译操作由服务器执行,进而用户终端能够同时获取到安装文件和对应的机器码,能够在本地安装的时候,跳过对安装文件编译环节,减少安装耗时,提高安装效率。
Description
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种应用安装方法、装置、服务器及计算机可读介质。
背景技术
目前,应用程序安装/升级过程为,终端从云端下载安装包,解析安装包提取应用参数,生成编译指令,执行编译指令生成编译输出文件,完成安装。这会导致安装过程耗时过长。
发明内容
本申请提出了一种应用安装方法、装置、服务器及计算机可读介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种应用安装方法,应用于服务器,所述方法包括:获取用户终端发送的目标应用程序的下载请求;基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
第二方面,本申请实施例还提供了一种应用安装方法,应用于用户终端,所述方法包括:向服务器发送目标应用程序的下载请求;获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;根据所述安装文件和所述编译输出文件安装所述目标应用程序。
第三方面,本申请实施例还提供了一种应用安装装置,应用于服务器,所述装置包括:获取单元、查找单元和发送单元。获取单元,用于获取用户终端发送的目标应用程序的下载请求。查找单元,用于基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码。发送单元,用于将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
第四方面,本申请实施例还提供了一种应用安装装置,应用于用户终端,所述装置包括:请求单元、确定单元和安装单元。请求单元,用于向服务器发送目标应用程序的下载请求。确定单元,用于获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码。安装单元,用于根据所述安装文件和所述编译输出文件安装所述目标应用程序。
第五方面,本申请实施例还提供了一种服务器,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述方法。
第六方面,本申请实施例还提供了一种计算机可读介质,所述可读存储介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行上述方法。
本申请提供的应用安装方法、装置、服务器及计算机可读介质,在服务器获取到用户终端发送的目标应用程序的下载请求之后,基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件。其中该编译输出文件包括安装文件的机器码,将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。从而,安装文件的编译操作由服务器执行,进而用户终端能够同时获取到安装文件和对应的机器码,能够在本地安装的时候,跳过对安装文件编译环节,减少安装耗时,提高安装效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请实施例提供的方法及装置的应用场景示意图;
图2示出了本申请实施例提供的应用程序的安装界面的示意图;
图3示出了本申请一实施例提供的应用安装方法的方法流程图;
图4示出了本申请另一实施例提供的应用安装方法的方法流程图;
图5示出了本申请又一实施例提供的应用安装方法的方法流程图;
图6示出了本申请再一实施例提供的应用安装方法的方法流程图;
图7示出了本申请一实施例提供的应用安装装置的模块框图;
图8示出了本申请另一实施例提供的应用安装装置的模块框图;
图9示出了本申请实施例提供的电子设备的模块框图;
图10出了本申请实施例提供的用于保存或者携带实现根据本申请实施例的应用安装方法的程序代码的存储单元。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
Android有两种虚拟机执行环境:Dalvik和Art。在Dalvik虚拟机下,应用每次运行的时候,字节码都需要通过即时编译器(JIT)转换为机器码,才能被机器运行,这会拖慢应用的执行效率。在Android 4.4时,Art虚拟机开始替代Dalvik,在最开始的Art虚拟机中,应用在第一次安装的时候,系统会通过一个名称为dex2oat的工具将APK中的dex文件编译成包含本地机器码的oat文件存放下来,具体地,可以是执行dex2oat对APK中的classes.dex进行编译,生成机器码(base.odex)。这样做之后,在程序执行的时候,就可以直接使用已经编译好的机器码以加快效率,这种预先编译机器码的机制叫做AOT。
具体地,请参阅图1,示出了本申请实施例提供的方法及装置的应用场景图。如图1中所示,用户终端10和服务器20位于无线网络或有线网络中,用户终端10和服务器20进行数据交互。
于本申请实施例中,用户终端10可以为移动终端设备,例如可以包括智能手机、平板电脑、电子书阅读器、膝上型便携计算机、车载电脑、穿戴式移动终端等等。
在一些实施例中,客户端安装在用户终端10内,例如,可以是安装在用户终端10的应用程序,于本申请实施例中,该客户端为应用中心客户端,该应用中心客户端为服务软件,用户能够通过该应用中心客户端下载新的应用程序,也可以更新以及启动某个已安装的应用程序。用户在应用中心客户端通过帐号登录,则该帐号对应的所有信息可以存储在服务器20的存储空间内。服务器20可以是单独的服务器,也可以是服务器集群,可以是本地服务器,也可以是云端服务器。其中,应用中心客户端的登录帐号与当前安装应用中心客户端的移动终端绑定,服务器能存储有该移动终端内的应用程序的相关数据,例如,所安装的应用程序以及应用程序的版本号等信息。
具体地,应用中心客户端包括多个界面,不同的界面展示不同的内容。例如,如图2所示,示出了应用中心客户端的应用安装界面,该界面内,一般展示有多个应用程序和每个应用程序对应的操作按钮,该操作按钮可以是安装或更新,即用户能够在该界面对应用程序执行安装或更新操作。
发明人在研究中发现,用户终端下载某个应用程序的时候,首先从服务器20内下载应用程序的安装包,然后,解析安装包提取应用参数,生成编译指令,执行编译指令生成编译输出文件,完成安装。然而,该编译过程在用户终端内执行,对用户终端的资源(如CPU、内存和功耗)消耗比较大,而且,机器码的编译是在应用程序的安装过程中触发的,意味着编译的耗时(代码量越大,编译优化器越多,越复杂,执行耗时越大),会大大增加安装耗时。受限于用户终端的资源(主要是CPU和内存),无法在用户终端执行太复杂的优化器,对编译的机器码的质量有较大影响。并且,在用户终端需要安装多个应用程序的时候,每个应用程序的安装或更新,均需要在用户终端内执行编译操作,这也就意味着应用程序的编译时间与其安装在用户终端的数量成正比,数量越多应用程序编译总时间越长。
因此,为了克服上述缺陷,本申请实施例提供了一种应用安装方法,该方法应用于上述的服务器20。具体地,如图3所示,该方法包括:S301至S303。
S301:获取用户终端发送的目标应用程序的下载请求。
作为一种实施方式,该服务器可以是业务服务器,也可以是数据服务器。具体地,该数据服务器可以是客户端对应的服务器,该客户端可以是应用中心对应的服务器。作为一种实施方式,该应用中心客户端可以是用户下载和更新应用程序的客户端,用户通过该应用中心客户端下载应用程序至用户终端或者更新用户终端内的应用程序。则应用程序的开发商将应用程序的安装包上传至数据服务器,以供各个用户终端由数据服务器内下载应用程序的安装包。
其中,业务服务器可以是用于对数据服务器内的应用程序执行编译相关操作的服务器,其中,该编译相关操作包括应用程序的安装包的编译以及收集应用程序的热点代码等操作。业务服务器能够由数据服务器内获取应用程序的安装包,并且在业务服务器内对安装包编译,以及执行本申请方法实施例的操作。作为一种实施方式,也可以是业务服务器在对安装包编译得到编译输出文件之后,发送至数据服务器存储。
因此,上述服务器20可以是业务服务器,也可以是业务服务器和数据服务器构成的集群服务器。
用户终端发送下载请求至服务器之后,服务器解析该下载请求,以获得目标应用程序的应用标识和用户终端对应的用户标识。其中,用户终端对应的用户标识为当前登录用户终端的用户帐号。作为一种实施方式,该服务器是应用中心客户端(例如,应用商店APP)对应的业务服务器,则该用户帐号为登录该应用中心客户端的用户ID。作为另一种实施方式,该用户帐号还可以是用户终端的终端标识,该终端标识可以是用户终端的设备ID,例如,用户终端的处理器ID、IP地址或者MAC地址等。
另外,该目标应用程序可以是用户请求下载或更新的应用程序。作为一种实施方式,用户终端安装有应用中心客户端,则该应用中心客户端包括下载界面,则该下载界面内显示有多个应用程序的标识和对应的下载按钮或更新按钮,其中,应用程序的标识可以是应用程序的图标和名称,用户点击目标应用程序的名称或者图标对应的下载按钮,用户终端检测到该下载按钮被触发则发送目标应用程序的应用标识对应的下载请求至业务服务器。
S302:基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件。
其中,所述编译输出文件包括安装文件的机器码,所述编译输出文件由所述服务器预先获得,该下载请求可以是安装请求或更新请求。具体地,可以是服务器预先通过指定编译器对所述安装文件执行编译操作得到编译输出文件,也可以由其他的终端预先编译该安装文件得到编译输出文件之后将该编译输出文件上传至服务器。其中,该其他的终端为发送该下载请求的用户终端之外的终端。
作为一种实施方式,该下载请求可以是用户终端请求更新该目标应用程序的时候向服务器发送的,则该下载请求为更新请求。则该下载请求内携带有用户终端内安装的目标应用程序的目标版本号,服务器基于该目标版本号,能够查找到安装文件,具体地,可以是确定该目标版本号与最新版本的目标应用程序之间的安装数据作为该安装文件,其中,该安装文件用于将目标版本号的目标应用程序升级至最新版本的目标应用程序。
作为另一种实施方式,该下载请求可以是用户终端请求安装该目标应用程序的时候向服务器发送的,则该下载请求为安装请求,即该用户终端内当前并未安装有目标应用程序。则基于该安装请求查找的安装文件为最新版本的应用程序的安装文件,作为该目标应用程序的安装文件。
作为一种实施方式,编译输出文件包括安装文件的机器码,例如,该机器码可以是能够被计算机硬件直接执行的代码。具体地,安装文件内的源代码(例如,是java代码)经过javac编译成类文件,再经过dx/d8,转换成字节码,再由指定编译器将字节码转换为机器码。
其中,字节码(Byte-code)是一种包含执行程序、由一序列op代码/数据对组成的二进制文件。字节码是一种中间码,它比机器码更抽象,它经常被看作是包含一个执行程序的二进制文件,更像一个对象模型。字节码的称谓由来是因为通常每个op代码是一字节长,但是指令码的长度是变化的。每个指令有从0到255(或十六进制的:00到FF)的一字节操作码,被参数例如寄存器或内存地址跟随。字节码主要为了实现特定软件运行和软件环境、与硬件环境无关,其通过编译器和虚拟机器,编译器将源码编译成字节码,特定平台上的虚拟机将字节码转译为可以直接执行的指令,例如安卓平台上的JIT虚拟机可以转换为安卓平台上可直接执行的指令。
在本申请实施例中,该编译输出文件由所述服务器预先通过指定编译器对所述安装文件执行编译操作得到。具体地,服务器将安装文件的源代码转换为中间字节码,用于后续编译为机器码的过程。则服务器在获得以上中间代码之后,则可以利用指定编译器对中间代码进行编译,获得最终的机器码。电子设备可以对生成的二进制的机器码进行保存,在运行该应用程序时,可以将机器码直接交由处理器运行,从而可以极大的提升应用程序在运行时的速度。在一些实施方式中,电子设备对中间代码进行编译获得的编译文件,可以至少包括base.odex,base.odex即为机器码。当然,编译结果中也还可以包括其他文件,例如,base.art(class初始化信息)、base.vdex(dex的校验信息)等。于本申请实施例中,该指定编译器可以是即时编译器(JIT)。
作为一种实施方式,该指定编译器可以是AOT编译器(Ahead-of-Time Compiler),应用程序在第一次安装的时候,系统会通过一个名称为dex2oat的工具将APK中的dex文件编译成包含本地机器码的oat文件存放下来,则该编译过程所使用的编译器即为AOT编译器。这样做之后,在程序执行的时候,就可以直接使用已经编译好的机器码以加快效率。
作为一种实施方式,在目标应用程序的安装文件被发布之前或者被发布时的时候,服务器能够获取到该目标应用程序的安装文件,通过指定编译器对所述安装文件进行编译,得到编译输出文件,则该编译输出文件内包括机器码。因此,服务器内可以预先存储有多个应用程序的安装文件和每个应用程序的安装文件对应的编译输出文件。例如,可以是预先设定有安装对应表,该安装对应表内包括每个应用程序的应用标识,以及每个应用标识对应的编译输出文件。作为一种实施方式,应用程序可以包括多个版本,每个应用标识对应的应用程序的每个版本号对应一个编译输出文件,也可以是在该对应表内包括应用标识对应的应用程序的最新版本的版本号对应的编译输出文件。服务器解析该下载请求获取目标应用程序的应用标识,基于该应用标识由安装对应表内查找该应用标识对应的编译输出文件和安装文件。
S303:将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端。
具体地,服务器将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
其中,安装文件可以是安装包(Android Package,APK)。应用程序的源代码,首先经过SDK编译成DEX文件,DEX文件和一些资源文件(图片、视频等)、Native Code(C语言等编译出的.so文件)会直接打包进APK。安装APK的过程,其实是安装包解压的过程。资源文件、二进制库等解压后直接存储在本地,DEX文件不仅仅解压,会根据系统的运行环境,采用不同的处理方式,被处理成不同格式的文件存储在本地,等待程序启动调用,从而完成应用程序的安装过程。其中,该不同格式的文件可以包括编译输出文件。
因此,于本申请实施例中,用户终端在发送目标应用程序的下载请求之后,获取到目标应用程序的安装文件和与所述安装文件对应的编译输出文件,用户终端获取到该编译输出文件,无需再对安装文件进行编译得到机器码,即跳过将源代码编译成机器码的过程,具体地,跳过将安装文件内的类文件(classes.dex)编译得到机器码的过程,也就是说,不执行dex2oat编译,直接使用服务器发送的编译输出文件内的机器码完成对目标应用程序的安装。
请参阅图4,图4示出了本申请实施例提供的一种应用安装方法,该方法应用于上述的服务器20。具体地,如图4所示,该方法包括:S401至S408。
S401:获取所述用户终端的硬件参数。
其中,用户终端的编译逻辑与所述用户终端的硬件参数相关。
作为一种实施方式,该编译逻辑为指令处理逻辑,具体地,可以是为了实现某个功能或效果,所需要调用的代码或函数,以及执行的顺序等逻辑。在电子设备的硬件不同的情况下,其编译逻辑是不同的,例如,arm架构的处理器和x86架构的处理器的编译逻辑不同,其中,ARM处理器基于精简指令集(RISC)架构,x86是复杂指令集(CISC)架构,二者的寻址模式和指令的格式均不同。
于本申请实施例中,该硬件参数可以是用户终端的处理器的架构信息,服务器获取到该架构信息,基于该架构信息确定用户终端的编译逻辑。其中,该编译逻辑可以是预先存储的,并且与硬件参数对应存储。例如,可以设置编译对应表,该对应表内包括多个硬件参数以及每个硬件传输对应一个编译逻辑。
作为一种实施方式,该编译逻辑可以是指令处理方式,例如,如果硬件参数为arm架构,则所对应的编译逻辑为精简指令集(RISC)架构对应的指令处理方式,如果硬件参数为x86架构,则所对应的编译逻辑为复杂指令集(CISC)架构对应的指令处理方式。
作为另一种实施方式,该硬件参数还可以是处理器的型号,服务器在获取到该处理器的型号之后确定该型号对应的编译逻辑。具体地,可以是确定处理器的型号对应的架构信息,再基于该架构信息确定编译逻辑。
S402:基于所述硬件参数设置指定编译器,所述指定编译器与所述用户终端的编译逻辑匹配。
作为一种实施方式,服务器内设置有初始编译器,该初始编译器可以是与服务器的硬件参数匹配的编译器,即该初始编译器与服务器的硬件参数相关。则基于所述硬件参数设置指定编译器的实施方式可以是,确定用户终端的硬件参数与服务器的硬件参数是否匹配,如果匹配,则将所述初始编译器作为指定编译器,如果不匹配,则基于硬件参数修改初始编译器,以得到指定编译器,其中,指定编译器与所述用户终端的编译逻辑匹配。具体地,根据该用户终端的硬件参数确定该硬件参数对应的编译逻辑,基于该编译逻辑修改初始编辑器的编译逻辑,使得修改后的初始编译器的编译逻辑与用户终端的编译逻辑一致。作为一种实施方式,该指定编译器为dex2oat。
由于服务器的硬件参数与用户终端的硬件参数不同,例如,服务器为x86架构,用户终端为arm架构,则调整服务器中dex2oat的编译逻辑,使得x86和arm版本dex2oat对目标应用程序的安装文件编译输出的机器码一致。另外,dex2oat中编译逻辑部分,留有可扩展的接口,可以引入不同的编译器后端和优化算法,以达到优化机器码的目的。
S403:获取所述目标应用程序的安装文件和所述用户终端的系统资源。
作为一种实施方式,用户终端执行指定编译器需要依赖用户终端的系统资源,该系统资源可以包括boot.art等系统镜像、BOOTCLASSPATH等系统环境变量、/system/build.prop等系统配置、/system/etc/permissions/platform.xml等系统built-inlibrary。具体地,该系统资源作为该用户终端运行指定编译器的编译环境。
作为一种实施方式,服务器发送资源获取请求至用户终端,用户终端基于该资源获取请求发送用户终端的系统资源。
作为另一种实施方式,服务器解析用户终端的刷机程序,并提取其中的系统资源,具体地,解析不同版本用户终端的刷机程序,按要求提取其中的配置。其中,刷机程序即不同用户终端或者操作系统(如Android)版本的刷机包。用户终端的不同,会带来硬件上的差异,不同Android版本,会有代码上的差异,导致Android Framework层的差异。提取的内容,主要是编译所依赖的Android系统资源,包括:/system/framework目录下的所有资源(主要是boot.art等系统镜像和framework层的系统classpath)、/build.prop和/system/build.prop等系统配置文件、/system/etc/permissions目录的xml文件(主要是记录了系统的built-in library,用来解析APK中的classpath依赖的)、BOOTCLASSPATH等系统环境变量。这些都是用来解析安装文件编译命令的,以及执行编译的一些系统依赖资源。
S404:在服务器内配置与所述用户终端的系统资源匹配的编译环境。
S405:基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述编译输出文件。
作为一种实施方式,在服务器内建立虚拟机,该虚拟机依赖该用户终端的系统资源配置编译环境,从而使得该服务器能够模拟用户终端的系统资源对应的编译环境,使得服务器在该编译环境下能够对目标应用程序的安装文件进行编译,从而使得在该编译环境下编译得到的机器码能够在用户终端内正常运行,能够匹配用户终端的编译环境。
作为一种实施方式,按照APK需要安装的用户终端的系统环境,以Android版本号匹配编译器,以OTA版本号匹配手机的编译环境。这样,来保证在服务器端能够正确执行预期平台编译。其中,OTA版本号为用户终端的操作系统的唯一版本号,根据这个版本号,可以唯一确定系统资源进而确定编译环境,从而使编译出的机器码,可运行在该用户终端的系统环境下的。例如,该OTA版本号可以是操作系统中的ro.build.version.ota配置。
S406:获取用户终端发送的目标应用程序的下载请求。
S407:基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件。
S408:将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端。
作为一种实施方式,上述方法未详细描述的部分请参考前述实施例,在此不再赘述。
因此,通过上述方法实施例,基于所述硬件参数设置指定编译器,所述指定编译器与所述用户终端的编译逻辑匹配,从而将编辑器迁移至服务器内,并且,配置与所述用户终端的系统资源匹配的编译环境,基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述编译输出文件,从而能够在服务器内构建用户终端的编译环境,使得服务器内所编辑的编译输出文件能够与用户终端的编译逻辑一致且能够在用户终端的操作系统环境内运行。
请参阅图5,图5示出了本申请实施例提供的一种应用安装方法,该方法应用于上述的服务器20。具体地,如图5所示,该方法包括:S501至S508。
S501:获取所述目标应用程序的安装文件和所述用户终端的系统资源。
S502:在服务器内配置与所述用户终端的系统资源匹配的编译环境。
S503:基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码和第一校验文件。
根据上述方法实施例得到的指定编译器和编译环境对安装文件执行编译操作,以得到安装文件的机器码和第一校验文件,在一些实施例中,编译操作的编译结果不仅可以包括机器码和第一校验文件,还可以包括类文件初始化信息。作为一种实施方式,整个编译过程,对安装文件未做任何修改,编译结果可以得到三个文件,分别为机器码(base.odex)、第一校验文件(base.vdex)和文件初始化信息(base.art)。其中,第一校验文件包括所述安装文件内中的类文件和与所述类文件对应的校验信息,其中,该校验信息为类文件的校验结果。
S504:所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件。
其中,至少部分类文件可以是所有类文件中随机选择的部分类文件,也可以是全部类文件。其中,随机选择的方式可以是,将所有类文件中预设时间段内被调用次数满足预设条件的类文件作为指定类文件,然后,将第一校验文件的所有类文件中的指定类文件删除,以得到第二校验文件。其中,预设时间段和预设条件可以根据实际需求而设定。例如,该预设时间段可以是一个月或一个周,被调用次数满足预设条件的实施方式可以是调用次数小于预设数值或者所有类文件中被调用次数排名靠后的类文件。具体地,获取预设时间段内每个类文件的被调用次数,将所有的类文件按照被调用次数逐渐减小的方式排序,将排序位于N之后的类文件作为指定类文件,其中,N可以根据实际经验而设定,例如,可以是10或者可以是类文件总数的1/M,其中,M为正数。作为一种实施方式,该预设条件和被调用次数均与应用程序的版本对应。
于本申请实施例中,由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件的实施方式可以是,由所述第一校验文件中去除所有类文件,以得到第二校验文件。由此,通过将第一校验文件中的至少部分类文件去除,能够缩减第一校验文件的大小,减少数据下载量。
作为一种实施方式,可以通过差分处理得到第二校验文件,具体地,将所述第一校验文件与所有类文件做差分处理,以去除所述第一校验文件中的所有类文件中,经差分处理后的第一校验文件作为第二校验文件。其中,差分处理是指针对两个二进制文件,取文件1相对于文件2的二进制差异,即从文件1中移除,文件1和文件2相同的部分,只保留不同点。
编译生成的base.vdex中包含了APK中所有dex的信息,即将APK直接编译得到的二进制编译输出文件即为base.vdex,其中,dex是指APK的所有java源代码合并后的文件。所以,为了减小生成的编译结果的大小,对base.vdex做差分处理,生成差分包,该差分包就是第二校验文件。作为一种实施方式,可以使用bsdiff工具进行差分处理。
差分处理的目的是减少编译结果的总大小。编译完成后,源APK不变,额外会生成三个编译输出文件即base.odex、base.vdex、base.art。这三个文件,就是作为服务器端的编译输出包,即前述的编译输出文件。
由此,差分处理能够减少编译输出文件的大小,降低网络传输的时间和流量。编译输出的三个文件中,base.vdex中会包含classes.dex的信息,base.vdex的主要是由classes.dex和classes.dex的校验结果信息组成。而在安装时,源APK是会下载到用户终端中的,也就是在安装的时候,用户终端是可以从源APK中读取到classes.dex的信息。所以,可以对base.vdex(即第一校验文件)做差分处理,编译输出包(release.zip)中包含的不是base.vdex,而是base.vdex的差分处理后的文件,即第二检验文件(base.patch)。在安装的时候,从APK中读取出classes.dex,再结合差分包,还原回base.vdex,以便对目标应用程序安装。
作为一种实施方式,安装文件中包括多个类文件,为了方便管理,以及为了方便在差分处理后将第二校验文件还原成第一校验文件,则可以对APK中的所以类文件按照预设规则进行整理,以得到整理后的类文件,从而在差分处理的时候以及后续用户终端对第二校验文件还原的时候,都采用该预设规则,能够快捷准确的对第二校验文件还原。
则由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件的实施方式可以是,将所有类文件按照预设规则进行整理,以得到整理后的类文件;将所述第一校验文件与所述整理后的类文件做差分处理,以去除所述第一校验文件中的所有类文件中的至少部分类文件,经差分处理后的第一校验文件作为第二校验文件。
其中,该预设规则可以是针对每个类文件的命名,根据每个类文件的命名规则进行整理,例如,将首字母相同的类文件作为一个小类,将所有的小类整合,从而得到整理后的类文件。于本申请实施例中,可以按照所有类文件的名称的字母升序排序合并后得到all.dex。
具体地,APK中存在多个类文件,多个类文件一般采用classes.dex、classes2.dex、classes3.dex等的命名规则。如上所述,base.vdex是包含了所有类文件(classes.dex)的信息。所以,可以将APK中的classes.dex按照字母升序合并成一个all.dex,是为了保证这样生成的差分包,在安装的时候,按照同样的方式还原成base.vdex,从而保证用户终端与服务器编译输出的base.vdex一致。其中,all.dex即为整理后的类文件。
则用户终端在安装目标应用程序的时候,用户终端按照前述的整理方式生成all.dex,将base.patch和all.dex执行bspatch,还原回base.vdex,即执行生成base.patch的逆向操作,得到base.vdex。
其中,bspatch可以看作是bsdiff的逆向过程,具体地,bsdiff的过程可以理解为,比较两个文件A和B的二进制差异,如果是基于A,对B做bsdiff,那生成的差分包中存的信息就是B相对A的二进制差异,比如B中的0~100个字节,与A中的10~110相同,那么生成的差分包中,就会移除B中的0~100个字节,替换成对应A的10~100的位置信息。Bspatch的过程可以理解为,基于A,根据差分包中差异信息,还原回B。比如差分包中记录了A的10~110与B的0~100字节相同这个信息,那就读取A的10~110,作为B的0~100部分。
S505:根据所述第二校验文件和所述机器码得到编译输出文件。
作为一种实施方式,可以将第二校验文件和所述机器码打包成编译输出文件。
作为另一种实施方式,该编译结果除了包括第二校验文件和所述机器码之外,还包括类文件初始化信息,则可以将所述第二校验文件、所述机器码和所述类文件初始化信息打包成所述编译输出文件。具体地,3)将base.art、base.odex、base.patch压缩到zip包,作为发布包,即编译输出文件。则服务器可以将该发布包上传至应用商店的服务器,即数据服务器,供用户终端下载。
S506:获取用户终端发送的目标应用程序的下载请求。
S507:基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件。
S508:将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端。
于本申请实施例中,用户终端下载的内容至少包括安装文件(APK)和安装文件对应的编译输出文件,即上述的发布包。在一些实施例中,APK是一个单独的包,即用户终端安装的应用程序包。APK是由各个开发者提供的,发布到应用商店。服务器编译产生的是一个单独的包,即发布包,是由base.art、base.odex和base.patch组成的zip格式的压缩包。对于开发者来说,APK并没有被修改,而编译得到的编译输出文件,对于开发者和用户都是无感知的。服务器用于根据APK和编译环境得到编译结果。因此,服务器可以将APK和编译输出文件之间建立对应关系。在用户下载安装APK时,以及该对应关系,得到APK对应的编译输出文件一起下发至用户终端。
作为一种实施方式,通过差分处理得到的第二校验文件,能够减少编译输出文件的大小,用户终端在安装应用程序的时候,需要对该第二校验文件执行还原操作得到第一验证文件。则可以在执行由所述第一校验文件中去除所有类文件中的至少部分类文件以得到第二校验文件的操作之前,可以确定用户终端的网络参数,如果该网络参数满足预设网络条件,则执行由所述第一校验文件中去除所有类文件中的至少部分类文件的操作,如果该网络参数不满足预设网络条件,则不执行由所述第一校验文件中去除所有类文件中的至少部分类文件的操作,而直接将第一校验文件作为编译输出文件的一部分,即执行根据所述第一校验文件和所述机器码得到编译输出文件,具体地,将所述第一校验文件、所述机器码和所述类文件初始化信息打包成所述编译输出文件。
其中,该网络参数可以是用户终端的网路类型、网络质量等。
作为一种实施方式,该网络参数可以是网络类型,若该网络类型是蜂窝数据网络,则判定网络参数满足预设网络条件,从而能够减少用户终端的数据下载量,若该网络类型是无线网络,则判定网络参数满足预设网络条件,从而能够减少用户终端对第二校验文件执行还原操作的耗时。其中,蜂窝数据网络(Cellular network),又称移动网络(mobilenetwork)是一种移动通信硬件架构。具体地,网络服务区被划分成许多小区(cell,也就是“蜂窝”),每个小区设置一个基站,该基站负责本小区各个移动站的联络与控制。蜂窝数据网络可以是5G(5th Generation,5G)通信系统(或称为新空口(New Radio,NR)系统)、长期演进(LTE,Long Term Evolution)网络、通用分组无线服务(GPRS,General Packet RadioService)系统、全球移动通信(GSM,Global System for Mobile communications)网络或通用移动通信网络(UMTS,Universal Mobile Telecommunications System),当然也可以是其它蜂窝网络。其中,无线网络可以是无线局域网(WLAN,Wireless Local AreaNetworks),具体可以是Wi-Fi(WirelessFidelity,无线保真)。
作为一种实施方式,可以确定用户终端发送的下载请求对应的目标应用程序,是否为热门应用,如果是热门应用,则直接将安装文件发送至用户终端,如果不是热门应用,则可以执行基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件以及后续步骤。
由于热门应用用户使用的频率会比较大,则可能会使用的时候会产生过多的热点代码,因此,可以在安装的时候,不执行编译操作,在空闲的时候,基于用户对应用的使用数据对应用程序编译得到机器码并存储,具体地,应用在安装的时候dex不会再被编译,App运行时,dex文件先通过解析器被直接执行,经常运行函数或代码块会被识别为hot code并被JIT编译后存储在jit code cache中并生成profile文件以记录热点函数的信息,手机进入IDLE(空闲)且Charging(充电)状态的时候,系统会扫描App目录下的profile文件并执行AOT过程进行编译。
具体地,Android平台的绝大多数应用是使用Java语言写的,Java程序最初仅仅通过JAVA解释器(Interpreter)解释执行,即对字节码逐条解释执行,这种方式的执行速度相对会比较慢,尤其当某个方法或代码块运行特别频繁时,这种方式的执行效率就显得很低。于是后来在虚拟机中引入了JIT编译器,当虚拟机发现某个方法或者代码块运行特别频繁时,就会把这些代码认定为“hot spot code”(热点代码),将之记录下来保存到profile文件。简单而言,profile文件记录了应用频繁运行的方法或者代码块,经由JIT或者AOT编译后得到.odex/.oat文件,该文件存有这些热点代码编译而成的二进制机器码,可直接交由底层cpu执行,从而提高了运行速度。
其中,热门应用可以是根据用户对应用程序的历史使用记录而确定的,也可以是根据用户的用户画像而确定的。该热门应用能够反映用户对该应用的使用频率比较高。
因此,本申请实施例,将编译过程从手机(arm)迁移至服务器(x86),实现跨平台编译。将编译过程提前至APK安装之前,实现预编译。服务器端编译不依赖手机,实现手机执行环境的自动化解析;编译过程不受限于手机版本、硬件资源等限制。编译和安装过程,不会对源APK做任何修改,开发者完全无感。
请参阅图6,图6示出了本申请实施例提供的一种应用安装方法,该方法应用于上述的服务器10。具体地,如图6所示,该方法包括:S601至S603。
S601:向服务器发送目标应用程序的下载请求。
S602:获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件。
S603:根据所述安装文件和所述编译输出文件安装所述目标应用程序。
其中,上述实施方式可以参考前述实施例,在此不再赘述。
进一步,用户终端还可以由所述安装文件内获取类文件;根据所获取的类文件将所述第二校验文件还原为所述第一校验文件;根据所述安装文件、所述机器码和所述第一校验文件安装所述目标应用程序。具体的实施方式可以参考前述实施例,在此不再赘述。
作为一种实施方式,用户终端可以批量发送下载请求至服务器,则服务器根据当前时段确定执行将安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端的操作,还是执行将安装文件发送至所述用户终端的操作。具体地,确定当前时段是否为用户空闲时段,其中,该空闲时段是指用户在该时段内使用用户终端的可能性或频率比较小,具体地,该空闲时段可以是根据对用户使用用户终端的时间分布来确定的。
如果当前时段是空闲时段,则执行将安装文件发送至所述用户终端的操作,即只发送安装文件,用户终端接收该安装文件之后,根据该安装文件安装应用程序,即在用户终端执行编译操作。从而能够减少不必要的网络资源的占用。
请参阅图7,其示出了本申请实施例提供的一种应用安装装置的结构框图,应用安装装置700应用于服务器,该装置可以包括:获取单元701、查找单元702和发送单元703。
获取单元701,用于获取用户终端发送的目标应用程序的下载请求。
查找单元702,用于基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码,所述编译输出文件由所述服务器预先通过指定编译器对所述安装文件执行编译操作得到。
发送单元703,用于将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
进一步的,应用安装装置700还包括编译单元,用于获取所述目标应用程序的安装文件和所述用户终端的系统资源;在服务器内配置与所述用户终端的系统资源匹配的编译环境;基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述编译输出文件。
具体地,编译单元还用于获取所述用户终端的硬件参数,所述用户终端的编译逻辑与所述用户终端的硬件参数相关;基于所述硬件参数设置指定编译器,所述指定编译器与所述用户终端的编译逻辑匹配。
具体地,编译单元还用于基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码和第一校验文件,所述第一校验文件包括所述安装文件内中的类文件和与所述类文件对应的校验信息;由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件;根据所述第二校验文件和所述机器码得到编译输出文件。
具体地,编译单元还用于基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码、第一校验文件以及类文件初始化信息;将所述第二校验文件、所述机器码和所述类文件初始化信息打包成所述编译输出文件。
具体地,编译单元还用于由所述第一校验文件中去除所有类文件,以得到第二校验文件。
具体地,编译单元还用于将所有类文件按照预设规则进行整理,以得到整理后的类文件;将所述第一校验文件与所述整理后的类文件做差分处理,以去除所述第一校验文件中的所有类文件中的至少部分类文件,经差分处理后的第一校验文件作为第二校验文件。
请参阅图8,其示出了本申请实施例提供的一种应用安装装置的结构框图,应用安装装置800应用于用户终端,该装置可以包括:请求单元801、确定单元802和安装单元803。
请求单元801,用于向服务器发送目标应用程序的下载请求。
确定单元802,用于获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码,所述编译输出文件由所述服务器预先通过指定编译器对所述安装文件执行编译操作得到。
安装单元803,用于根据所述安装文件和所述编译输出文件安装所述目标应用程序。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图9,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备100可以是上述的服务器或用户终端。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储终端100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1000中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1000可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1000包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1000具有执行上述方法中的任何方法步骤的程序代码1010的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1010可以例如以适当形式进行压缩。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种应用安装方法,其特征在于,应用于服务器,所述方法包括:
获取用户终端发送的目标应用程序的下载请求;
基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;
将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
2.根据权利要求1所述的方法,其特征在于,所述基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件之前,还包括:
获取所述目标应用程序的安装文件和所述用户终端的系统资源;
在所述服务器内配置与所述用户终端的系统资源匹配的编译环境;
基于所述编译环境通过指定编译器对所述安装文件执行编译操作,以得到所述编译输出文件。
3.根据权利要求2所述的方法,其特征在于,所述基于所述编译环境通过指定编译器对所述安装文件执行编译操作之前,还包括:
获取所述用户终端的硬件参数,所述用户终端的编译逻辑与所述用户终端的硬件参数相关;
基于所述硬件参数设置指定编译器,所述指定编译器与所述用户终端的编译逻辑匹配。
4.根据权利要求2所述的方法,其特征在于,所述基于所述编译环境通过指定编译器对所述安装文件执行编译操作,以得到所述编译输出文件,包括:
基于所述编译环境通过指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码和第一校验文件,所述第一校验文件包括所述安装文件内中的类文件和与所述类文件对应的校验信息;
由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件;
根据所述第二校验文件和所述机器码得到编译输出文件。
5.根据权利要求4所述的方法,其特征在于:
基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码和第一校验文件,包括:
基于所述编译环境通过所述指定编译器对所述安装文件执行编译操作,以得到所述安装文件的机器码、第一校验文件以及类文件初始化信息;
所述根据所述第二校验文件和所述机器码得到编译输出文件,包括:
将所述第二校验文件、所述机器码和所述类文件初始化信息打包成所述编译输出文件。
6.根据权利要求4所述的方法,其特征在于,所述由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件,包括:
由所述第一校验文件中去除所有类文件,以得到第二校验文件。
7.根据权利要求4所述的方法,其特征在于,所述由所述第一校验文件中去除所有类文件中的至少部分类文件,以得到第二校验文件,包括:
将所有类文件按照预设规则进行整理,以得到整理后的类文件;
将所述第一校验文件与所述整理后的类文件做差分处理,以去除所述第一校验文件中的所有类文件中的至少部分类文件,经差分处理后的第一校验文件作为第二校验文件。
8.一种应用安装方法,其特征在于,应用于用户终端,所述方法包括:
向服务器发送目标应用程序的下载请求;
获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;
根据所述安装文件和所述编译输出文件安装所述目标应用程序。
9.根据权利要求8所述的方法,其特征在于,所述编译输出文件包括第二校验文件,所述第二校验文件为所述服务器由第一校验文件中去除所有类文件中的至少部分类文件而得到的,所述第一校验文件包括所述安装文件内中的类文件和与所述类文件对应的校验信息,所述根据所述安装文件和所述编译输出文件安装所述目标应用程序,包括:
由所述安装文件内获取类文件;
根据所获取的类文件将所述第二校验文件还原为所述第一校验文件;
根据所述安装文件、所述机器码和所述第一校验文件安装所述目标应用程序。
10.一种应用安装装置,其特征在于,应用于服务器,所述装置包括:
获取单元,用于获取用户终端发送的目标应用程序的下载请求;
查找单元,用于基于所述下载请求获取所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;
发送单元,用于将所述安装文件和与所述安装文件对应的编译输出文件发送至所述用户终端,指示所述用户终端根据所述安装文件和所述编译输出文件安装所述目标应用程序。
11.一种应用安装装置,其特征在于,应用于用户终端,所述装置包括:
请求单元,用于向服务器发送目标应用程序的下载请求;
确定单元,用于获取所述服务器基于所述下载请求发送的所述目标应用程序的安装文件和与所述安装文件对应的编译输出文件,其中,所述编译输出文件包括安装文件的机器码;
安装单元,用于根据所述安装文件和所述编译输出文件安装所述目标应用程序。
12.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行如权利要求1-7任一项所述的方法。
13.一种计算机可读介质,其特征在于,所述计算机可读介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行权利要求1-7任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595405.6A CN112631622A (zh) | 2020-12-29 | 2020-12-29 | 应用安装方法、装置、服务器及计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011595405.6A CN112631622A (zh) | 2020-12-29 | 2020-12-29 | 应用安装方法、装置、服务器及计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112631622A true CN112631622A (zh) | 2021-04-09 |
Family
ID=75287244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011595405.6A Pending CN112631622A (zh) | 2020-12-29 | 2020-12-29 | 应用安装方法、装置、服务器及计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631622A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094051A (zh) * | 2021-04-27 | 2021-07-09 | 网易传媒科技(北京)有限公司 | 应用程序的构建方法、装置、设备和介质 |
CN113568634A (zh) * | 2021-06-28 | 2021-10-29 | 荣耀终端有限公司 | 应用优化的处理方法及处理装置 |
CN113885870A (zh) * | 2021-08-27 | 2022-01-04 | 荣耀终端有限公司 | 应用程序更新方法、电子设备、终端设备及系统 |
CN115543351A (zh) * | 2022-01-29 | 2022-12-30 | 荣耀终端有限公司 | 应用程序安装方法和电子设备 |
CN116088888A (zh) * | 2022-07-22 | 2023-05-09 | 荣耀终端有限公司 | 应用程序更新方法及相关装置 |
WO2024104203A1 (zh) * | 2022-11-17 | 2024-05-23 | 蔚来移动科技有限公司 | 应用程序的配置文件获取及应用程序的安装方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101957903A (zh) * | 2010-09-13 | 2011-01-26 | 中兴通讯股份有限公司 | 一种保护类文件的方法和装置 |
KR20110081719A (ko) * | 2010-01-08 | 2011-07-14 | 한국과학기술연구원 | 내장형 자바시스템을 위한 인스톨-타임 컴파일러 프로그램을 기록한 컴퓨터 판독가능한 기록매체 |
CN105100191A (zh) * | 2015-05-22 | 2015-11-25 | 华为技术有限公司 | 一种云编译实现Java应用安装的方法、装置及系统 |
JP2016014949A (ja) * | 2014-07-01 | 2016-01-28 | 株式会社エクサ | Java開発支援プログラム |
CN105843635A (zh) * | 2016-03-01 | 2016-08-10 | 乐视云计算有限公司 | Android设备的应用程序本地化安装方法和装置 |
CN110780881A (zh) * | 2019-11-05 | 2020-02-11 | 杭州安恒信息技术股份有限公司 | 一种软件包制作方法、装置和电子设备 |
CN111367510A (zh) * | 2020-02-24 | 2020-07-03 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种安卓功能模块开发的方法及装置 |
-
2020
- 2020-12-29 CN CN202011595405.6A patent/CN112631622A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110081719A (ko) * | 2010-01-08 | 2011-07-14 | 한국과학기술연구원 | 내장형 자바시스템을 위한 인스톨-타임 컴파일러 프로그램을 기록한 컴퓨터 판독가능한 기록매체 |
CN101957903A (zh) * | 2010-09-13 | 2011-01-26 | 中兴通讯股份有限公司 | 一种保护类文件的方法和装置 |
JP2016014949A (ja) * | 2014-07-01 | 2016-01-28 | 株式会社エクサ | Java開発支援プログラム |
CN105100191A (zh) * | 2015-05-22 | 2015-11-25 | 华为技术有限公司 | 一种云编译实现Java应用安装的方法、装置及系统 |
CN105843635A (zh) * | 2016-03-01 | 2016-08-10 | 乐视云计算有限公司 | Android设备的应用程序本地化安装方法和装置 |
CN110780881A (zh) * | 2019-11-05 | 2020-02-11 | 杭州安恒信息技术股份有限公司 | 一种软件包制作方法、装置和电子设备 |
CN111367510A (zh) * | 2020-02-24 | 2020-07-03 | 腾讯音乐娱乐科技(深圳)有限公司 | 一种安卓功能模块开发的方法及装置 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113094051A (zh) * | 2021-04-27 | 2021-07-09 | 网易传媒科技(北京)有限公司 | 应用程序的构建方法、装置、设备和介质 |
CN113568634A (zh) * | 2021-06-28 | 2021-10-29 | 荣耀终端有限公司 | 应用优化的处理方法及处理装置 |
CN113885870A (zh) * | 2021-08-27 | 2022-01-04 | 荣耀终端有限公司 | 应用程序更新方法、电子设备、终端设备及系统 |
CN115543351A (zh) * | 2022-01-29 | 2022-12-30 | 荣耀终端有限公司 | 应用程序安装方法和电子设备 |
CN115543351B (zh) * | 2022-01-29 | 2023-09-12 | 荣耀终端有限公司 | 应用程序安装方法和电子设备 |
CN116088888A (zh) * | 2022-07-22 | 2023-05-09 | 荣耀终端有限公司 | 应用程序更新方法及相关装置 |
CN116088888B (zh) * | 2022-07-22 | 2023-10-31 | 荣耀终端有限公司 | 应用程序更新方法及相关装置 |
WO2024104203A1 (zh) * | 2022-11-17 | 2024-05-23 | 蔚来移动科技有限公司 | 应用程序的配置文件获取及应用程序的安装方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112631622A (zh) | 应用安装方法、装置、服务器及计算机可读介质 | |
EP3128421B1 (en) | Method, device, and system for achieving java application installation by cloud compilation | |
US10296323B2 (en) | System and method for fast initial and incremental deployment of apps | |
CN108897562B (zh) | 安装包更新方法、装置、介质以及设备 | |
CN107967139B (zh) | 游戏的热更新方法及装置 | |
CN105786538B (zh) | 基于安卓系统的软件升级方法和装置 | |
CN104375849A (zh) | 加载内核的方法及装置 | |
CN104991793A (zh) | 一种用于应用程序分包的方法、装置以及系统 | |
CN104360871A (zh) | 一种手机游戏安装快速启动方法 | |
CN112052013B (zh) | 软件包的生成方法及装置、存储介质、电子装置 | |
CN106325847B (zh) | 基于iOS平台获取应用程序功能的方法和装置 | |
CN111740948B (zh) | 数据包发布方法、动态更新方法、装置、设备及介质 | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
CN105302587A (zh) | 数据更新方法及装置 | |
CN107239309B (zh) | 补丁生成方法及装置、更新方法、电子设备、存储介质 | |
CN111316230B (zh) | 一种补丁包生成方法及设备 | |
WO2021115177A1 (zh) | 应用安装方法、装置、终端设备、服务器及存储介质 | |
CN110597542A (zh) | 软件自动ota升级方法及装置、电子设备 | |
CN109800030B (zh) | 一种应用程序运行方法、装置及终端 | |
CN110532016B (zh) | 版本管理方法、版本更新方法和版本管理系统 | |
CN112286586B (zh) | 一种插件的配置方法及相关设备 | |
KR101117165B1 (ko) | 이기종 운영체제 계층 모듈에서 동작하는 웹기반어플리케이션의 연동이 가능한 모바일 단말기용 웹 플랫폼 유닛 | |
CN116755713A (zh) | 应用程序的生成方法、装置、设备及存储介质 | |
CN105740298A (zh) | 文件处理方法、装置及服务端设备 | |
CN107423093B (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 |