CN114341800A - 用于在电子设备中的应用更新之后提高运行时性能的方法和装置 - Google Patents
用于在电子设备中的应用更新之后提高运行时性能的方法和装置 Download PDFInfo
- Publication number
- CN114341800A CN114341800A CN202080061838.5A CN202080061838A CN114341800A CN 114341800 A CN114341800 A CN 114341800A CN 202080061838 A CN202080061838 A CN 202080061838A CN 114341800 A CN114341800 A CN 114341800A
- Authority
- CN
- China
- Prior art keywords
- application
- information
- metadata
- electronic device
- update
- 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
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/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- 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
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- 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
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
- G06F9/4451—User profiles; Roaming
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
公开了一种用于在更新安装在电子设备中的应用时提高运行时性能的方法和装置。根据各种实施例的电子设备可以包括:通信电路,被配置为执行无线电通信;至少一个处理器,可操作地连接到通信电路;和存储器,可操作地连接到处理器,其中,存储器存储指令,该指令在被执行时使得处理器:检测应用的更新;基于检测到应用的更新,获得用于更新应用的更新文件;在安装应用时,获得先前与应用相关联地记录的第一信息和与应用的更新文件相关的第二信息;以及基于在第一信息和第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
Description
技术领域
本公开涉及一种用于当安装在电子设备中的应用被更新时提高运行时性能的方法和装置。
背景技术
电子设备可以包括用于控制一个或多个资源的操作***(operating system,OS),并且可以包括可在操作***中执行的应用。操作***可以是例如AndroidTM、iOSTM、WindowsTM、SymbianTM、TizenTM、BadaTM等。根据实施例,AndroidTM提供了新的运行时(runtime),称为安卓运行时(Android runtime,ART),以克服传统上使用的达尔维克(Dalvik)虚拟机(virtual machine,VM)的限制。例如,Dalvik VM使用即时(just-in-time,JIT)编译方案,而初始ART使用提前(ahead-of-time,AOT)编译方案。然而,由于每个方案具有的限制,最近使用了JIT编译方案和AOT编译方案的混合方案。例如,当安装应用时,AOT编译方案需要大量的编译时间,并且可能附加地请求用于存储经由编译获得的产物(例如,*.odex、*.vdex、*.art)的存储空间。例如,JIT编译方案可以在运行时期间基于本机代码执行编译,从而需要少量的安装时间。然而,如果在释放缓存数据的存储器时检测到重复,则需要重新转换,并且在操作应用时会发生对应于重新转换所花费的时间量的时间的延迟,因此,执行JIT编译可能需要很长时间。
相反,混合方案可以是使用两种方案来加强JIT和AOT的优势的方案。例如,可以应用一种方案,该方案在初始安装应用时使用JIT来减少安装时间和存储容量,并且在操作应用时直接使用根据ART的对应的编译代码。
电子设备可以经由各种应用商店(在下文中,称为“app商店”)(例如,PlaystoreTM)针对安装在电子设备中的应用周期性地执行应用更新。根据实施例,如果应用的简档(profile)被更新,则电子设备可以收集更新的简档,并且可以将其传送到app商店(或云服务器)。基于从电子设备接收的简档(或信息),app商店可以产生适用于对应的应用的公共简档。在应用更新的情况下,app商店可以向电子设备一起传送应用的更新文件(例如,安装文件(例如,*.apk文件))和公共简档(例如,*.dm文件)。电子设备可以基于从app商店传送的应用的更新文件和公共简档来执行AOT编译,并且可以将本机代码存储为文件。
如果电子设备(或操作***)(例如,AndroidTM)经由app商店存储应用的简档,则电子设备可以基于存储的简档执行AOT编译,并且可以将本机代码存储为文件。存储在电子设备中的简档可以是当更新的应用版本被许多用户使用并且与之相关联的信息被app商店收集时产生的信息。因此,如果电子设备不具有与新更新的应用版本或数据收集不充分的应用相关联的相关简档,则当电子设备发送下载应用的请求时,app商店可能不会将对应的简档与应用一起传送。此外,由于app商店提供基于来自各种不同用户的信息而产生的简档,与来自使用电子设备的用户的信息相反,经由app商店提供的简档可能没有精确地与用户模式相同。
一般地,在应用更新的情况下,电子设备可以删除(或移除)简档和本机代码,它们是在使用更新前的应用时根据用户模式产生的。因此,由于根据与应用相关联的用户模式产生的简档和本机代码被删除,所以在应用更新之后,电子设备可能丢失与先前用户体验相关联的数据。与对应的应用相关联的使用历史不存在,因此,运行时性能恶化。此外,用户需要在充分分析和产生本机代码所需的时间期间等待,以确保性能与先前的性能相当。在这种情况下,时间不是标准化时间,可以因每个用户使用的方法而异。因此,当更新新的应用时,由于性能比之前更差,用户可能会感到不便。
以上信息作为背景信息提供仅为了帮助理解本公开。关于上述任何内容是否可以适用作为关于本公开的现有技术,没有做出确定,也没有做出断言。
发明内容
技术问题
本公开的实施例提供了一种方法和装置,用于当电子设备执行应用更新时,利用先前简档和字节码来提高运行时性能。
本公开的实施例提供了一种方法和装置,用于当电子设备例如在安卓运行时(ART)环境中执行应用更新时,通过利用基于用户的应用使用模式而先前存储(或产生)的简档和字节码来提高运行时性能。
本公开的实施例提供了一种方法和装置,用于维持根据用户的使用模式产生的现有简档,而不管从app商店传递的应用的公共简档(例如,*.dm文件)的存在,并且用于使用现有简档来处理应用更新。
本公开的实施例提供了一种方法和装置,用于如果在下载应用的过程中没有与应用一起从app商店传送简档,则原样维持基于用户模式产生的简档,以及用于使用随后产生的产物来识别简档是否被使用。
问题的解决方案
根据本公开的示例实施例,电子设备包括:通信电路,被配置为提供无线电通信;可操作地连接到通信电路的至少一个处理器;和可操作地连接到处理器的存储器,其中,存储器存储指令,该指令在被执行时使得处理器:检测应用的更新;基于检测到应用的更新,获得用于更新应用的更新文件;在安装应用时,获得先前与应用相关联地记录的第一信息和与应用的更新文件相关的第二信息;以及基于在第一信息和第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
根据本公开的示例实施例,电子设备的操作方法可以包括:检测应用的更新;基于检测到应用的更新,获得用于更新应用的更新文件;在安装应用时,获得先前与应用相关联地记录的第一信息和与应用的更新文件相关的第二信息;以及基于在第一信息和第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
为了解决上述问题,本公开的各种示例实施例可以包括存储用于在处理器中实施方法的程序的非暂时性计算机可读记录介质。
发明的有益效果
在根据各种实施例的电子设备及其操作方法中,当电子设备执行应用更新时,电子设备可以使用基于与应用相关联的用户使用模式先前存储的先前简档和字节码,并且可以提高运行时性能。根据各种实施例,电子设备可以维持根据用户的使用模式产生的先前简档,而不管从app商店传递的应用的公共简档(例如,*.dm文件)的存在,并且可以使用先前简档来处理应用更新。根据各种实施例,电子设备可以将要更新的应用的执行文件与先前应用的安装文件中的先前简档和执行文件(例如,dex文件)进行比较,并且可以对于没有变化的方法和类维持现有信息。根据各种实施例,电子设备可以基于现有信息产生与应用相关联的新简档,并且可以在执行应用更新时使用应用的新产生的简档信息。
根据各种实施例,电子设备可以基于新产生的简档来产生用于热方法(hotmethod)的本机代码,并且可以产生与热类(hot class)相关联的应用图像文件(例如,*.art),以便为用户提供及时的运行时性能,这比之前更快。根据各种实施例,在执行应用更新之后,电子设备可以提供用户体验,该用户体验使得用户能够立即使用具有根据用户先前使用的模式而应用的运行时性能的应用,尽管电子设备附加地使用更新的应用。
附图说明
结合附图,从以下详细描述中,本公开的特定实施例的上述和其他方面、特征和优点将变得更加明显,在附图中:
图1示出根据实施例的网络环境中的示例电子设备;
图2是示出根据各种实施例的电子设备的示例功能模块的图;
图3是示出根据各种实施例的操作电子设备的示例方法的流程图;
图4是示出根据各种实施例的操作电子设备的示例方法的流程图;
图5是示出根据各种实施例的由电子设备产生简档的示例方法的流程图;
图6是示出根据各种实施例的由电子设备执行编译的示例方法的流程图;
图7是示出根据各种实施例的电子设备基于先前简档产生新简档的示例的图;
图8是示出根据各种实施例的由电子设备产生的示例元数据的图;
图9是示出根据各种实施例的由电子设备执行元数据匹配的示例的图;和
图10是示出根据各种实施例的由电子设备产生元数据的示例混淆操作的图;
图11A是示出根据各种实施例的由电子设备产生元数据的示例混淆操作的图;并且
图11B是示出根据各种实施例的由电子设备产生元数据的示例混淆操作的图。
具体实施方式
图1是示出根据各种实施例的网络环境100中的电子设备101的框图。
参照图1,网络环境100中的电子设备101可经由第一网络198(例如,短距离无线通信网络)与电子设备102进行通信,或者经由第二网络199(例如,长距离无线通信网络)与电子设备104或服务器108进行通信。根据实施例,电子设备101可经由服务器108与电子设备104进行通信。根据实施例,电子设备101可包括处理器120、存储器130、输入装置150、声音输出装置155、显示装置160、音频模块170、传感器模块176、接口177、触觉模块179、相机模块180、电力管理模块188、电池189、通信模块190、用户识别模块(SIM)196或天线模块197。在一些实施例中,可从电子设备101中省略所述部件中的至少一个(例如,显示装置160或相机模块180),或者可将一个或更多个其它部件添加到电子设备101中。在一些实施例中,可将所述部件中的一些部件实现为单个集成电路。例如,可将传感器模块176(例如,指纹传感器、虹膜传感器、或照度传感器)实现为嵌入在显示装置160(例如,显示器)中。
处理器120可运行例如软件(例如,程序140)来控制电子设备101的与处理器120连接的至少一个其它部件(例如,硬件部件或软件部件),并可执行各种数据处理或计算。根据一个实施例,作为所述数据处理或计算的至少部分,处理器120可将从另一部件(例如,传感器模块176或通信模块190)接收到的命令或数据加载到易失性存储器132中,对存储在易失性存储器132中的命令或数据进行处理,并将结果数据存储在非易失性存储器134中。根据实施例,处理器120可包括主处理器121(例如,中央处理器(CPU)或应用处理器(AP))以及与主处理器121在操作上独立的或者相结合的辅助处理器123(例如,图形处理单元(GPU)、图像信号处理器(ISP)、传感器中枢处理器或通信处理器(CP))。
另外地或者可选择地,辅助处理器123可被适配为比主处理器121耗电更少,或者被适配为具体用于指定的功能。可将辅助处理器123实现为与主处理器121分离,或者实现为主处理器121的部分。在主处理器121处于未激活(例如,睡眠)状态时,辅助处理器123可控制与电子设备101(而非主处理器121)的部件之中的至少一个部件(例如,显示装置160、传感器模块176或通信模块190)相关的功能或状态中的至少一些,或者在主处理器121处于激活状态(例如,运行应用)时,辅助处理器123可与主处理器121一起来控制与电子设备101的部件之中的至少一个部件(例如,显示装置160、传感器模块176或通信模块190)相关的功能或状态中的至少一些。根据实施例,可将辅助处理器123(例如,图像信号处理器或通信处理器)实现为在功能上与辅助处理器123相关的另一部件(例如,相机模块180或通信模块190)的部分。
存储器130可存储由电子设备101的至少一个部件(例如,处理器120或传感器模块176)使用的各种数据。所述各种数据可包括例如软件(例如,程序140)以及针对与其相关的命令的输入数据或输出数据。存储器130可包括易失性存储器132或非易失性存储器134。
可将程序140作为软件存储在存储器130中,并且程序140可包括例如操作***(OS)142、中间件144或应用146。
输入装置150可从电子设备101的外部(例如,用户)接收将由电子设备101的其它部件(例如,处理器120)使用的命令或数据。输入装置150可包括例如麦克风、鼠标、键盘或数字笔(例如,手写笔)。
声音输出装置155可将声音信号输出到电子设备101的外部。声音输出装置155可包括例如扬声器或接收器。扬声器可用于诸如播放多媒体或播放唱片的通用目的,接收器可用于呼入呼叫。根据实施例,可将接收器实现为与扬声器分离,或实现为扬声器的部分。
显示装置160可向电子设备101的外部(例如,用户)视觉地提供信息。显示装置160可包括例如显示器、全息装置或投影仪以及用于控制显示器、全息装置和投影仪中的相应一个的控制电路。根据实施例,显示装置160可包括被适配为检测触摸的触摸电路或被适配为测量由触摸引起的力的强度的传感器电路(例如,压力传感器)。
音频模块170可将声音转换为电信号,反之亦可。根据实施例,音频模块170可经由输入装置150获得声音,或者经由声音输出装置155或与电子设备101直接(例如,有线地)连接或无线连接的外部电子设备(例如,电子设备102)的耳机输出声音。
传感器模块176可检测电子设备101的操作状态(例如,功率或温度)或电子设备101外部的环境状态(例如,用户的状态),然后产生与检测到的状态相应的电信号或数据值。根据实施例,传感器模块176可包括例如手势传感器、陀螺仪传感器、大气压力传感器、磁性传感器、加速度传感器、握持传感器、接近传感器、颜色传感器、红外(IR)传感器、生物特征传感器、温度传感器、湿度传感器或照度传感器。
接口177可支持将用来使电子设备101与外部电子设备(例如,电子设备102)直接(例如,有线地)或无线连接的一个或更多个特定协议。根据实施例,接口177可包括例如高清晰度多媒体接口(HDMI)、通用串行总线(USB)接口、安全数字(SD)卡接口或音频接口。
连接端178可包括连接器,其中,电子设备101可经由所述连接器与外部电子设备(例如,电子设备102)物理连接。根据实施例,连接端178可包括例如HDMI连接器、USB连接器、SD卡连接器或音频连接器(例如,耳机连接器)。
触觉模块179可将电信号转换为可被用户经由他的触觉或动觉识别的机械刺激(例如,振动或运动)或电刺激。根据实施例,触觉模块179可包括例如电机、压电元件或电刺激器。
相机模块180可捕获静止图像或运动图像。根据实施例,相机模块180可包括一个或更多个透镜、图像传感器、图像信号处理器或闪光灯。
电力管理模块188可管理对电子设备101的供电。根据实施例,可将电力管理模块188实现为例如电力管理集成电路(PMIC)的至少部分。
电池189可对电子设备101的至少一个部件供电。根据实施例,电池189可包括例如不可再充电的原电池、可再充电的蓄电池、或燃料电池。
通信模块190可支持在电子设备101与外部电子设备(例如,电子设备102、电子设备104或服务器108)之间建立直接(例如,有线)通信信道或无线通信信道,并经由建立的通信信道执行通信。通信模块190可包括能够与处理器120(例如,应用处理器(AP))独立操作的一个或更多个通信处理器,并支持直接(例如,有线)通信或无线通信。根据实施例,通信模块190可包括无线通信模块192(例如,蜂窝通信模块、短距离无线通信模块或全球导航卫星***(GNSS)通信模块)或有线通信模块194(例如,局域网(LAN)通信模块或电力线通信(PLC)模块)。这些通信模块中的相应一个可经由第一网络198(例如,短距离通信网络,诸如蓝牙、无线保真(Wi-Fi)直连或红外数据协会(IrDA))或第二网络199(例如,长距离通信网络,诸如蜂窝网络、互联网、或计算机网络(例如,LAN或广域网(WAN)))与外部电子设备进行通信。可将这些各种类型的通信模块实现为单个部件(例如,单个芯片),或可将这些各种类型的通信模块实现为彼此分离的多个部件(例如,多个芯片)。无线通信模块192可使用存储在用户识别模块196中的用户信息(例如,国际移动用户识别码(IMSI))识别并验证通信网络(诸如第一网络198或第二网络199)中的电子设备101。
天线模块197可将信号或电力发送到电子设备101的外部(例如,外部电子设备)或者从电子设备101的外部(例如,外部电子设备)接收信号或电力。根据实施例,天线模块197可包括天线,所述天线包括辐射元件,所述辐射元件由形成在基底(例如,PCB)中或形成在基底上的导电材料或导电图案构成。根据实施例,天线模块197可包括多个天线。在这种情况下,可由例如通信模块190(例如,无线通信模块192)从所述多个天线中选择适合于在通信网络(诸如第一网络198或第二网络199)中使用的通信方案的至少一个天线。随后可经由所选择的至少一个天线在通信模块190和外部电子设备之间发送或接收信号或电力。根据实施例,除了辐射元件之外的另外的组件(例如,射频集成电路(RFIC))可附加地形成为天线模块197的一部分。
上述部件中的至少一些可经由外设间通信方案(例如,总线、通用输入输出(GPIO)、串行外设接口(SPI)或移动工业处理器接口(MIPI))相互连接并在它们之间通信地传送信号(例如,命令或数据)。
根据实施例,可经由与第二网络199连接的服务器108在电子设备101和外部电子设备104之间发送或接收命令或数据。电子设备102和电子设备104中的每一个可以是与电子设备101相同类型的装置,或者是与电子设备101不同类型的装置。
根据实施例,将在电子设备101运行的全部操作或一些操作可在外部电子设备102、外部电子设备104或服务器108中的一个或更多个运行。例如,如果电子设备101应该自动执行功能或服务或者应该响应于来自用户或另一装置的请求执行功能或服务,则电子设备101可请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分,而不是运行所述功能或服务,或者电子设备101除了运行所述功能或服务以外,还可请求所述一个或更多个外部电子设备执行所述功能或服务中的至少部分。接收到所述请求的所述一个或更多个外部电子设备可执行所述功能或服务中的所请求的所述至少部分,或者执行与所述请求相关的另外功能或另外服务,并将执行的结果传送到电子设备101。电子设备101可在对所述结果进行进一步处理的情况下或者在不对所述结果进行进一步处理的情况下将所述结果提供作为对所述请求的至少部分答复。为此,可使用例如云计算技术、分布式计算技术或客户机-服务器计算技术。
根据各种实施例的电子设备可以是各种类型的电子设备之一。电子设备可包括例如便携式通信装置(例如,智能电话)、计算机装置、便携式多媒体装置、便携式医疗装置、相机、可穿戴装置或家用电器。根据本公开的实施例,电子设备不限于以上所述的那些电子设备。
应该理解的是,本公开的各种实施例以及其中使用的术语并不意图将在此阐述的技术特征限制于具体实施例,而是包括针对相应实施例的各种改变、等同形式或替换形式。对于附图的描述,相似的参考标号可用来指代相似或相关的元件。将理解的是,与术语相应的单数形式的名词可包括一个或更多个事物,除非相关上下文另有明确指示。
如这里所使用的,诸如“A或B”、“A和B中的至少一个”、“A或B中的至少一个”、“A、B或C”、“A、B和C中的至少一个”以及“A、B或C中的至少一个”的短语中的每一个短语可包括在与所述多个短语中的相应一个短语中一起列举出的项的任意一项或所有可能组合。如这里所使用的,诸如“第1”和“第2”或者“第一”和“第二”的术语可用于将相应部件与另一部件进行简单区分,并且不在其它方面(例如,重要性或顺序)限制所述部件。将理解的是,在使用了术语“可操作地”或“通信地”的情况下或者在不使用术语“可操作地”或“通信地”的情况下,如果一元件(例如,第一元件)被称为“与另一元件(例如,第二元件)结合”、“结合到另一元件(例如,第二元件)”、“与另一元件(例如,第二元件)连接”或“连接到另一元件(例如,第二元件)”,则意味着所述一元件可与所述另一元件直接(例如,有线地)连接、与所述另一元件无线连接、或经由第三元件与所述另一元件连接。
如这里所使用的,术语“模块”可包括以硬件、软件或固件实现的单元,并可与其他术语(例如,“逻辑”、“逻辑块”、“部分”或“电路”)可互换地使用。模块可以是被适配为执行一个或更多个功能的单个集成部件或者是该单个集成部件的最小单元或部分。例如,根据实施例,可以以专用集成电路(ASIC)的形式来实现模块。
可将在此阐述的各种实施例实现为包括存储在存储介质(例如,内部存储器136或外部存储器138)中的可由机器(例如,电子设备101)读取的一个或更多个指令的软件(例如,程序140)。例如,在处理器的控制下,所述机器(例如,电子设备101)的处理器(例如,处理器120)可在使用或无需使用一个或更多个其它部件的情况下调用存储在存储介质中的所述一个或更多个指令中的至少一个指令并运行所述至少一个指令。这使得所述机器能够操作用于根据所调用的至少一个指令执行至少一个功能。所述一个或更多个指令可包括由编译器产生的代码或能够由解释器运行的代码。可以以非暂时性存储介质的形式来提供机器可读存储介质。其中,术语“非暂时性”仅意味着所述存储介质是有形装置,并且不包括信号(例如,电磁波),但是该术语并不在数据被半永久性地存储在存储介质中与数据被临时存储在存储介质中之间进行区分。
根据实施例,可在计算机程序产品中包括和提供根据本公开的各种实施例的方法。计算机程序产品可作为产品在销售者和购买者之间进行交易。可以以机器可读存储介质(例如,紧凑盘只读存储器(CD-ROM))的形式来发布计算机程序产品,或者可经由应用商店(例如,Play StoreTM)在线发布(例如,下载或上传)计算机程序产品,或者可直接在两个用户装置(例如,智能电话)之间分发(例如,下载或上传)计算机程序产品。如果是在线发布的,则计算机程序产品中的至少部分可以是临时产生的,或者可将计算机程序产品中的至少部分至少临时存储在机器可读存储介质(诸如制造商的服务器、应用商店的服务器或转发服务器的存储器)中。
根据各种实施例,上述部件中的每个部件(例如,模块或程序)可包括单个实体或多个实体。根据各种实施例,可省略上述部件中的一个或更多个部件,或者可添加一个或更多个其它部件。可选择地或者另外地,可将多个部件(例如,模块或程序)集成为单个部件。在这种情况下,根据各种实施例,该集成部件可仍旧按照与所述多个部件中的相应一个部件在集成之前执行一个或更多个功能相同或相似的方式,执行所述多个部件中的每一个部件的所述一个或更多个功能。根据各种实施例,由模块、程序或另一部件所执行的操作可顺序地、并行地、重复地或以启发式方式来执行,或者所述操作中的一个或更多个操作可按照不同的顺序来运行或被省略,或者可添加一个或更多个其它操作。
图2是示出根据各种实施例的电子设备的示例功能模块的图。
如图2所示,图2示出了在各种实施例中执行(或处理)与电子设备的应用的更新相关的功能的功能模块200的示例。根据各种实施例,功能模块200可以被实施为包含在包括处理电路的至少一个处理器(例如,图1的处理器120)中的硬件模块和/或软件模块。根据实施例,图2的功能模块200可以作为处理器120的一部分操作,和/或可以是独立于处理器120操作的单独硬件组件。根据实施例,图2的功能模块200可以是软件(例如,图1的程序140)。例如,软件形式的功能模块200可以以命令(或指令)的形式存储在存储器(例如,图1的存储器130)中,并且功能模块200的操作可以由至少一个处理器(例如,图1的处理器120)执行。
参考图2,功能模块200可以包括更新监视器(例如,包括处理电路和/或可执行程序元件)210、包(package)管理器(例如,包括处理电路和/或可执行程序元件)220、简档匹配单元(例如,包括处理电路和/或可执行程序元件)230和/或简档管理器(例如,包括处理电路和/或可执行程序元件)240中的至少一个。
根据实施例,更新监视器210可以监视是否对安装在电子设备101中的应用执行了更新。根据实施例,更新监视器210可以至少基于app商店或其他方法(例如,基于安卓调试桥(Android debug bridge,ADB)命令执行的安装)来检测至少一个应用的更新(例如,包括应用安装)。根据实施例,基于检测到应用更新,更新监视器210可以经由通信电路(例如,图1的无线电通信模块192)从app商店接收(或下载)更新文件(例如,安装文件(例如,安卓应用包(Android application package,apk)文件))。根据实施例,可以使用预定的编程语言(例如,Java语言)来开发应用(例如,安卓应用),并且可以使用软件开发工具包(softwaredevelopment kit,SDK)来产生资源文件(例如,Java源代码、布局xml文件、图像文件、音频文件、动画、菜单、样式和/或颜色)作为更新文件(例如,apk文件)。更新文件可以是安卓包,其扩展名为“.apk”。例如,单个apk文件可以是单个应用(或app),并且可以是要安装在电子设备101中的文件。
根据实施例,包管理器220可以验证应用。根据实施例,包管理器220可以检查经由更新监视器210接收的更新文件(例如,与要更新的应用相关的更新文件)的有效性。根据实施例,包管理器220可以基于售卖(vending)来执行验证,和/或可以基于设备安全性来执行验证。根据实施例,如果对应用的验证完成,则包管理器220可以将针对应用更新的请求传送到简档匹配单元230。根据实施例,包管理器220可以将应用更新请求传送到安卓运行时(ART)。在安装应用的过程中,应用更新请求在被传送到运行时(例如,安卓运行时(ART))之前被传送到简档匹配单元230。
根据实施例,简档匹配单元230可以执行当前更新文件(例如,与应用更新相关联地从app商店接收(或下载)的更新文件)与根据与用户的应用使用相关联的用户模式而记录(或存储)的先前简档(例如,*.prof文件)和先前更新文件(例如,先前*.apk文件)中的字节码(例如,应用的执行文件(例如,dex信息))的匹配。根据实施例,在从运行时(例如,ART)请求应用更新之前,简档匹配单元230可以将与目标应用相关的当前更新文件与根据与应用相关联的用户使用模式而记录(或存储)的先前简档和应用的先前更新文件中的执行文件(例如,dex信息)进行比较。根据实施例,简档匹配单元230可以对没有变化的方法和/或类维持现有信息,可以对新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。例如,简档匹配单元230可以经由匹配来产生与目标应用相关的新的更新文件(例如,新的*.apk文件)。
根据实施例,在基于应用更新的安装过程中,简档匹配单元220可以使用简档快速重用工具(在下文中,称为“简档重用工具”)基于先前简档来产生用于应用更新的新简档,并且可以将新简档传送到运行时(例如,ART)。根据实施例,运行时可以如前所述,编译从简档匹配单元220传送的新简档,并且可以产生与应用的类信息相关联的本机代码(例如,*.odex和/或*.oat)和初始化图像(例如,*.art)。根据实施例,本机代码例如可以是编译的字节码,并且可以包括编译的机器码。
根据实施例,作为向用户提供新简档的方法之一,简档匹配单元220可以使用先前更新文件(例如,*.apk)的字节码(例如,dex信息)和基于用户的应用使用模式收集的先前简档(例如,*.prof文件)来产生临时简档。根据实施例,简档匹配单元220可以基于临时简档来产生要在要更新的应用中使用的新简档。例如,简档匹配单元220可以获得(解析或提取)先前简档和先前更新文件中的字节码。例如,简档匹配单元220可以使用包括在先前更新文件中的字节码(例如,dex信息)和基于用户的使用模式收集的先前简档来产生第一类元数据(class metadata)。根据实施例,简档匹配单元220可以基于先前简档和先前更新文件的dex信息来提取频繁使用的热方法和热方法的代码库信息,并且可以基于命令代码(例如操作码(opcode)、操作代码)和参数对象(例如,args)来分析和解析代码库信息。根据实施例,处理器120可以基于解析的信息产生与用于访问应用的类和热方法相关联的第一类元数据。
根据实施例,简档匹配单元220可以获得(解析或提取)与要更新的应用相关的当前更新文件(例如,下载的更新文件)中的字节码(例如,dex信息)。例如,简档匹配单元220可以使用当前更新文件的dex信息来产生第二类元数据。根据实施例,简档匹配单元220可以响应于产生第一类元数据的操作来产生第二类元数据。
根据实施例,简档匹配单元220可以通过比较基于先前信息(例如,先前简档和先前更新文件的dex信息)产生的第一类元数据和基于当前信息(例如,当前更新文件的dex信息)产生的第二类元数据来执行更新文件匹配。根据实施例,在从运行时请求应用更新之前,简档匹配单元220可以将与应用相关的当前更新文件中的dex信息与根据与目标应用相关联的用户使用模式而记录(或存储)的先前简档和应用的先前更新文件中的dex信息进行比较,可以对于没有变化的方法和/或类维持现有信息,可以对于新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。例如,简档匹配单元220可以通过比较第一类元数据和第二类元数据来识别相同部分。根据实施例,简档匹配单元220可以基于第一类元数据和第二类元数据之间的比较来对于没有变化的方法和类维持现有信息,并且可以将现有信息包括在新简档中。
根据各种实施例,先前信息(例如,先前简档和先前更新文件的dex信息)可以经由与外部服务器的互操作存储在外部服务器中,并且可以与外部服务器同步。根据实施例,先前信息可以被包含(或存储)在存储个性化信息的外部服务器(例如,云)中,并且可以与该外部服务器同步。根据实施例,如果电子设备101的用户使用另一个新的电子设备,则用户可以在初始执行(驱动)应用时利用包含在外部服务器中的先前信息。
根据实施例,简档匹配单元220可以基于类元数据匹配来产生新简档。例如,简档匹配单元220可以经由匹配来产生与应用相关的新的更新文件(例如,新的安装文件(例如,新的*.apk文件)),并且可以从新的更新文件解析执行文件(例如,dex信息),以便产生要实际用于编译的新简档。
根据实施例,简档管理器240可以基于新简档来执行编译。根据实施例,简档管理器240可以从运行时(例如,ART)请求编译,以便基于从简档匹配单元230传送的新简档来执行应用更新,并且可以使得运行时能够基于新简档来执行编译。根据实施例,简档管理器240可以基于通过执行编译而获得的结果来产生产物。根据实施例,产物可以包括本机文件(或代码),诸如*.odex、*.vdex、或*.oat,以及与应用类信息相关联的初始化图像,诸如*.art。例如,简档管理器240可以产生其中编译了dex信息的*.oat文件(或本机文件),并且可以产生*.art(或初始化图像)。根据实施例,如果基于通过执行编译而获得的结果成功产生了产物,则简档管理器240可以删除先前应用的目录(directory)。
根据各种实施例,产生的产物可以经由与外部服务器的互操作来存储和管理。根据实施例,产生的产物可以包含(或存储)在存储个性化信息的外部服务器(例如,云)中,并与之同步。根据实施例,如果电子设备101的用户使用另一个新的电子设备,则用户可以在初始执行(驱动)应用时利用包含在外部服务器中的产物。
根据各种示例实施例,电子设备101可以包括:被配置为提供无线电通信的通信电路(例如,图1的无线电通信模块192);可操作地连接到通信电路的至少一个处理器(例如,图1的处理器120);和可操作地连接到处理器的存储器(例如,图1的存储器130),其中,该存储器可以存储指令,该指令在被执行时使得处理器:检测应用的更新;基于检测到应用的更新,获得用于更新应用的更新文件;在安装应用时,获得先前与应用相关联地记录的第一信息和与应用的更新文件相关的第二信息;以及基于在第一信息和第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
根据各种示例实施例,第一信息(例如,先前简档信息和先前更新文件的dex信息)可以存储在电子设备和/或外部服务器的嵌入式存储器(例如,图1的存储器130)中,并与之同步。
根据各种示例实施例,第一信息可以包括基于根据与应用相关联的使用模式所记录的先前简档以及应用的先前更新文件的字节码而产生的第一元数据。
根据各种示例实施例,第二信息可以包括基于在应用被更新的时间点使用通信电路从app商店获得的更新文件的字节码而产生的第二元数据。
根据各种示例实施例,指令在被执行时可以使得处理器验证应用的更新文件。
根据各种示例实施例,指令在被执行时可以使得处理器:在从运行时请求更新应用之前,执行第一信息和第二信息之间的匹配;以及基于该匹配维持相同的方法和相同的类。
根据各种示例实施例,指令在被执行时可以使得处理器:与第一信息相关联地解析先前简档和包括在先前更新文件中的字节码,以产生第一元数据;解析包括在与第二信息相关联的更新文件中的字节码,以产生第二元数据;以及比较第一元数据和第二元数据。
根据各种示例实施例,第一元数据和第二元数据可以包括类信息、方法返回类型、方法参数和方法命令中的至少一个。
根据各种示例实施例,指令在被执行时可以使得处理器基于第一元数据和第二元数据的哈希值来执行比较。
根据各种示例实施例,指令在被执行时可以使得处理器基于根据在第一信息和第二信息之间执行的匹配而产生的新简档来执行编译。
根据各种示例实施例,指令在被执行时可以使得处理器基于新简档的编译来产生本机代码和与应用类信息相关联的初始化图像。
在下文中,将更详细地描述根据各种实施例的电子设备101的示例操作方法。根据各种实施例,由电子设备101执行并在下面描述的操作可以由包括电子设备101的处理电路的至少一个处理器(例如,图1的处理器120)(在下文中,称为“处理器120”)来执行。根据实施例,由电子设备101执行的操作可以存储在存储器(例如,图1的存储器130)(在下文中,称为“存储器130”)中,并且可以根据被配置为使得处理器120能够在指令被执行时执行操作的指令来执行。
图3是示出根据各种实施例的操作电子设备的示例方法的流程图。
参考图3,在操作301中,电子设备101的处理器120可以检测应用的更新。根据实施例,处理器120可以至少基于app商店或其他方法(例如,基于ADB命令执行的安装)来检测至少一个应用的更新(例如,包括应用安装)。根据实施例,处理器120可以基于检测到应用更新,经由通信电路(例如,图1的无线电通信模块192)从app商店接收(或下载)更新文件(例如,安装文件(例如,apk文件))。
在操作303中,处理器120可以基于检测到应用更新来验证对应的应用。根据实施例,处理器120可以检查与要更新的应用相关的当前更新文件(或应用安装文件(例如,apk文件))的有效性。例如,处理器120可以基于售卖来执行验证和/或可以基于设备安全性来执行验证。
在操作305中,当对应应用的验证完成时,处理器120可以执行当前更新文件(例如,与应用更新相关联地从app商店接收(或下载)的更新文件)与先前简档(例如,*prof文件)和先前更新文件(例如,先前*.apk文件)中的字节码(例如,应用的执行文件(例如,dex信息))的匹配。根据实施例,在从运行时(例如,ART)请求应用更新之前,处理器120可以将与要更新的应用相关的当前更新文件与根据用户的应用使用模式而记录(或存储)的先前简档和应用的先前更新文件中的执行文件(例如,dex信息)进行比较。根据实施例,处理器120可以对于没有变化的方法和/或类维持现有信息,可以对于新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。例如,处理器120可以经由匹配来产生与目标应用相关的新的更新文件(例如,新的*.apk文件)。根据各种实施例,将参考附图描述执行更新文件匹配的操作。
在操作307中,处理器120可以产生要用于目标应用的新简档。根据实施例,处理器120可以基于当前更新文件(例如,新安装文件(例如,新的*.apk文件)的字节码(例如,dex信息))来产生要实际用于编译的新简档。根据各种实施例,将参考附图描述产生新简档的操作。
图4是示出根据各种实施例的操作电子设备的示例方法的流程图。
根据实施例,图4示出了电子设备101基于运行时性能的提高来更新应用的操作的示例。
参考图4,在操作401中,电子设备101的处理器120可以检测应用的更新。根据实施例,处理器120可以至少基于app商店或其他方法(例如,基于ADB命令执行的安装)来检测至少一个应用的更新(例如,包括应用安装)。
在操作403中,处理器120可以基于检测到应用更新,产生要被更新的应用将被存储在其中的临时(temp)目录(或文件夹)。根据实施例,处理器120可以产生与目标应用相关的更新文件(或安装文件(例如,*.apk文件))将被存储在其中的临时目录。根据实施例,当产生临时目录时,处理器120可以任意(或随机)产生临时目录的目录名,并且可以将产生的目录名设置为临时目录的目录名。
在操作405中,处理器120可以将更新文件下载在临时目录中。
在操作407中,处理器120可以验证下载的更新文件。根据实施例,处理器120可以检查与目标应用相关的更新文件(例如,apk文件)的有效性。例如,处理器120可以基于售卖来执行验证和/或可以基于设备安全性来执行验证。
如果在操作407中处理器120基于更新文件的有效性检查的结果确定更新文件无效(例如,验证更新文件失败)(例如,操作407中的“失败”),则处理器120可以在操作409中删除临时目录。根据实施例,当删除临时目录时,处理器120还可以删除(或移除)下载的更新文件。
如果在操作407中处理器120基于更新文件的有效性检查的结果确定更新文件有效(例如,成功验证更新文件)(例如,操作407中的“成功”),则处理器120可以在操作411中改变临时目录的目录名。根据实施例,处理器120可以将为临时目录设置的目录名改变为与目标应用相关联的名称(例如,应用名称)。例如,处理器120可以产生临时目录作为要更新的应用的实际目录。
在操作413中,处理器120可以基于先前简档和字节码来产生类元数据。根据实施例,处理器120可以基于与应用相关的先前简档(例如,*.prof文件)和先前更新文件(例如,先前*.apk文件)中的字节码(例如,dex信息)来产生第一类元数据。根据实施例,处理器120可以基于与应用相关的当前更新文件(例如,新的*.apk文件)中的字节码(例如,dex信息)来产生第二类元数据。根据实施例,与应用相关的先前简档(例如,*.prof文件)和先前更新文件(例如,先前*.apk文件)可以存储在电子设备101的嵌入式存储器(例如,图1的存储器130)和/或外部服务器中,并且可以与之同步。
在操作415中,处理器120可以基于类元数据为要更新的应用产生新简档(或要用于目标应用的新简档)。根据实施例,处理器120可以基于第一类元数据和第二类元数据之间的比较来执行更新文件匹配。根据实施例,在从运行时请求应用更新之前,处理器120可以将与应用相关的当前更新文件中的dex信息与根据用户的应用使用模式而记录(或存储)的先前简档和应用的先前更新文件中的dex信息进行比较,可以对于没有变化的方法和/或类维持现有信息,可以对于新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。例如,处理器120可以经由匹配来产生与目标应用相关的新的更新文件(例如,新的安装文件(例如,新安装文件(*.apk文件))。根据实施例,处理器120可以从新的更新文件中解析字节码(例如,dex信息),并且可以基于解析的字节码产生要实际用于编译的新简档。
在操作417中,处理器120可以基于新简档执行编译。根据实施例,处理器120可以从运行时请求编译,以便基于新简档更新目标应用,并且运行时可以基于新简档执行编译。
在操作419中,处理器120可以基于通过执行编译而获得的结果来确定是否产生产物。根据实施例,产物可以包括本机文件(或代码),诸如*.odex、*.vdex、或*.oat,以及与应用类信息相关联的初始化图像,诸如*.art。根据实施例,处理器120可以识别是否产生了其中编译了dex文件的*.oat文件(或本机文件)和*.art(或初始化图像)。
如果在操作419中基于通过执行编译而获得的结果识别出没有产生产物(例如,产生产物失败)(例如,操作419中的“失败”),则处理器120可以继续操作409,并且可以删除临时目录。
如果在操作419中基于通过执行编译而获得的结果识别出产物产生(例如,成功产生产物)(例如,操作419中的“成功”),则处理器120可以继续操作421,并且可以删除临时目录。
图5是示出根据各种实施例的操作电子设备的示例方法的流程图。
根据实施例,图5示出了由电子设备101产生新简档的操作的示例。例如,图5所示的实施例可以包括与图4的实施例的操作413和415相关的详细操作。
参考图5,处理器120可以在图4的实施例中的操作411中改变临时目录的目录名。根据实施例,处理器120可以将为临时目录设置的目录名改变为与目标应用相关联的名称(例如,应用名称)。例如,处理器120可以产生临时目录作为目标应用的目录。
在操作501中,处理器120可以获得(或解析或提取)先前简档和先前更新文件的字节码(例如,Java字节码)。在操作503中,处理器120可以基于先前简档和先前更新文件产生第一类元数据。根据实施例,处理器120可以基于与应用相关的先前简档(例如,*.prof文件)和先前更新文件中的字节码(例如,dex信息)产生第一类元数据。例如,处理器120可以使用先前更新文件的dex信息和根据用户的使用模式收集的先前简档来产生第一类元数据。根据实施例,处理器120可以基于先前简档和先前更新文件的dex信息来提取频繁使用的热方法和热方法的代码库信息,并且可以基于命令代码(例如,操作码)和参数对象(例如,args)来分析和解析代码库信息。根据实施例,处理器120可以基于解析的信息产生与用于访问应用的类和热方法相关联的第一类元数据。根据实施例,第一类元数据可以是不变简档或不变元数据。
在操作511中,处理器120可以获得(解析或提取)与要更新的应用相关的当前更新文件(例如,下载的更新文件)中的字节码(例如,Java字节码)。在操作513中,处理器120可以基于当前更新文件产生第二类元数据。根据实施例,处理器120可以基于与目标应用相关的当前更新文件中的字节码(例如,dex信息)来产生第二类元数据。例如,处理器120可以使用当前更新文件的dex信息来产生第二类元数据。根据实施例,处理器120可以响应于产生第一类元数据的操作来产生第二类元数据。根据实施例,第二类元数据可以是临时简档(例如,temp简档)或临时元数据(例如,temp元数据)。
根据实施例,在图5的实施例中,操作501、503、511和513可以并行、顺序或以相反的顺序执行。
在操作525中,处理器120可以比较类元数据。根据实施例,处理器120可以通过比较基于先前信息(例如,先前简档和先前更新文件的dex信息)产生的第一类元数据和基于当前信息(例如,当前更新文件的dex信息)产生的第二类元数据来执行更新文件匹配。根据实施例,在从运行时请求更新目标应用之前,处理器120可以将与应用相关的当前更新文件中的dex信息与根据与目标应用相关联的用户使用模式而记录(或存储)的先前简档和应用的先前更新文件中的dex信息进行比较,可以对于没有变化的方法和/或类维持现有信息,可以对于新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。根据实施例,处理器120可以从先前更新文件读取dex信息,可以执行解析,并且可以基于解析的dex信息产生与方法相关联的第一类元数据。根据实施例,处理器120可以从当前更新文件读取dex信息,可以执行解析,并且可以基于解析的dex信息产生与方法相关联的第二类元数据。根据实施例,处理器120可以通过比较第一类元数据和第二类元数据来识别相同部分。根据实施例,基于第一类元数据和第二类元数据之间的比较,处理器120可以对于没有变化的方法和类维持现有信息。
在操作527中,处理器120可以基于类元数据匹配产生新简档。根据实施例,基于第一类元数据和第二类元数据之间的比较,处理器120可以产生包括相同方法和类的新简档。根据实施例,处理器120可以经由匹配来产生与目标应用相关的新的更新文件(例如,新的安装文件(例如,新的*.apk文件)),并且可以从新的更新文件解析执行文件(例如,dex信息),以便产生要实际用于编译的新简档。
在操作529中,处理器120可以压缩新产生的简档。根据实施例,处理器120可以将新简档压缩成应用的公共简档(例如,*.dm文件)。根据实施例,公共简档(例如,*.dm文件)可以被压缩并通过对应于与对应应用相关地从电子设备101提取的信息的文件名来调用。
图6是示出根据各种实施例的操作电子设备的示例方法的流程图。
根据实施例,图6示出了电子设备101基于新简档执行编译的操作的示例。例如,图6所示的实施例可以包括与图4的实施例的操作417相关的详细操作。
参考图6,在图5的实施例中的操作529中,处理器120可以将新简档压缩成应用的公共简档(例如,*.dm文件),并且可以产生压缩文件。
在操作601中,处理器120可以确定现有公共简档(例如,现有*.dm文件)是否与应用相关地存在。例如,处理器120可以确定与压缩的新公共文件(例如,新的*.dm文件)具有相同文件名的现有公共简档是否存在。
如果在操作601中所述确定显示现有公共简档(例如,现有*.dm文件)存在(例如,操作601中的“是”),则处理器120可以在操作603中将先前简档(例如,*.prof文件)复制在现有公共简档中。
如果在操作601中所述确定显示现有公共简档(例如,现有*.dm文件)不存在(例如,操作601中的“否”),则处理器120可以在操作605中删除先前简档(例如,*.prof文件)。
在操作607中,处理器120可以对应用执行编译。根据实施例,处理器120可以请求运行时基于目标应用的新简档来执行编译,并且运行时基于新简档来执行编译。例如,处理器120可以经由运行时,使用针对新简档的指定的编译方案(例如,AOT编译),来产生本机代码(例如,*.odex和/或*.oat)和与应用类信息相关联的初始化图像(例如,*.art)。根据实施例,本机代码例如可以是编译的字节码,并且可以包括编译的机器码。
图7是示出根据各种实施例的由电子设备基于先前简档产生新简档的示例的图。图8是示出根据各种实施例的由电子设备产生的元数据的示例的图。图9是示出根据各种实施例的由电子设备执行元数据匹配的示例的图。
图7的实施例描述了如图5的实施例中所描述的基于所产生的类元数据(例如,第一类元数据和第二类元数据)之间的比较来产生新简档的操作。例如,根据各种实施例的电子设备101可以包括用于快速重用简档的简档重用工具。在执行应用更新时安装目标应用的过程中,电子设备101可以使用简档重用工具基于先前简档来为要更新的目标应用产生新简档,并且可以将新简档传送到运行时。例如,如果执行应用更新(包括应用安装),则电子设备101可以经由包管理器(例如,图2的包管理器220)(例如,包管理器服务(PacakgeManagerService)模块)来验证应用。如果应用的验证完成,则针对应用更新的请求可以被传送到运行时(例如,ART)。根据各种实施例,在安装应用的过程中,在从运行时请求应用更新之前,电子设备101可以使用简档重用工具将当前更新文件中的dex信息与应用的根据用户模式来记录的先前简档和先前更新文件中的dex信息进行比较。根据实施例,运行时可以编译从简档重用工具传送的新简档,并且可以产生本机代码(例如,*.odex和/或*.oat)和与应用的类信息相关联的初始化图像(例如,*.art)。
参考图7,电子设备101可以基于电子设备101在执行应用更新之前包含的应用的先前简档710和应用的先前更新文件(例如,安装文件(例如,先前*.apk文件))中的Java字节码720(例如,dex信息)来产生第一类元数据760。例如,电子设备101可以基于根据与先前简档710相关的方法标识符(例如,方法id)和标志的类信息以及基于先前更新文件的Java字节码720的方法数据(例如,哈希值)和方法标识符的类信息,来执行与先前信息(例如,先前简档710和先前更新文件的Java字节码720)相关联的方法分组730。根据实施例,电子设备101可以经由方法分组730基于与应用相关的先前信息产生第一类元数据760。根据实施例,第一类元数据760可以是基于先前信息的不变简档或不变元数据。
电子设备101可以基于根据应用更新请求获得的应用的当前更新文件(例如,当前*.apk文件)中的Java字节码(例如,dex信息)740产生第二类元数据770。例如,电子设备101可以基于根据当前更新文件中的Java字节码740的方法数据(例如,哈希值)和方法标识符的类信息来执行与当前信息(例如,当前更新文件的Java字节码740)相关联的方法分组750。根据实施例,电子设备101可以经由方法分组750基于与应用相关的当前信息来产生第二类元数据770。根据实施例,第二类元数据770可以是基于当前信息的临时简档(例如,temp简档)或临时元数据(例如,temp元数据)。
根据实施例,电子设备101可以使用哈希值来减少花费在第一类元数据760和第二类元数据770之间的比较(或匹配)上的时间量,并且可以使用方法标识符(例如,类名、返回类型和/或方法名)来对每个类进行方法分组。根据实施例的元数据(例如,第一类元数据760和第二类元数据770)的结构可以如图8所示被示出。
参考图8,元数据可以包括至少一个字段,诸如类信息810、方法返回类型820、方法参数830和方法命令840。根据实施例,类信息810可以包括与方法具有的类815的包的数量相关联的信息。根据实施例,方法返回类型820可以包括方法返回类型的包的数量821、与是否使用数组相关联的信息823和/或与类型(例如,对象类型或基元类型)相关联的信息825。根据实施例,方法参数830可以包括参数信息835。例如,参数信息835可以包括方法参数的数量、参数的包的数量、与是否使用数组相关联的信息或者与参数类型(例如,对象类型或基元类型)相关联的信息。根据实施例,方法命令840可以包括与命令相关联的信息(例如,命令代码(opcode)845和参数对象(args))。根据实施例,表1和表2示出了方法(例如,表1)和与方法相关联的元数据(例如,表2)的示例。
[表1]
[表2]
根据实施例,电子设备101可以经由循环冗余校验(CRC)(例如,CRC-32)基于如图8的实施例所示的与元数据相关联的信息来产生哈希值。根据实施例,电子设备101可以在执行元数据匹配的操作中使用哈希值。其示例在图9中示出。
参考图7和图9,电子设备101可以在基于先前信息(例如,先前简档和先前更新文件的dex信息)的第一类元数据760和基于当前信息(例如,当前更新文件的dex信息)的第二类元数据770之间执行比较(或匹配)780。根据实施例,电子设备101可以使用第一类元数据760的第一哈希值和第二类元数据770的第二哈希值来缩短花费在类元数据比较上的时间量。
根据实施例,电子设备101可以经由第一类元数据760和第二类元数据770之间的比较780来识别相同部分(例如,方法)。例如,电子设备101可以通过比较元数据的内容来识别方法是否相同。根据实施例,基于第一类元数据760和第二类元数据770之间的比较,电子设备101可以对于没有变化的方法(例如,相同的方法910)和类维持现有信息。例如,在从运行时请求应用更新之前,电子设备101可以比较第一类元数据760和第二类元数据770,可以对于没有变化的方法(例如,相同的方法910)和/或类维持现有信息,可以对于新方法和/或类添加新信息,并且可以执行现有信息和新信息之间的匹配。
根据实施例,电子设备101可以通过执行第一类元数据760和第二类元数据770之间的匹配来产生新简档(例如,新的ART简档)790。根据实施例,电子设备101可以经由匹配来产生与应用相关的新的安装文件(例如,新的*.apk文件),可以从新的安装文件解析Java字节码(例如,dex文件),并且可以产生要实际用于编译的新简档790。
根据实施例,电子设备101可以使用dex2oat执行文件来编译新产生的简档790。相应地,在应用更新之后不另外使用更新的应用的情况下,电子设备101可以使用户能够立即使用具有根据先前用户使用模式而应用的运行时性能的应用。
图10是示出根据各种实施例的用于由电子设备产生元数据的示例混淆操作的图,图11A是示出根据各种实施例的用于由电子设备产生元数据的示例混淆操作的图,并且图11B是示出根据各种实施例的用于由电子设备产生元数据的示例混淆操作的图。
根据实施例,图10、图11A和图11B示出了电子设备101为元数据产生混淆代码的示例。例如,图10、图11A和图11B所示的实施例可以是图7、图8和图9所示的实施例中的元数据的混淆处理的示例。
参考图10、图11A和图11B,电子设备101可以经由proguard(混淆器)执行混淆处理。根据实施例,proguard是用于代码混淆的工具,可以将参数、方法和/或类的名称改变为短的无意义名称,并且可以移除不必要的代码,从而执行优化。
例如,如图10的实施例所示,参数、方法和/或类的名称经由源代码1010(例如,经由Java编译器产生的Java字节码)的混淆而改变,并且提供部分代码,因此,可以产生优化代码1020(例如,Java字节码)。根据实施例,图8的实施例中所示的元数据可以基于图10中所示的优化代码1020(例如,混淆的字节码)来产生。
根据实施例,图11A所示的实施例可以示出一个示例,其中由于混淆而产生了实质上不同的方法,尽管方法名称是相同的(例如,app-v1/smali/X/00X.smali)。例如,“.classpublic final LX/00X;”可以产生为另一种方法,诸如“.class public abstract LX/00X;”。
根据实施例,图11B所示的实施例示出了一个示例,其中方法名称由于混淆而改变,尽管方法内容是相同的。例如,“app-v1/smali/X/00X.smali”可以被改变为“app-v2/smali/X/00Y.smali”。
根据各种示例实施例的操作方法和电子设备可以包括:检测应用的更新;基于检测到应用的更新,获得用于更新应用的更新文件;在安装应用时,获得先前与应用相关联地记录的第一信息和与应用的更新文件相关的第二信息;以及基于在第一信息和第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
根据各种示例实施例,第一信息可以包括基于根据与应用相关联的使用模式所记录的先前简档和应用的先前更新文件的字节码而产生的第一元数据。
根据各种示例实施例,第二信息可以包括基于在应用被更新的时间点经由通信电路从app商店获得的更新文件的字节码而产生的第二元数据。
根据各种示例实施例,获得更新文件可以包括验证应用的更新文件的操作。
根据各种示例实施例,执行第一信息和第二信息之间的匹配可以包括:在从运行时请求更新应用之前,执行第一信息和第二信息之间的匹配;以及基于该匹配维持相同的方法和相同的类。
根据各种示例实施例,执行第一信息和第二信息之间的匹配的操作可以包括:与第一信息相关联地解析先前简档和包括在先前更新文件中的字节码以产生第一元数据的操作;解析包括在与第二信息相关联的更新文件中的字节码以产生第二元数据;以及比较第一元数据和第二元数据。
根据各种示例实施例,第一元数据和第二元数据可以包括类信息、方法返回类型、方法参数和方法命令中的至少一个。
根据各种示例实施例,比较可以包括基于第一元数据和第二元数据的哈希值来执行比较。
根据各种示例实施例,方法可以包括基于根据在第一信息和第二信息之间执行的匹配而产生的新简档来执行编译。
根据各种示例实施例,方法可以包括基于新简档的编译来产生本机代码和与应用类信息相关联的初始化图像。
虽然已经参考各种示例实施例说明和描述了本公开,但是应当理解,各种示例实施例旨在是说明性的,而不是限制性的。本领域普通技术人员将进一步理解,在不脱离本公开的真实精神和全部范围,包括所附权利要求及其等同物的情况下,可以进行形式和细节上的各种改变。
Claims (15)
1.一种电子设备,包括:
通信电路,被配置为执行无线电通信;
至少一个处理器,可操作地连接到所述通信电路;和
存储器,可操作地连接到所述处理器,
其中,所述存储器存储指令,所述指令在被执行时使得所述处理器:
检测应用的更新;
基于检测到所述应用的更新,获得用于更新所述应用的更新文件;
在安装所述应用时,获得先前与所述应用相关联地记录的第一信息和与所述应用的更新文件相关的第二信息;以及
基于在所述第一信息和所述第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
2.根据权利要求1所述的电子设备,其中,所述第一信息包括基于根据与所述应用相关联的使用模式所记录的先前简档和所述应用的先前更新文件的字节码的第一元数据,并且
其中,所述第二信息包括基于在所述应用被更新的时间点经由所述通信电路从应用商店获得的所述更新文件的字节码的第二元数据。
3.根据权利要求1所述的电子设备,其中,所述指令在被执行时使得所述处理器:验证所述应用的所述更新文件。
4.根据权利要求1所述的电子设备,其中,所述指令在被执行时使得所述处理器:在从运行时请求更新所述应用之前,执行所述第一信息和所述第二信息之间的匹配,以及基于所述匹配维持相同的方法和相同的类。
5.根据权利要求4所述的电子设备,其中,所述指令在被执行时使得所述处理器:
与所述第一信息相关联地解析先前简档和包括在先前更新文件中的字节码,以产生第一元数据;
解析包括在与所述第二信息相关联的所述更新文件中的字节码,以产生第二元数据;以及
比较所述第一元数据和所述第二元数据。
6.根据权利要求5所述的电子设备,其中,所述第一元数据和所述第二元数据包括类信息、方法返回类型、方法参数和方法命令中的至少一个。
7.根据权利要求5所述的电子设备,其中,所述指令在被执行时使得所述处理器基于所述第一元数据和所述第二元数据的哈希值来执行所述比较。
8.根据权利要求1所述的电子设备,其中,所述指令在被执行时使得所述处理器:
基于根据在所述第一信息和所述第二信息之间执行的匹配而产生的所述新简档来执行编译,以及
基于所述新简档的编译来产生本机代码和与应用类信息相关联的初始化图像。
9.一种操作电子设备的方法,所述方法包括:
检测应用的更新;
基于检测到所述应用的更新,获得用于更新所述应用的更新文件;
在安装所述应用时,获得先前与所述应用相关联地记录的第一信息和与所述应用的更新文件相关的第二信息;以及
基于在所述第一信息和所述第二信息之间执行的匹配,产生将在更新之后的应用中使用的新简档。
10.根据权利要求9所述的方法,其中,所述第一信息包括基于根据与所述应用相关联的使用模式所记录的先前简档和所述应用的先前更新文件的字节码而产生的第一元数据,并且
其中,所述第二信息包括基于在所述应用被更新的时间点经由所述通信电路从应用商店获得的所述更新文件的字节码而产生的第二元数据。
11.根据权利要求9所述的方法,其中,获得所述更新文件包括:
验证所述应用的所述更新文件。
12.根据权利要求9所述的方法,其中,在所述第一信息和所述第二信息之间执行的匹配包括:
在从运行时请求更新所述应用之前,执行所述第一信息和所述第二信息之间的匹配;以及
基于所述匹配维持相同的方法和相同的类。
13.根据权利要求12所述的方法,其中,执行所述第一信息和所述第二信息之间的匹配包括:
与所述第一信息相关联地解析先前简档和包括在先前更新文件中的字节码,以产生第一元数据;
解析包括在与所述第二信息相关联的更新文件中的字节码,以产生第二元数据;以及
比较所述第一元数据和所述第二元数据。
14.根据权利要求13所述的方法,其中,所述比较包括:
基于所述第一元数据和所述第二元数据的哈希值来执行比较。
15.根据权利要求9所述的方法,还包括:
基于根据在所述第一信息和所述第二信息之间执行的匹配而产生的所述新简档来执行编译;以及
基于所述新简档的编译来产生本机代码和与应用类信息相关联的初始化图像。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0111084 | 2019-09-06 | ||
KR1020190111084A KR20210029621A (ko) | 2019-09-06 | 2019-09-06 | 전자 장치에서 어플리케이션 업데이트 시 런타임 성능 개선 방법 및 장치 |
PCT/KR2020/011323 WO2021045428A1 (en) | 2019-09-06 | 2020-08-25 | Method and apparatus for improving runtime performance after application update in electronic device |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114341800A true CN114341800A (zh) | 2022-04-12 |
Family
ID=74850930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080061838.5A Pending CN114341800A (zh) | 2019-09-06 | 2020-08-25 | 用于在电子设备中的应用更新之后提高运行时性能的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11327739B2 (zh) |
EP (1) | EP3994571A4 (zh) |
KR (1) | KR20210029621A (zh) |
CN (1) | CN114341800A (zh) |
WO (1) | WO2021045428A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541045A (zh) * | 2023-07-03 | 2023-08-04 | 京东科技信息技术有限公司 | 一种应用资源更新方法、装置和*** |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7477328B2 (ja) * | 2020-03-16 | 2024-05-01 | Fdk株式会社 | 制御装置及び制御プログラムの書き換え方法 |
US11200038B1 (en) * | 2020-06-25 | 2021-12-14 | Paypal, Inc. | Fast compiling source code without dependencies |
CN113094290B (zh) * | 2021-05-21 | 2024-02-23 | 珠海金山数字网络科技有限公司 | 程序测试***及方法 |
WO2024071707A1 (ko) * | 2022-09-28 | 2024-04-04 | 삼성전자주식회사 | 어플리케이션을 컴파일하기 위해 이용되는 정보를 획득하기 위한 전자 장치 및 그 방법 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7191435B2 (en) * | 2002-06-07 | 2007-03-13 | Sun Microsystems, Inc. | Method and system for optimizing software upgrades |
JP4864557B2 (ja) * | 2006-06-15 | 2012-02-01 | 富士通株式会社 | ソフトウェアの更新処理プログラム及び更新処理装置 |
KR100828364B1 (ko) | 2006-06-28 | 2008-05-08 | 삼성전자주식회사 | 가상 프로파일을 이용한 자바 jit 컴파일 방법 및시스템 |
US8606765B2 (en) * | 2007-11-30 | 2013-12-10 | Red Hat, Inc. | Systems and methods for updating software appliances |
US20140033123A1 (en) * | 2009-07-30 | 2014-01-30 | Adobe Systems, Inc. | User interface and method for comparing a local version of a profile to an online update |
US8838964B2 (en) * | 2010-11-30 | 2014-09-16 | Red Hat, Inc. | Package audit tool |
US9063819B2 (en) * | 2011-01-02 | 2015-06-23 | Cisco Technology, Inc. | Extensible patch management |
US8656343B2 (en) * | 2012-02-09 | 2014-02-18 | Sonatype, Inc. | System and method of providing real-time updates related to in-use artifacts in a software development environment |
US9275006B2 (en) * | 2012-10-28 | 2016-03-01 | Google Inc. | Configuration file updater |
US9760351B2 (en) | 2013-04-02 | 2017-09-12 | Google Inc. | Framework for user-directed profile-driven optimizations |
US9280339B1 (en) * | 2013-12-12 | 2016-03-08 | Amazon Technologies, Inc. | Class replacer during application installation |
US10146522B1 (en) * | 2015-03-10 | 2018-12-04 | Twitter, Inc. | Live code updates |
US10042735B2 (en) * | 2015-07-10 | 2018-08-07 | Ca, Inc. | Selecting application wrapper logic components for wrapping a mobile application based on wrapper performance feedback from user electronic devices |
US10067757B2 (en) * | 2015-11-20 | 2018-09-04 | Google Llc | Dynamic update of an application in compilation and deployment with hot-swapping |
CN107346252B (zh) * | 2016-05-07 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 应用更新方法和装置 |
US10380342B2 (en) | 2016-07-29 | 2019-08-13 | Qualcomm Incorporated | Kernel-based detection of target application functionality using virtual address mapping |
KR20180079852A (ko) | 2017-01-03 | 2018-07-11 | 삼성에스디에스 주식회사 | 애플리케이션 변환 장치 및 방법 |
KR101954623B1 (ko) | 2017-02-27 | 2019-03-06 | 한국전자통신연구원 | 가상화 환경에서의 소프트웨어 업데이트 장치 및 방법 |
US10552140B2 (en) * | 2018-01-31 | 2020-02-04 | Oracle International Corporation | Automated identification of deployment data for distributing discrete software deliverables |
-
2019
- 2019-09-06 KR KR1020190111084A patent/KR20210029621A/ko not_active Application Discontinuation
-
2020
- 2020-08-25 CN CN202080061838.5A patent/CN114341800A/zh active Pending
- 2020-08-25 EP EP20860639.2A patent/EP3994571A4/en active Pending
- 2020-08-25 WO PCT/KR2020/011323 patent/WO2021045428A1/en unknown
- 2020-08-27 US US17/004,192 patent/US11327739B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541045A (zh) * | 2023-07-03 | 2023-08-04 | 京东科技信息技术有限公司 | 一种应用资源更新方法、装置和*** |
CN116541045B (zh) * | 2023-07-03 | 2023-11-03 | 京东科技信息技术有限公司 | 一种应用资源更新方法、装置和*** |
Also Published As
Publication number | Publication date |
---|---|
EP3994571A1 (en) | 2022-05-11 |
KR20210029621A (ko) | 2021-03-16 |
US11327739B2 (en) | 2022-05-10 |
US20210072971A1 (en) | 2021-03-11 |
EP3994571A4 (en) | 2022-08-24 |
WO2021045428A1 (en) | 2021-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11327739B2 (en) | Method and apparatus for improving runtime performance after application update in electronic device | |
US10795652B2 (en) | Generating native code from intermediate language code for an application | |
US11256496B2 (en) | Apparatus and method for managing application | |
US11435985B2 (en) | Electronic device and operation method thereof | |
US9692600B2 (en) | Device and method for re-signing application package, and terminal device for running application package | |
CN111813428A (zh) | 终端固件的升级方法、装置、电子设备及存储介质 | |
US20230185554A1 (en) | Application installation method and electronic device for supporting same | |
KR20190109979A (ko) | 전자 장치 및 전자 장치의 업데이트 제어 방법 | |
US11604656B2 (en) | Method and apparatus for managing application | |
KR20200097100A (ko) | 어플리케이션의 무결성을 검증하는 전자 장치 및 어플리케이션의 무결성을 검증하기 위한 방법 | |
US20220004634A1 (en) | Electronic device for providing security-required service through secure element, and method for controlling same electronic device | |
EP4191393A1 (en) | Electronic device and method for managing memory of electronic device | |
EP3987395B1 (en) | Electronic device for executing instructions using processor cores and various versions of instruction set architectures | |
US11068276B2 (en) | Controlled customization of silicon initialization | |
CN115167932A (zh) | 一种开机性能的优化方法、装置、设备及存储介质 | |
CN113127018A (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 |