CN114860242A - 一种编译方法、编译装置及存储介质 - Google Patents

一种编译方法、编译装置及存储介质 Download PDF

Info

Publication number
CN114860242A
CN114860242A CN202110152449.XA CN202110152449A CN114860242A CN 114860242 A CN114860242 A CN 114860242A CN 202110152449 A CN202110152449 A CN 202110152449A CN 114860242 A CN114860242 A CN 114860242A
Authority
CN
China
Prior art keywords
compiling
time
current
scene
compilation
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
CN202110152449.XA
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.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co 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 Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN202110152449.XA priority Critical patent/CN114860242A/zh
Publication of CN114860242A publication Critical patent/CN114860242A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

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

Abstract

本公开是关于一种编译方法、编译装置及存储介质。编译方法包括:确定当前编译进程对应的当前编译场景;在所述当前编译场景为第一类编译场景时,使用第一时间监控所述当前编译进程;所述第一时间为编译进程触发看门狗的编译时长,所述第一时间小于第二时间,所述第二时间为***服务进程触发看门狗的等锁时长。通过本公开可以改善编译过程中***服务争锁过程中出现的***重启现象。

Description

一种编译方法、编译装置及存储介质
技术领域
本公开涉及***控制技术领域,尤其涉及一种编译方法、编译装置及存储介质。
背景技术
随着科学技术的发展,编译技术的应用领域越来越广泛,其中,对应用程序中字节码的转换是编译技术的一种常见使用方法。
相关技术中,需要在安卓运行时环境(Android Runtime,ART)中使用dex2oat(dexfile to oat file)编译工具对应用程序的可编译文件进行编译,得到可执行与可链接格式(Executable and Linkable Format,ELF)的可执行文件。dex2oat编译工具,是一种将字节码(dex)文件优化成二进制格式文件的工具。但在编译过程中,服务包管理(PackageManager Service,PMS)中的相关方法会一直持锁(mInstallLock),从而使其他需要调用PMS中方法持锁的操作无法执行。甚至会使***服务(system_server)等锁时间过长,触发看门狗(watchdog),从而导致***重启。
发明内容
为克服相关技术中存在的问题,本公开提供一种编译方法、编译装置及存储介质。
根据本公开实施例的第一方面,提供一种编译方法,包括:
确定当前编译进程对应的当前编译场景;在所述当前编译场景为第一类编译场景时,使用第一时间监控所述当前编译进程;所述第一时间为编译进程触发看门狗的编译时长,所述第一时间小于第二时间,所述第二时间为***服务进程触发看门狗的等锁时长。
一种实施方式中,所述编译方法还包括:在所述当前编译场景为第二类编译场景时,使用编译进程触发看门狗的原生时间监控编译进程。
一种实施方式中,使用第一时间监控所述当前编译进程,包括:响应于所述当前编译进程在第一时间之前完成编译,或者所述当前编译进程在第一时间未完成编译,控制所述当前编译进程释放锁。
一种实施方式中,控制所述当前编译进程释放锁之后,所述方法还包括:响应于***服务进程争锁,在所述第二时间之前,控制所述***服务进程持锁。
一种实施方式中,所述第一类编译场景包括以下之一或组合:应用动态加载可编译文件的编译场景;以及应用安装中的编译场景。
一种实施方式中,所述第二类编译场景包括以下之一或组合:***空闲状态下的编译场景;***启动过程中的编译场景;***构建过程中构建服务的编译场景;***程序函数库预建过程的编译场景;以及调试模式下的编译场景。
根据本公开实施例的第二方面,提供一种编译装置,包括:
确定单元,用于确定当前编译进程对应的当前编译场景;监控单元,用于在所述当前编译场景为第一类编译场景时,使用第一时间监控所述当前编译进程;所述第一时间为编译进程触发看门狗的编译时长,所述第一时间小于第二时间,所述第二时间为***服务进程触发看门狗的等锁时长。
一种实施方式中,监控单元还用于:在当前编译场景为第二类编译场景,使用编译进程触发看门狗的原生时间监控编译进程。
一种实施方式中,所述监控单元采用如下方式使用第一时间监控所述当前编译进程:响应于所述当前编译进程在第一时间之前完成编译,或者所述当前编译进程在第一时间未完成编译,控制所述当前编译进程释放锁。
一种实施方式中,所述监控单元还用于:控制所述当前编译进程释放锁之后,响应于***服务进程争锁,在所述第二时间之前,控制所述***服务进程持锁。
一种实施方式中,所述第一类编译场景包括以下之一或组合:应用动态加载字节码文件的编译场景;以及应用安装中的编译场景。
一种实施方式中,所述第二类编译场景包括以下之一或组合:***空闲状态下的编译场景;***启动过程中的编译场景;***构建过程中构建服务的编译场景;***程序函数库预建过程的编译场景;以及调试模式下的编译场景。
根据本公开实施例第三方面,提供一种编译装置,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行第一方面或者第一方面任意一种实施方式中所述的编译方法。
根据本公开实施例第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行第一方面或者第一方面任意一种实施方式中所述的编译方法。
本公开的实施例提供的技术方案可以包括以下有益效果:在当前编译进程对应的当前编译场景为第一类编译场景时,使用第一时间监控当前编译进程。第一时间为编译进程触发看门狗的编译时长,且第一时间小于第二时间。第二时间为***服务进程触发看门狗的等锁时长。故通过本公开可以改善编译过程中***服务争锁过程中出现的***重启现象。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种编译方法的流程示意图。
图2是根据一示例性实施例示出的一种编译方法的流程图。
图3示出了本公开实施例一种实施方式中提供的dex2oat常用场景划分示意图。
图4是根据一示例性实施例示出的一种编译方法的流程图。
图5是根据一示例性实施例示出的一种基于第一类场景的编译方法流程图。
图6是根据一示例性实施例示出的一种基于第一类编译场景的编译方法的流程示意图。
图7是根据一示例性实施例示出的一种编译装置框图。
图8是根据一示例性实施例示出的一种用于编译的装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开实施例提供的编译方法可以应用于对终端应用的编译场景中。例如,本公开实施例可以应用于编译手机等终端中可编译文件的场景中。
相关技术中,采用编译工具对应用程序的可编译文件进行编译,从而得到能够直接调用的可执行文件。例如,在ART中使用dex2oat编译工具对应用程序的字节码文件(dex文件)进行编译,得到ELF可执行文件。该方法为了保证向下兼容,安卓运行时环境延续使用相同的dex文件,即在应用程序目录下保留了dex文件供旧程序调用,然而可执行文件(.odex)文件则替换成了ELF可执行文件。安卓运行时环境使用dex2oat工具来编译应用,一旦一个程序被安卓运行时环境的dex2oat命令编译,那么这个程序将会指通过ELF可执行文件来运行。
相关技术中,采用编译工具对应用程序的可编译文件进行编译的方法,可以在应用程序的安装过程中,将所有的字节码重新编译成了机器码。经过编译的应用程序,可以通过调用机器码的可执行文件直接运行,而无需进行实时的编译工作。极大的提高了应用程序的运行效率,同时也减少了手机的电量消耗,在垃圾回收等机制上也有了较大的提升。相关方法的编译过程中,触发dex2oat任务后,服务管理模块中的相关方法会一直持锁(mInstallLock),直到dex2oat编译完成返回。但由于某些应用较为复杂,编译的时间会比较长,进而可能出现某些操作无法执行或者***重启的情况。图1是根据一示例性实施例示出的一种编译方法的流程示意图。如图1所示,当dex2oat进行编译时PackageManagerService.performDexOptInternalWithDependenciesLi持锁PackageManagerS-ervice.mInstallLock。其中,原生设施编译进程触发看门狗的时间为9.5分钟,当dex2oat能够在9.5分钟用内完成编译时,编译进程将在编译完成后返回并释放锁。当dex2oat不能在9.5分钟用内完成编译时,编辑进程会在9.5分钟时触发看门狗并释放锁。若***服务进程或其他进程在编译进程编译期间争锁,较短的编译时长能够在***服务进程或其他进程争锁时较快的释放锁,不会对***服务进程或其他进程产生影响。但较长的编译时长,可能会导致***服务进程或其他进程无法拿锁的情况。例如,当***服务进程需要争锁,且***服务进程等锁时长达到1分钟时,***服务进程等锁时长达到1分钟,触发看门狗,进而导致***重启。又例如,当其他进程访问服务包管理中的方法需要拿锁时,由于编译进程时间过长,锁得不到释放,致使其他进程等待超时无响应。以上情况都会影响用户的使用体验。
有鉴于此,本公开实施例提供一种编译方法。该编译方法中,在***服务或其他操作可能争锁的场景下,通过重新设置编译进程触发看门狗的编译时长,基于重新设置的编译时长监控编译进程,改善编译过程中***服务争锁出现触发看门狗导致***重启的现象。
图2是根据一示例性实施例示出的一种编译方法的流程图,如图2所示,编译方法包括以下步骤。
在步骤S11中,确定当前编译进程对应的当前编译场景。
本公开实施例中的当前编译场景,可以是通过手机等终端当前状态确定的编译场景。例如,可以是通过手机当前的使用状态确定当前的编译场景。一示例中,终端中设置有可以区分编译场景的可读文件(reader)。
本公开实施例中将重新设置编译进程触发看门狗编译时长的编译场景称为第一类编译场景。其中,第一类编译场景可以是预先设置的包括有一种或多种编译进程的编译场景。其中,第一类编译场景中,编译进程在编译过程中可能出现其他进程大概率争锁的情形,且进行编译的编译时长相对较短,通常是小于***服务争锁时触发看门狗等锁时长。
在步骤S12中,若当前编译场景为第一类编译场景,则使用第一时间监控当前编译进程。
本公开实施例为描述方便,将针对第一类编译场景对应的编译进程进行重新设置的触发看门狗的编译时长称为第一时间。若当前编译场景为第一类编译场景,则使用第一时间监控当前编译进程。即若,第一类编译场景对应编译进程的编译时长达到第一时间,则触发看门狗,进行***重启。
本公开实施例中为避免第一类编译场景下编译进程编译过程中,***服务争锁等锁时长过长,触发看门狗,可以将第一时间设置为小于***服务进程触发看门狗的等锁时长。其中,本公开实施例中为描述方便,将***服务进程触发看门狗的等锁时长称为第二时间。其中,第二时间例如可以是1分钟。
本公开实施例中为改善编译进程编译过程中***服务争锁出现的***重启现象,可以设置第一时间小于第二时间,例如可以将第一时间设置为55秒。
本公开实施例中,第一时间小于第二时间,在当前编译场景为第一类编译场景时,使用第一时间监控当前编译进程,故,在***服务进程等锁时长达到第二时间触发看门狗前,编译进程已经完成编译释放锁或者编译进程未完成触发看门狗释放锁,进而***服务可以在触发看门狗之前持锁,避免***服务进程触发看门狗而导致***重启。
本公开实施例中,为保证第一类编译场景中的编译进程能够大概率的完成编译,可统计第一类编译场景中包括的各编译进程的编译时长,将第一时间设置为大于第一类编译场景中的最大编译时长。
相关技术中,某些复杂应用进行编译时的编译时长可能会比较长,会出现编译时长大于第一时间的情况。在编译进程编译时长大于第一时间的情况下,应用本公开实施例提供的编译方法会导致编译进程始终被杀死,无法完成编译。故本公开实施例一种实施方式中,针对常用的编译进程进行编译场景的划分,划分为第一类编译场景和第二类编译场景。
其中,第一类编译场景中的编译进程触发看门狗的编译时长为重新设置的第一时间,例如上述设置的55秒。第二类编译场景中的编译进程触发看门狗的编译时长保留原生时间。该原生时间例如可以是原生设置的触发看门狗时间9.5分钟。
图3示出了本公开实施例一种实施方式中提供的dex2oat常用场景划分示意图。图3中,为避免某些复杂应用进行dex2oat时间太长,一直被杀,从而始终得不到编译的情况,影响运行性能的情况,保留空闲(idle)状态下原生触发watchdog的时间值,保证该应用能在设备处于idle状态时得到编译。保留***构建过程中构建服务(build server)、***程序函数(so)库等预建(prebuilt)过程以及调试(debug)模式下调用dex2oat时dex2oat触发watchdog的时间值,确保构建不因dex2oat被杀而报错中断。除以上保留原值的情况外,应用程序(APP)动态加载dex,APP安装以及其他场景进行dex2oat编译时,将触发watchdog的值修改为55s<1min,保证在system server触发watchdog之前拿到锁。
图4是根据一示例性实施例示出的一种编译方法的流程图,如图4所示,编译方法包括以下步骤。
在步骤S21中,确定当前编译进程对应的当前编译场景。
在步骤S22a中,若当前编译场景为第一类编译场景,则使用第一时间监控当前编译进程。
本公开实施例中,当前编译场景为第一类编译场景,对dex2oat代码中watchdog的原生设定按场景不同进行修改,在除idle场景、***构建过程中build server、***so库等prebuilt过程以及debug模式下的其他场景中,将dex2oat编译任务触发watchdog时间修改为55s,故,在***服务进程等锁时长达到第二时间触发看门狗前,编译进程已经完成编译释放锁或者编译进程未完成触发看门狗释放锁,进而降低了其他进程访问PMS中的需持锁方法时因长时间等待而出现无响应现象的概率,避免了system_server进程因拿不到锁导致重启的情况。
在步骤S22b中,若当前编译场景为第二类编译场景,则使用编译进程触发看门狗的原生时间监控编译进程。
本公开实施例中,当前编译场景为第二类编译场景,使用编译进程触发看门狗的原生时间9.5分钟监控编译进程。其中,dex2oat编译任务触发watchdog时间均为9.5分钟。上层PMS持锁,且必须等dex2oat任务完成返回后才会释放该锁,若此过程中有其他进程访问PMS中的需持锁方法,则必须等待,会出现无响应的现象。若此时system_server进程需要拿锁,且等待时长达到1min,则会触发system_server的watchdog,杀死system_server进程,***重启。
本公开实施例基于不同类型的编译场景,选择合适的编辑进程触发时间。例如,可以是基于手机等终端中的常用编译场景,划分第一类编译场景和第二类编译场景,并针对第一类编译场景重新设置编译进程的看门狗触发时间为第一时间,针对第二类编译场景保留原生编译进程的看门狗触发时间。
一种实施方式中,第一类编译场景包括以下之一或组合:应用动态加载字节码文件的编译场景,以及应用安装中的编译场景。
一种实施方式中,第二类编译场景包括以下之一或组合:***空闲状态下的编译场景,***启动过程中的编译场景,***构建过程中构建服务的编译场景,***程序函数库预建过程的编译场景,以及调试模式下的编译场景。
一示例中,在第二类编译场景下,使用dex2oat编译工具原生设置的触发看门狗时间对编译进程进行监控。其中,dex2oat编译工具原生设置的触发看门狗时间为9.5分钟。另一示例中,在第一类编译场景下,修改dex2oat编译工具的触发看门狗时间为55秒。由于***服务进程响应的触发看门狗时间为1分钟,故此类场景下dex2oat编译工具的触发看门狗时间小于***服务进程响应的触发看门狗时间,不会出现***服务进程响应超时触发看门狗的情况。此类场景下设置dex2oat编译工具55秒触发看门狗的方法,既可以使dex2oat编译工具大概率完成编译工作,又可以使***服务进程响应的看门狗免于触发。
本公开实施例以下结合实际应用对上述实施例涉及的编译方法进行说明。
图5是根据一示例性实施例示出的一种基于第一类场景的编译方法流程图。如图5所示,在本公开实施例提供的编译方法中步骤S31和步骤S32,与图2所示的执行方法中步骤S11和步骤S12施过程相似,在此不再赘述。
在步骤S33中,响应于当前编译进程在第一时间之前完成编译,或者当前编译进程在第一时间未完成编译,控制当前编译进程释放锁。
本公开实施例中,响应于当前编译进程在第一时间之前完成编译,或者当前编译进程在第一时间未完成编译,控制当前编译进程释放锁。其中,PMS中的相关方法将在dex2oat编译完成或dex2oat编译触发watchdog后释放锁,由于dex2oat编译任务触发watchdog的时间设置为55秒,故相应于dex2oat的编译任务,PMS中相关方法的持锁时间不会超过55秒。
本公开实施例以下对编辑进程编译过程中***服务进程争锁的情况进行说明。
本公开实施例中,响应于***服务进程争锁,在第二时间之前,控制***服务进程持锁。
在步骤S34中,响应于***服务进程争锁,在第二时间之前,控制***服务进程持锁。
本公开实施例在***服务进程等锁超时前,确保***服务进程能够拿到锁,防止因***服务进程等锁超时触发看门狗而出现***重启的情况。
图6是根据一示例性实施例示出的一种基于第一类编译场景的编译方法的流程示意图。如图6所示,将第一类编译场景下dex2oat编译进程触发看门狗时间修改为55秒。当dex2oat进行编译时,PackageManagerService.performDexOptInternalWithDependenciesLi持锁PackageManagerService.mInstallLock。当***服务进程或其他进程访问PMS方法需拿锁时,dex2oat将于编译完成返回时或编译时长达到触发看门狗时间时释放锁,此时***服务进程不会因等锁超时而触发***服务进程响应的看门狗,其他进程也因及时获得锁而继续执行。
其中,在本公开实施例一实施方式中,启动dex2oat编译任务,获取***日志(adblogcat)观察dex2oat进程记录(log),当编译时长达到触发看门狗时间时,杀死dex2oat进程并打印以下log:08-26 10:19:33.764 5265 5265 I dex2oat:dex2oat did not finishafter 55 seconds。本公开实施例可以理解为,***确认编译进程没有完成编译触发看门狗并记录了触发看门狗的具体时间。
本公开实施例提供的编译方法,基于对第一类场景下编译进程触发看门狗时间的调整,避免了因编译过慢,持锁时间过长导致***服务进程触发看门狗的情况发生,提升***的稳定性。通过本公开可以大概率地减少因编译进程持锁过长引发其他操作无响应的几率,改善了用户的使用体验。
基于相同的构思,本公开实施例还提供一种编译装置。
可以理解的是,本公开实施例提供的编译装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本公开实施例中所公开的各示例的单元及算法步骤,本公开实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本公开实施例的技术方案的范围。
图7是根据一示例性实施例示出的一种编译装置框图。参照图7,该装置100包括确定单元101,监控单元102。
确定单元101,用于确定当前编译进程对应的当前编译场景。监控单元102,用于在当前编译场景为第一类编译场景时,使用第一时间监控当前编译进程。第一时间为编译进程触发看门狗的编译时长,第一时间小于第二时间,第二时间为***服务进程触发看门狗的等锁时长。
一种实施方式中,监控单元102还用于:在当前编译场景为第二类编译场景,使用编译进程触发看门狗的原生时间监控编译进程。
一种实施方式中,监控单元102采用如下方式使用第一时间监控当前编译进程:
响应于当前编译进程在第一时间之前完成编译,或者当前编译进程在第一时间未完成编译,控制当前编译进程释放锁。
一种实施方式中,监控单元102还用于:控制当前编译进程释放锁之后,响应于***服务进程争锁,在第二时间之前,控制***服务进程持锁。
一种实施方式中,第一类编译场景包括以下之一或组合:应用动态加载字节码文件的编译场景。以及应用安装中的编译场景。
一种实施方式中,第二类编译场景包括以下之一或组合:***空闲状态下的编译场景。***启动过程中的编译场景。***构建过程中构建服务的编译场景。***程序函数库预建过程的编译场景。以及调试模式下的编译场景。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图8是根据一示例性实施例示出的一种用于编译的装置200的框图。例如,装置200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图8,装置200可以包括以下一个或多个组件:处理组件202,存储器204,电力组件206,多媒体组件208,音频组件210,输入/输出(I/O)接口212,传感器组件214,以及通信组件216。
处理组件202通常控制装置200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件202可以包括一个或多个处理器220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件202可以包括一个或多个模块,便于处理组件202和其他组件之间的交互。例如,处理组件202可以包括多媒体模块,以方便多媒体组件208和处理组件202之间的交互。
存储器204被配置为存储各种类型的数据以支持在装置200的操作。这些数据的示例包括用于在装置200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件206为装置200的各种组件提供电力。电力组件206可以包括电源管理***,一个或多个电源,及其他与为装置200生成、管理和分配电力相关联的组件。
多媒体组件208包括在所述装置200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件208包括一个前置摄像头和/或后置摄像头。当装置200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜***或具有焦距和光学变焦能力。
音频组件210被配置为输出和/或输入音频信号。例如,音频组件210包括一个麦克风(MIC),当装置200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器204或经由通信组件216发送。在一些实施例中,音频组件210还包括一个扬声器,用于输出音频信号。
I/O接口212为处理组件202和***接口模块之间提供接口,上述***接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件214包括一个或多个传感器,用于为装置200提供各个方面的状态评估。例如,传感器组件214可以检测到装置200的打开/关闭状态,组件的相对定位,例如所述组件为装置200的显示器和小键盘,传感器组件214还可以检测装置200或装置200一个组件的位置改变,用户与装置200接触的存在或不存在,装置200方位或加速/减速和装置200的温度变化。传感器组件214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件214还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件216被配置为便于装置200和其他设备之间有线或无线方式的通信。装置200可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件216经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件216还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置200可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器204,上述指令可由装置200的处理器220执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
可以理解的是,本公开中“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
进一步可以理解的是,术语“第一”、“第二”等用于描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开,并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。
进一步可以理解的是,除非有特殊说明,“连接”包括两者之间不存在其他构件的直接连接,也包括两者之间存在其他元件的间接连接。
进一步可以理解的是,本公开实施例中尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (14)

1.一种编译方法,其特征在于,所述编译方法包括:
确定当前编译进程对应的当前编译场景;
在所述当前编译场景为第一类编译场景时,使用第一时间监控所述当前编译进程;
所述第一时间为编译进程触发看门狗的编译时长,所述第一时间小于第二时间,所述第二时间为***服务进程触发看门狗的等锁时长。
2.根据权利要求1所述的编译方法,其特征在于,所述编译方法还包括:
在所述当前编译场景为第二类编译场景时,使用编译进程触发看门狗的原生时间监控编译进程。
3.根据权利要求1或2所述的编译方法,其特征在于,使用第一时间监控所述当前编译进程,包括:
响应于所述当前编译进程在第一时间之前完成编译,或者所述当前编译进程在第一时间未完成编译,控制所述当前编译进程释放锁。
4.根据权利要求3所述的编译方法,其特征在于,控制所述当前编译进程释放锁之后,所述方法还包括:
响应于***服务进程争锁,在所述第二时间之前,控制所述***服务进程持锁。
5.根据权利要求1所述的编译方法,其特征在于,所述第一类编译场景包括以下之一或组合:
应用动态加载字节码文件的编译场景;以及
应用安装中的编译场景。
6.根据权利要求2所述的编译方法,其特征在于,所述第二类编译场景包括以下之一或组合:
***空闲状态下的编译场景;
***启动过程中的编译场景;
***构建过程中构建服务的编译场景;
***程序函数库预建过程的编译场景;以及
调试模式下的编译场景。
7.一种编译装置,其特征在于,所述编译装置包括:
确定单元,用于确定当前编译进程对应的当前编译场景;
监控单元,用于在所述当前编译场景为第一类编译场景时,使用第一时间监控所述当前编译进程;所述第一时间为编译进程触发看门狗的编译时长,所述第一时间小于第二时间,所述第二时间为***服务进程触发看门狗的等锁时长。
8.根据权利要求7所述的编译装置,其特征在于,所述监控单元还用于:
在所述当前编译场景为第二类编译场景时,使用编译进程触发看门狗的原生时间监控编译进程。
9.根据权利要求7或8所述的编译装置,其特征在于,所述监控单元采用如下方式使用第一时间监控所述当前编译进程:
响应于所述当前编译进程在第一时间之前完成编译,或者所述当前编译进程在第一时间未完成编译,控制所述当前编译进程释放锁。
10.根据权利要求9所述的编译装置,其特征在于,所述监控单元还用于:
控制所述当前编译进程释放锁之后,响应于***服务进程争锁,在所述第二时间之前,控制所述***服务进程持锁。
11.根据权利要求7所述的编译装置,其特征在于,所述第一类编译场景包括以下之一或组合:
应用动态加载字节码文件的编译场景;以及
应用安装中的编译场景。
12.根据权利要求8所述的编译装置,其特征在于,所述第二类编译场景包括以下之一或组合:
***空闲状态下的编译场景;
***启动过程中的编译场景;
***构建过程中构建服务的编译场景;
***程序函数库预建过程的编译场景;以及
调试模式下的编译场景。
13.一种编译装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:执行权利要求1至6中任意一项所述的编译方法。
14.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行权利要求1至6中任意一项所述的编译方法。
CN202110152449.XA 2021-02-03 2021-02-03 一种编译方法、编译装置及存储介质 Pending CN114860242A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110152449.XA CN114860242A (zh) 2021-02-03 2021-02-03 一种编译方法、编译装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110152449.XA CN114860242A (zh) 2021-02-03 2021-02-03 一种编译方法、编译装置及存储介质

Publications (1)

Publication Number Publication Date
CN114860242A true CN114860242A (zh) 2022-08-05

Family

ID=82622974

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110152449.XA Pending CN114860242A (zh) 2021-02-03 2021-02-03 一种编译方法、编译装置及存储介质

Country Status (1)

Country Link
CN (1) CN114860242A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543334A (zh) * 2022-09-19 2022-12-30 荣耀终端有限公司 编译优化方法及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543334A (zh) * 2022-09-19 2022-12-30 荣耀终端有限公司 编译优化方法及电子设备
CN115543334B (zh) * 2022-09-19 2023-10-27 荣耀终端有限公司 编译优化方法及电子设备

Similar Documents

Publication Publication Date Title
CN105955765B (zh) 应用预加载方法及装置
EP3096224B1 (en) Method and apparatus for processing application installation package
CN107291626B (zh) 数据存储方法和装置
CN109254849B (zh) 应用程序的运行方法及装置
CN110781080B (zh) 程序调试方法及装置、存储介质
RU2644557C1 (ru) Способ и устройство для установки будильника
CN105930213A (zh) 应用运行方法及装置
CN109901886B (zh) 页面语言切换方法、***、装置和计算机可读存储介质
CN114860242A (zh) 一种编译方法、编译装置及存储介质
CN111596980B (zh) 一种信息处理方法及装置
CN112214254A (zh) 加速应用程序启动的方法及装置、以及电子设备
EP3200075A1 (en) Method and device for calling process
CN112256563A (zh) 安卓应用稳定性测试方法、装置、电子设备及存储介质
CN116360979A (zh) 内存分配方法、装置、电子设备及可读存储介质
CN110888822B (zh) 内存处理方法、装置及存储介质
CN115604132A (zh) 服务器的远程控制方法、装置、电子设备和可读存储介质
CN114661606A (zh) 程序调试方法、装置、电子设备及存储介质
CN113778696A (zh) 线程控制方法、线程控制装置及存储介质
CN112286687A (zh) 一种资源处理方法及装置
CN112631695A (zh) 一种数据校验方法、装置、电子设备及存储介质
CN112083981A (zh) 一种页面视图组件的创建方法和装置
CN111597106A (zh) 一种埋点管理方法及装置
CN114115025B (zh) 基于自动驾驶***的故障信息的保存方法、装置和设备
CN112506628B (zh) 代理程序的管理方法、装置、计算机设备及存储介质
CN114531493B (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