一种应用程序的编译方法和装置与流程

文档序号:36242115发布日期:2023-12-02 04:55阅读:37来源:国知局
本技术涉及终端领域,尤其涉及一种应用程序的编译方法和装置。
背景技术
::1、应用程序(application,app)是运行在虚拟机中的,虚拟机对应用程序代码的执行包括两部分。第一部分是将源码编译为字节码,又称为前端编译,此时进行的工作主要是对词法、语法、语义进行分析。第二部分是将字节码编译为机器码进行解释执行。但由于解释执行的效率较低,对用户体验有严重影响,为解决这一问题dex2oat(dalvik excutablefile to optimized art file)应运而生。dex2oat可以提前将应用程序的字节码编译为机器码,因此在实际运行时可直接执行机器码,从而大大提升了应用程序的运行效率。2、dex2oat包括多个不同的编译模式,按照执行后的应用性能的高低进行排序,目前常见的编译模式包括:speed的编译模式、speed-profile的编译模式、verify的编译模式等。其中,speed的编译模式对应用程序代码全部进行编译优化,得到的产物性能好,但生成文件大、耗时长、消耗手机存储空间多。speed-profile的编译模式依赖于profile文件,可以对应用程序的热点函数进行编译优化。verify的编译模式只对应用程序的dex文件进行校验。verify的编译模式在编译性能上相对于speed-profile的编译模式较差。3、在一些情况下,电子设备(例如,android手机)可以采用后台空闲编译优化的策略,即在电子设备空闲时触发speed-profile的编译模式对应用程序进行编译优化。而speed-profile的编译模式必须依赖于profile文件,当没有profile文件时,speed-profile的编译模式会降级为verify的编译模式。目前profile文件的来源可以包括以下两种:1)用户在应用市场(例如,华为应用市场或google(谷歌)应用市场)安装应用程序时,应用市场提供数据元(dm,data meta)文件,dm文件包含profile信息;2)电子设备首次开机/恢复出厂设置后,或电子设备进行ota升级后,或应用程序安装后,可以在用户使用应用程序的过程中对应用程序的热点函数进行记录以生成profile文件。4、但以上profile文件来源存在着相应的不足:1)dm文件的生成往往具有滞后性,需要应用程序实际运行一段时间后应用市场才会提供给用户。对于刚上线或经常更新的应用程序,应用市场无法及时提供dm文件,或者由于一些原因导致dm文件失效或未配置,因此无法触发speed-profile的编译模式进行编译优化,应用程序性能较低;2)虽然应用市场配置了dm文件,但是该dm文件可能存在热点函数配置不全或不准确的问题,即使触发speed-profile的编译模式进行编译优化,应用程序性能仍然较低;3)用户首次开机/系统升级后,仅能触发verify的编译模式对应用程序进行编译优化,若用户一直未使用过相应的应用程序(系统应用程序和/或第三方应用程序),则无法生成profile文件,从而在后台空闲编译优化时无法触发speed-profile的编译模式进行编译优化,应用程序的性能较低。4)应用程序从应用市场安装后,若用户一直未使用过该应用程序,则无法生成profile文件,从而在后台空闲编译优化时无法触发speed-profile的编译模式进行编译优化,应用程序的性能较低。技术实现思路1、本技术实施例提供一种应用程序的编译方法和装置,能够保证应用程序在电子设备空闲触发编译的场景中获取到基准配置文件,并可以根据基准配置文件进行编译优化,可以提高应用程序的性能,从而提高用户使用应用程序时的用户体验。2、第一方面,本技术实施例提供一种应用程序的编译方法,包括:电子设备在目标编译场景下,确定目标应用程序的安装包是否包括基准配置文件,基准配置文件用于指示目标应用程序的安装包中的热点函数;其中,目标编译场景包括电子设备在空闲状态触发编译的场景;若确定目标应用程序的安装包中包括基准配置文件,电子设备基于第一编译模式对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理。3、基于本技术实施例提供的方法,在目标编译场景(电子设备空闲触发编译的场景)中,电子设备可以获取目标应用程序的baseline profile文件(基准配置文件),并基于第一编译模式(speed-profile(have profile)的编译模式)对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理。编译完成后,电子设备运行该目标应用程序时,可以直接调用编译优化文件,无需对目标应用程序的dex文件进行即时编译,节省了编译时间,提高了电子设备对应用程序的执行效率,使得应用程序的运行更加流畅,可以提高用户体验。本技术提供的应用程序的编译方法无需依赖应用市场为应用程序提供dm文件(dm文件中包括profile文件),也无需等待应用程序运行时对应用程序的热点函数进行记录以生成profile文件。即使用户一直未使用过目标应用程序导致无法在应用程序运行时对应用程序的热点函数进行记录以生成profile文件,也可以触发speed-profile(have profile)的编译模式对应用程序进行编译优化,可以提高应用程序的性能(应用程序的启动、滑动等性能),从而为用户带来更好的体验。4、在一种可能的实现方式中,目标编译场景还包括电子设备首次开机触发编译的场景、电子设备进行空中下载ota升级触发编译的场景。需要说明的是,在电子设备首次开机/恢复出场设置后的场景或电子设备进行ota升级的场景(ota升级开机过程或ota升级进入桌面后中)中,根据baseline profile文件在电子设备端以speed-profile(have profile)的编译模式对目标应用程序进行编译优化,相较于在预置阶段(电子设备烧录操作系统、系统应用程序以及一些三方应用程序的阶段)以speed-profile(have profile)的编译模式对目标应用程序进行编译优化更加节省存储空间。这是由于baseline profile文件的体积相较于编译优化文件(预置阶段以speed-profile(have profile)的编译模式对目标应用程序进行编译优化得到的编译优化文件)的体积更小,可以减少电子设备预置的文件数量,节省电子设备的存储空间。5、在一种可能的实现方式中,该方法还包括:电子设备在目标应用程序运行时对目标应用程序的热点函数进行记录,根据记录的热点函数生成第一配置文件;电子设备基于第一编译模式对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理包括:电子设备基于第一编译模式对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数和第一配置文件指示的热点函数进行编译处理。即在目标编译场景中,可以结合baseline profile文件和电子设备生成的profile文件得到更加准确和全面的热点函数,以speed-profile(have profile)的编译模式对应用程序进行编译优化。相比仅根据电子设备生成的profile文件进行speed-profile的编译模式的编译优化,根据baseline profile文件和电子设备生成的profile文件进行speed-profile的编译模式的编译优化可以更好地提升应用程序性能,从而为用户带来更好的体验。6、在一种可能的实现方式中,电子设备确定目标应用程序的安装包是否包括基准配置文件包括:电子设备解析目标应用程序的安装包中的清单文件,清单文件中设置第一标志位,第一标志位用于指示目标应用程序的安装包中是否包含基准配置文件;读取第一标志位,若第一标志位为真,代表目标应用程序的安装包中包含基准配置文件,若第一标志位为假,代表目标应用程序的安装包中不包含基准配置文件。即电子设备可以根据清单文件中的第一标志位确定目标应用程序的安装包中是否包含基准配置文件,若目标应用程序的安装包中包含基准配置文件,电子设备可以基于第一编译模式(speed-profile(haveprofile)的编译模式)对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理。这样,可以提升目标应用程序首次启动时的启动、滑动等性能,可以为用户带来更好的体验。7、在一种可能的实现方式中,电子设备确定目标应用程序的安装包是否包括基准配置文件包括:电子设备在目标应用程序的安装目录中检测基准配置文件是否存在。即电子设备可以主动检查目标应用程序的安装包中是否包含基准配置文件,若目标应用程序的安装包中包含基准配置文件,电子设备可以基于第一编译模式(speed-profile(haveprofile)的编译模式)对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理。这样,可以提升目标应用程序首次启动时的启动、滑动等性能,可以为用户带来更好的体验。8、在一种可能的实现方式中,电子设备基于第一编译模式对目标应用程序的安装包中的dex文件进行校验,并对目标应用程序的安装包中的热点函数进行编译处理之前,方法还包括:电子设备检查第一配置目录是否存在,若第一配置目录不存在则创建第一配置目录;电子设备将基准配置文件从安装目录移动至第一配置目录下;电子设备设置更新第二标志位,第二标志位用于触发对基准配置文件进行合并处理,电子设备将第一配置目录下的基准配置文件移动至第二配置目录下。9、第二方面,本技术提供一种芯片系统,该芯片系统包括一个或多个接口电路和一个或多个处理器。该接口电路和处理器通过线路互联。10、上述芯片系统可以应用于包括通信模块和存储器的电子设备。该接口电路用于从电子设备的存储器接收信号,并向处理器发送接收到的信号,该信号包括存储器中存储的计算机指令。当处理器执行该计算机指令时,电子设备可以执行如第一方面及其任一种可能的设计方式所述的方法。11、第三方面,本技术提供一种计算机可读存储介质,该计算机可读存储介质包括计算机指令。当计算机指令在电子设备(如手机)上运行时,使得该电子设备执行如第一方面及其任一种可能的设计方式所述的方法。12、第四方面,本技术提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面及其任一种可能的设计方式所述的方法。13、第五方面,本技术实施例提供了一种应用程序的编译装置,包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时使得所述装置实现上述第一方面及其任一种可能的设计方式所述的方法。所述装置可以为电子设备;或可以为电子设备中的一个组成部分,如芯片。14、第六方面,本技术实施例提供了一种应用程序的编译装置,所述装置可以按照功能划分为不同的逻辑单元或模块,各单元或模块执行不同的功能,以使得所述装置执行上述第一方面及其任一种可能的设计方式所述的方法。15、第七方面,本技术实施例提供了一种应用程序的编译系统,包括电子设备和应用服务器,所述电子设备和应用服务器分别执行部分步骤,相互配合以实现上述第一方面及其任一种可能的设计方式所述的方法。16、可以理解地,上述提供的第二方面所述的芯片系统,第三方面所述的计算机可读存储介质,第四方面所述的计算机程序产品及第五方面、第六方面所述的装置及第七方面所述的系统所能达到的有益效果,可参考如第一方面及其任一种可能的设计方式中的有益效果,此处不再赘述。17、基于本技术实施例提供的方法,在目标编译场景(例如,电子设备空闲触发编译的场景)中,电子设备可以获取目标应用程序的baseline profile文件(基准配置文件),并基于第一编译模式(speed-profile(have profile)的编译模式)对目标应用程序的安装包中的dex文件进行校验,并对基准配置文件指示的热点函数进行编译处理。编译完成后,电子设备运行该目标应用程序时,可以直接调用编译优化文件,无需对目标应用程序的dex文件进行即时编译,节省了编译时间,提高了电子设备对应用程序的执行效率,使得应用程序的运行更加流畅,可以提高用户体验。本技术提供的应用程序的编译方法无需依赖应用市场为应用程序提供dm文件(dm文件中包括profile文件),也无需等待应用程序运行时对应用程序的热点函数进行记录以生成profile文件。即使用户一直未使用过目标应用程序导致无法在应用程序运行时对应用程序的热点函数进行记录以生成profile文件,也可以触发speed-profile(have profile)的编译模式对应用程序进行编译优化,可以提高应用程序的性能(应用程序的启动、滑动等性能),从而为用户带来更好的体验。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1