CN106445662B - 一种移植应用程序的方法及终端设备 - Google Patents

一种移植应用程序的方法及终端设备 Download PDF

Info

Publication number
CN106445662B
CN106445662B CN201610822584.XA CN201610822584A CN106445662B CN 106445662 B CN106445662 B CN 106445662B CN 201610822584 A CN201610822584 A CN 201610822584A CN 106445662 B CN106445662 B CN 106445662B
Authority
CN
China
Prior art keywords
virtual machine
application program
patch
code
native system
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.)
Active
Application number
CN201610822584.XA
Other languages
English (en)
Other versions
CN106445662A (zh
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.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp 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 Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN201610822584.XA priority Critical patent/CN106445662B/zh
Publication of CN106445662A publication Critical patent/CN106445662A/zh
Application granted granted Critical
Publication of CN106445662B publication Critical patent/CN106445662B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration

Abstract

本发明实施例公开了一种移植应用程序的方法及终端设备,应用于计算机技术领域,其中方法的实现包括:加载原生系统,获取所述原生系统中的虚拟机代码;对所述虚拟机代码进行打补丁操作,得到目标虚拟机;用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包,并通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。实施本发明实施例,可以避免对原生框架的修改,进而降低了移植应用程序的时间。

Description

一种移植应用程序的方法及终端设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种移植应用程序的方法及终端设备。
背景技术
随着智能手机等终端设备硬件性能的提升,附加在终端设备上的各种增值业务也越来越丰富,因此,各大厂商纷纷在设备出厂之前就通过对原生系统的修改在自己的终端设备中内置了各种各样的应用程序。所谓原生系统是指没有经过修改、破解或者优化的,是操作系统最基层的也是最纯净的版本,一般来说,主要是指各操作系统生产商最初建立的模型。各厂商可以在模型的基础上进行不断改进和优化,生产出不同的新版本。
目前,主要通过对原生系统中的原生框架(FRAMEWORKS)进行修改来达到更换应用程序的目的。但是修改原生框架不仅工作量大,操作复杂,而且占用时间较长,延长了应用程序的移植周期。
发明内容
本发明实施例提供了一种移植应用程序的方法及终端设备,可以避免对原生框架的修改,进而降低了移植应用程序的时间。
一方面本发明实施例提供了一种移植应用程序的方法,包括:
加载原生系统,获取所述原生系统中的虚拟机代码;
对所述虚拟机代码进行打补丁操作,得到目标虚拟机;
用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包,并通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
作为一种可选的实施方式,所述对所述虚拟机代码进行打补丁操作,得到目标虚拟机,包括:
将包含补丁代码的补丁文件动态加载到所述虚拟机代码所处的所述原生系统中;
针对所述补丁文件进行配置,以与所述原生系统建立链接关系;
将所述虚拟机代码的执行跳转到所述补丁代码的执行。
作为一种可选的实施方式,在所述将所述虚拟机代码的执行跳转到所述补丁代码的执行之前,所述方法还包括:
根据建立的所述链接关系将所述虚拟机代码包含的函数入口指令修改为一条跳转指令,所述跳转指令用以跳转到所述补丁代码的补丁函数入口;
所述将所述虚拟机代码的执行跳转到所述补丁代码的执行,包括:
通过所述补丁函数入口将所述虚拟机代码的执行跳转到所述补丁代码的执行。
作为一种可选的实施方式,所述用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包,包括:
将所述原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
将待移植应用程序的安装包放置于所述ROM文件目录中。
作为一种可选的实施方式,在所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译之前,所述方法还包括:
检测是否接收到针对所述待移植应用程序的安装指令;
若接收到针对所述待移植应用程序的安装指令,则执行所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
本发明实施例二方面提供了一种终端设备,包括:
获取单元,用于加载原生系统,获取所述原生系统中的虚拟机代码;
打补丁单元,用于对所述虚拟机代码进行打补丁操作,得到目标虚拟机;
替换单元,用于用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包;
编译单元,用于通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
作为一种可选的实施方式,所述打补丁单元包括:
加载单元,用于将包含补丁代码的补丁文件动态加载到所述虚拟机代码所处的所述原生系统中;
链接单元,用于针对所述补丁文件进行配置,以与所述原生系统建立链接关系;
跳转单元,用于将所述虚拟机代码的执行跳转到所述补丁代码的执行。
作为一种可选的实施方式,所述终端设备还包括:
修改单元,用于根据建立的所述链接关系将所述虚拟机代码包含的函数入口指令修改为一条跳转指令,所述跳转指令用以跳转到所述补丁代码的补丁函数入口,并驱动所述跳转单元通过所述补丁函数入口将所述虚拟机代码的执行跳转到所述补丁代码的执行。
作为一种可选的实施方式,所述替换单元包括:
移除单元,用于将所述原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
放置单元,用于将待移植应用程序的安装包放置于所述ROM文件目录中。
作为一种可选的实施方式,所述终端设备还包括:
检测单元,用于检测是否接收到针对所述待移植应用程序的安装指令;若接收到针对所述待移植应用程序的安装指令,则驱动所述编译单元执行所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
三方面本发明实施例还提供了一种终端设备,包括:处理器和存储器:
所述存储器存储有可执行程序代码;
所述处理器用于调用所述存储器中存储的所述可执行程序代码,执行本发明实施例提供的任意一项所述的方法。
从以上技术方案可以看出,本发明实施例具有以下优点:获取原生系统中的虚拟机代码,然后对上述虚拟机代码进行打补丁操作,得到目标虚拟机,通过目标虚拟机对替换原生系统中的应用程序的安装包的待移植应用程序的安装包进行预编译。可以避免对原生框架的修改,进而降低了移植应用程序的时间。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例公开的一种移植应用程序的方法的流程示意图;
图2为本发明实施例公开的另一种移植应用程序的方法的流程示意图;
图3为本发明实施例公开的一种终端设备的结构示意图;
图4为本发明实施例公开的另一种终端设备的结构示意图;
图5为本发明实施例公开的一种终端设备的结构示意图;
图6为本发明实施例公开的另一种终端设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及附图中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
基于背景技术的介绍可知,以Android系统为例,存在Dalvik虚拟机或者ART(Android Runtime)虚拟机,其中,ART虚拟机出现于Android 4.4及以后的操作系统中,ART源于google收购的Flexycore的公司,ART模式与Dalvik模式最大的不同在于,启用ART模式后,系统在安装应用的时候会进行一次预编译,将字节码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。本发明实施例中的虚拟机可以是Dalvik虚拟机、ART虚拟机或者其它任何系统的虚拟机,本发明实施例后续不作复述。
本发明实施例中,终端设备包括运行Android操作系统、iOS操作系统、Windows操作系统或其他操作系统的终端设备,例如移动电话、移动电脑、平板电脑、台式电脑、个人数字助理(Personal Digital Assistant,PDA)、智能手表、智能手环等终端设备,本发明实施例后续不作复述。
本发明实施例提供了一种移植应用程序的方法及终端设备,可以避免对原生框架的修改,进而降低了移植应用程序的时间。以下分别进行详细说明。
请参阅图1,图1为本发明实施例公开的一种移植应用程序的方法的流程示意图。其中,图1所示的移植应用程序的方法可以包括以下步骤:
101:加载原生系统,获取上述原生系统中的虚拟机代码;
本发明实施例中的原生系统是指没有经过修改、破解或者优化的,是操作系统最基层的也是最纯净的版本,一般来说,主要是指各操作系统生产商最初建立的模型。各厂商可以在模型的基础上进行不断改进和优化,生产出不同的新版本。
其中,原生系统中的虚拟机可以使得操作系统可移植于任何终端设备中,可以不受终端设备硬件的影响,提高了操作系统的可移植性。
102:对上述虚拟机代码进行打补丁操作,得到目标虚拟机;
作为一种可选的实施方式,对虚拟机代码进行打补丁操作,可以包括以下步骤:
将包含补丁代码的补丁文件动态加载到虚拟机代码所处的原生系统中;
针对上述补丁文件进行配置,以与上述原生系统建立链接关系;
将上述虚拟机代码的执行跳转到上述补丁代码的执行。
其中,“补丁代码”理解为用于打补丁的程序或代码,术语“补丁文件”理解为基于一定的格式将补丁代码编译后的生成的文件,该编译技术在本技术领域中通常也理解为离线处理,即当前系统外的处理。在此,可以包括对代码进行编译和链接等等。编译就是通常所言的利用编译程序从源语言编写的源程序产生目标程序的过程,而链接是指在电子计算机程序的各模块之间传递参数和控制命令,并把它们组成一个可执行的整体的过程。通常,补丁文件包括:补丁初始化入口函数、补丁函数、文本段、字符段、数据段、重定位段等等,本发明实施例不作唯一性限定。其中,补丁文件可以是可执行的链接格式(ELF)目标文件,并且以各种编程语言以函数为单位来编辑。
其中,针对上述补丁文件进行配置,以与上述原生系统建立链接关系,具体可以为通过重定位和链接补丁文件将补丁代码初始化。重定位可以理解为,将程序或代码的逻辑地址空间变换成原生系统的内存中的实际物理地址空间的过程。重定位包括动态重定位和静态重定位。以动态重定位为例,在补丁文件装入原生系统之后,只有在原生系统调用补丁文件时才动态地将逻辑地址(也称为相对地址)转换为物理地址(也称为绝对地址)。链接则是指从一个对象指向另一个对象的连接关系。在此对象可以理解为例如补丁文件、补丁代码和虚拟机代码等等中的各种函数、符号和全局变量等等。重定位和链接补丁文件就是针对补丁文件进行配置,使之与原生系统建立连接关系(也称为映射关系),从而完成补丁代码的初始化。
其中,在原生系统调用虚拟机代码时,原生系统根据建立的链接关系调用补丁代码并且执行,从而虚拟机代码的执行被通过补丁代码的执行而取代。由此,实现了打补丁的过程。
103:用待移植应用程序的安装包替换原生系统中的应用程序的安装包,并通过目标虚拟机对待移植应用程序的安装包进行预编译。
其中,用待移植应用程序的安装包替换原生系统中的应用程序的安装包,可以包括以下步骤:
将原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
将待移植应用程序的安装包放置于上述ROM文件目录中。
在图1所示的方法中,首先获取原生系统中的虚拟机代码,然后对上述虚拟机代码进行打补丁操作,得到目标虚拟机,通过目标虚拟机对替换原生系统中的应用程序的安装包的待移植应用程序的安装包进行预编译。可以避免对原生框架的修改,进而降低了移植应用程序的时间。
请参阅图2,图2为本发明实施例公开的另一种移植应用程序的方法的流程示意图。如图2所示,该方法可以包括以下步骤:
201:加载原生系统,获取上述原生系统中的虚拟机代码;
202:将包含补丁代码的补丁文件动态加载到虚拟机代码所处的原生系统中;
203:针对上述补丁文件进行配置,以与上述原生系统建立链接关系;
204:根据建立的链接关系将虚拟机代码包含的函数入口指令修改为一条跳转指令,上述跳转指令用以跳转到补丁代码的补丁函数入口;
205:通过补丁函数入口将虚拟机代码的执行跳转到补丁代码的执行;
206:将原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
207:将待移植应用程序的安装包放置于ROM文件目录中;
208:检测是否接收到针对上述待移植应用程序的安装指令;
209:若接收到针对上述待移植应用程序的安装指令,则通过目标虚拟机对上述待移植应用程序的安装包进行预编译。
其中,待移植应用程序的安装指令可以是在系统启动的时候也可以是系统启动完成后用户自行安装应用程序的时候,还可以是编译程序的时候,具体采用何种方式本发明实施例不作唯一性限定。
其中,通过目标虚拟机对上述待移植应用程序的安装包进行预编译,表示在运行虚拟机代码时,通过跳转指令跳转到补丁代码的补丁函数入口处,从而执行补丁代码,从而对待移植应用程序的安装包进行预编译,其中,预编译除了表示对/system/app和/data/app目录下的所有APK进行dex字节码到本地机器码的翻译之外,还会对/system/framework目录下的APK或者JAR文件,以及这些APK所引用的外部JAR进行dex字节码到本地机器码的翻译。可以保证除了应用之外,系统中使用Java来开发的系统服务,也会统一地从dex字节码翻译成本地机器码。
请参阅图3,图3是本发明的一个实施例提供的一种终端设备的结构示意图。其中,该终端设备可以是智能手机、平板电脑、智能穿戴设备等终端设备。该终端设备包括:
获取单元301,用于加载原生系统,获取原生系统中的虚拟机代码;
打补丁单元302,用于对上述虚拟机代码进行打补丁操作,得到目标虚拟机;
替换单元303,用于用待移植应用程序的安装包替换原生系统中的应用程序的安装包;
编译单元304,用于通过上述目标虚拟机对待移植应用程序的安装包进行预编译。
本发明实施例中,各功能单元的具体实施方式可以参照方法实施例1中的描述,本发明实施例将不作复述。
本发明实施例中,通过获取单元301获取原生系统中的虚拟机代码,然后通过打补丁单元302对上述虚拟机代码进行打补丁操作,得到目标虚拟机,通过替换单元303用待移植应用程序的安装包替换原生系统中的应用程序的安装包,最后通过编译单元304通过上述目标虚拟机对待移植应用程序的安装包进行预编译。可以避免对原生框架的修改,进而降低了移植应用程序的时间。
请一并参阅图4,图4为本发明实施例公开的另一种终端设备的结构示意图。其中,图4所示的终端设备是由图3所示的终端设备进行优化得到的,与图3所示的终端设备相比,在图4所示的终端设备中,上述打补丁单元302包括:
加载单元3021,用于将包含补丁代码的补丁文件动态加载到虚拟机代码所处的原生系统中;
链接单元3022,用于针对补丁文件进行配置,以与原生系统建立链接关系;
跳转单元3033,用于将虚拟机代码的执行跳转到补丁代码的执行。
其中,加载单元3021、链接单元3022以及跳转单元3033具体说明了对虚拟机代码进行打补丁的实现过程。
可选地,在图4所示的终端设备中,该终端设备还包括:
修改单元305,用于根据建立的链接关系将虚拟机代码包含的函数入口指令修改为一条跳转指令,该跳转指令用以跳转到补丁代码的补丁函数入口,并驱动上述跳转单元3033通过补丁函数入口将虚拟机代码的执行跳转到补丁代码的执行。
可选地,在图4所示的终端设备中,上述替换单元303包括:
移除单元3031,用于将原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
放置单元3032,用于将待移植应用程序的安装包放置于ROM文件目录中。
可选地,在图4所示的终端设备中,该终端设备还包括:
检测单元306,用于检测是否接收到针对上述待移植应用程序的安装指令;若接收到针对上述待移植应用程序的安装指令,则驱动上述编译单元304通过目标虚拟机对上述待移植应用程序的安装包进行预编译。
请参阅图5,图5为本发明实施例公开的一种终端设备的结构示意图。如图5所示,该终端设备包括:处理器501以及存储器502;其中存储器502可以用于处理器501执行数据处理所需要的缓存,还可以用于提供处理器501执行数据处理调用的数据以及获得的结果数据的存储空间。
在本发明实施例中,处理器501通过调用存储于存储器502中的程序代码,用于执行以下操作:
加载原生系统,获取上述原生系统中的虚拟机代码;
对上述虚拟机代码进行打补丁操作,得到目标虚拟机;
用待移植应用程序的安装包替换上述原生系统中的应用程序的安装包,并通过上述目标虚拟机对上述待移植应用程序的安装包进行预编译。
作为一种可选的实施方式,处理器501通过调用存储于存储器502中的程序代码,对上述虚拟机代码进行打补丁操作,得到目标虚拟机,具体包括以下步骤:
将包含补丁代码的补丁文件动态加载到上述虚拟机代码所处的原生系统中;
针对上述补丁文件进行配置,以与上述原生系统建立链接关系;
将虚拟机代码的执行跳转到上述补丁代码的执行。
作为一种可选的实施方式,处理器501通过调用存储于存储器502中的程序代码,在将虚拟机代码的执行跳转到上述补丁代码的执行之前,还用于执行以下操作:
根据建立的链接关系将上述虚拟机代码包含的函数入口指令修改为一条跳转指令,上述跳转指令用以跳转到上述补丁代码的补丁函数入口;并通过上述补丁函数入口将上述虚拟机代码的执行跳转到上述补丁代码的执行。
作为一种可选的实施方式,处理器501通过调用存储于存储器502中的程序代码,用待移植应用程序的安装包替换原生系统中的应用程序的安装包,具体包括以下步骤:
将原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
将待移植应用程序的安装包放置于上述ROM文件目录中。
作为一种可选的实施方式,处理器501通过调用存储于存储器502中的程序代码,在通过目标虚拟机对上述待移植应用程序的安装包进行预编译之前,还用于执行以下操作:
检测是否接收到针对上述待移植应用程序的安装指令;
若接收到针对上述待移植应用程序的安装指令,则执行上述通过目标虚拟机对待移植应用程序的安装包进行预编译的步骤。
请参阅图6,图6为本发明实施例公开的另一种终端设备的结构示意图。如图6所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端设备可以为包括手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备,以终端设备为手机为例:
图6示出的是与本发明实施例提供的终端设备相关的手机的部分结构的框图。参考图6,手机包括:射频(Radio Frequency,RF)电路601、存储器602、输入单元603、显示单元604、传感器605、音频电路606、无线保真(wireless fidelity,WiFi)模块607、处理器608、以及电源609等部件。本领域技术人员可以理解,图6中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图6对手机的各个构成部件进行具体的介绍:
RF电路601可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器608处理;另外,将设计上行的数据发送给基站。通常,RF电路601包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,LNA)、双工器等。此外,RF电路601还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(GlobalSystem of Mobile communication,GSM)、通用分组无线服务(General Packet RadioService,GPRS)、码分多址(Code Division Multiple Access,CDMA)、宽带码分多址(Wideband Code Division Multiple Access,WCDMA)、长期演进(Long Term Evolution,LTE)、电子邮件、短消息服务(Short Messaging Service,SMS)等。
存储器602可用于存储软件程序以及模块,处理器608通过运行存储在存储器602的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器602可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元603可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元603可包括触控面板6031以及其他输入设备6032。触控面板6031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板6031上或在触控面板6031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板6031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器608,并能接收处理器608发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板6031。除了触控面板6031,输入单元603还可以包括其他输入设备6032。具体地,其他输入设备6032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元604可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元604可包括显示面板6041,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板6041。进一步的,触控面板6031可覆盖显示面板6041,当触控面板6031检测到在其上或附近的触摸操作后,传送给处理器608以确定触摸事件的类型,随后处理器608根据触摸事件的类型在显示面板6041上提供相应的视觉输出。虽然在图6中,触控面板6031与显示面板6041是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板6031与显示面板6041集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器605,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板6041的亮度,接近传感器可在手机移动到耳边时,关闭显示面板6041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路606、扬声器6061,传声器6062可提供用户与手机之间的音频接口。音频电路606可将接收到的音频数据转换后的电信号,传输到扬声器6061,由扬声器6061转换为声音信号输出;另一方面,传声器6062将收集的声音信号转换为电信号,由音频电路606接收后转换为音频数据,再将音频数据输出处理器608处理后,经RF电路601以发送给比如另一手机,或者将音频数据输出至存储器602以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块607可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图6示出了WiFi模块607,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器608是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器608可包括一个或多个处理单元;优选的,处理器608可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器608中。
手机还包括给各个部件供电的电源609(比如电池),优选的,电源可以通过电源管理系统与处理器608逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
前述实施例中,各步骤方法流程可以基于该终端设备的结构实现。
前述图1、图2所示的实施例中,各步骤方法流程可以基于该手机的结构实现。前述图3、图4、图5所示的实施例中,各单元功能可以基于该手机的结构实现。
值得注意的是,上述终端设备的实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (11)

1.一种移植应用程序的方法,其特征在于,包括:
加载原生系统,获取所述原生系统中的虚拟机代码;所述原生系统包括没有经过修改、破解或者优化的操作系统最基层的版本的系统;
对所述虚拟机代码进行打补丁操作,得到目标虚拟机;
用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包,并通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译;
所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译包括:对/system/app和/data/app目录下的所有APK进行dex字节码到本地机器码的翻译,对/system/framework目录下的APK或者JAR文件,以及这些APK所引用的外部JAR进行dex字节码到本地机器码的翻译。
2.根据权利要求1所述方法,其特征在于,所述对所述虚拟机代码进行打补丁操作,得到目标虚拟机,包括:
将包含补丁代码的补丁文件动态加载到所述虚拟机代码所处的所述原生系统中;
针对所述补丁文件进行配置,以与所述原生系统建立链接关系;
将所述虚拟机代码的执行跳转到所述补丁代码的执行。
3.根据权利要求2所述方法,其特征在于,在所述将所述虚拟机代码的执行跳转到所述补丁代码的执行之前,所述方法还包括:
根据建立的所述链接关系将所述虚拟机代码包含的函数入口指令修改为一条跳转指令,所述跳转指令用以跳转到所述补丁代码的补丁函数入口;
所述将所述虚拟机代码的执行跳转到所述补丁代码的执行,包括:
通过所述补丁函数入口将所述虚拟机代码的执行跳转到所述补丁代码的执行。
4.根据权利要求1至3任意一项所述方法,其特征在于,所述用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包,包括:
将所述原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
将待移植应用程序的安装包放置于所述ROM文件目录中。
5.根据权利要求1至3任意一项所述方法,其特征在于,在所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译之前,所述方法还包括:
检测是否接收到针对所述待移植应用程序的安装指令;
若接收到针对所述待移植应用程序的安装指令,则执行所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
6.一种终端设备,其特征在于,包括:
获取单元,用于加载原生系统,获取所述原生系统中的虚拟机代码;所述原生系统包括没有经过修改、破解或者优化的操作系统最基层的版本的系统;
打补丁单元,用于对所述虚拟机代码进行打补丁操作,得到目标虚拟机;
替换单元,用于用待移植应用程序的安装包替换所述原生系统中的应用程序的安装包;
编译单元,用于通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译;具体用于:对/system/app和/data/app目录下的所有APK进行dex字节码到本地机器码的翻译,对/system/framework目录下的APK或者JAR文件,以及这些APK所引用的外部JAR进行dex字节码到本地机器码的翻译。
7.根据权利要求6所述终端设备,其特征在于,所述打补丁单元包括:
加载单元,用于将包含补丁代码的补丁文件动态加载到所述虚拟机代码所处的所述原生系统中;
链接单元,用于针对所述补丁文件进行配置,以与所述原生系统建立链接关系;
跳转单元,用于将所述虚拟机代码的执行跳转到所述补丁代码的执行。
8.根据权利要求7所述终端设备,其特征在于,所述终端设备还包括:
修改单元,用于根据建立的所述链接关系将所述虚拟机代码包含的函数入口指令修改为一条跳转指令,所述跳转指令用以跳转到所述补丁代码的补丁函数入口,并驱动所述跳转单元通过所述补丁函数入口将所述虚拟机代码的执行跳转到所述补丁代码的执行。
9.根据权利要求6至8任意一项所述终端设备,其特征在于,所述替换单元包括:
移除单元,用于将所述原生系统中的应用程序的安装包从只读存储器ROM的文件目录下移除;
放置单元,用于将待移植应用程序的安装包放置于所述ROM文件目录中。
10.根据权利要求6至8任意一项所述终端设备,其特征在于,所述终端设备还包括:
检测单元,用于检测是否接收到针对所述待移植应用程序的安装指令;若接收到针对所述待移植应用程序的安装指令,则驱动所述编译单元执行所述通过所述目标虚拟机对所述待移植应用程序的安装包进行预编译。
11.一种终端设备,包括:处理器和存储器,其特征在于,
所述存储器存储有可执行程序代码;
所述处理器用于调用所述存储器中存储的所述可执行程序代码,执行权利要求1至5任意一项所述的方法。
CN201610822584.XA 2016-09-13 2016-09-13 一种移植应用程序的方法及终端设备 Active CN106445662B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610822584.XA CN106445662B (zh) 2016-09-13 2016-09-13 一种移植应用程序的方法及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610822584.XA CN106445662B (zh) 2016-09-13 2016-09-13 一种移植应用程序的方法及终端设备

Publications (2)

Publication Number Publication Date
CN106445662A CN106445662A (zh) 2017-02-22
CN106445662B true CN106445662B (zh) 2019-09-10

Family

ID=58169056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610822584.XA Active CN106445662B (zh) 2016-09-13 2016-09-13 一种移植应用程序的方法及终端设备

Country Status (1)

Country Link
CN (1) CN106445662B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391223B (zh) * 2017-03-30 2021-03-19 创新先进技术有限公司 一种文件处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765634A (zh) * 2015-05-06 2015-07-08 山东中孚信息产业股份有限公司 一种Linux系统内核新功能增加方法
CN104981778A (zh) * 2013-02-22 2015-10-14 马维尔国际贸易有限公司 修补只读存储器的引导代码
CN105468410A (zh) * 2015-11-24 2016-04-06 小米科技有限责任公司 系统升级方法及装置
CN105700923A (zh) * 2016-01-08 2016-06-22 深圳市创想天空科技股份有限公司 安装应用程序的方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102500B (zh) * 2013-04-03 2017-12-01 腾讯科技(深圳)有限公司 一种应用程序的进程启动方法及计算机系统
WO2014176587A2 (en) * 2013-04-26 2014-10-30 The Trustees Of Columbia University In The City Of New York Systems and methods for mobile applications
CN105335200B (zh) * 2015-11-24 2019-05-07 小米科技有限责任公司 系统升级方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104981778A (zh) * 2013-02-22 2015-10-14 马维尔国际贸易有限公司 修补只读存储器的引导代码
CN104765634A (zh) * 2015-05-06 2015-07-08 山东中孚信息产业股份有限公司 一种Linux系统内核新功能增加方法
CN105468410A (zh) * 2015-11-24 2016-04-06 小米科技有限责任公司 系统升级方法及装置
CN105700923A (zh) * 2016-01-08 2016-06-22 深圳市创想天空科技股份有限公司 安装应用程序的方法及系统

Also Published As

Publication number Publication date
CN106445662A (zh) 2017-02-22

Similar Documents

Publication Publication Date Title
CN106970790B (zh) 一种应用程序创建的方法、相关设备及系统
CN109753276B (zh) 一种基于虚幻引擎的控制方法及相关装置
CN106502703B (zh) 一种函数调用方法和装置
CN104765591A (zh) 一种软件配置参数更新的方法、终端服务器及系统
CN107908407B (zh) 编译方法、装置及终端设备
CN108228230A (zh) Ufs固件的升级方法、终端及计算机可读存储介质
CN109857403A (zh) 一种页面更新、页面处理方法及装置
CN109791497A (zh) 一种执行热补丁的方法、装置及终端
CN109977013B (zh) 一种调试信息获取方法、系统及装置
EP2869604B1 (en) Method, apparatus and device for processing a mobile terminal resource
CN108920220A (zh) 一种函数调用的方法、装置及终端
CN111723002A (zh) 一种代码调试方法、装置、电子设备及存储介质
CN110378107A (zh) 一种安装包检测的方法及相关装置
CN108431767A (zh) 一种加载软件程序的方法、用户终端及存储介质
CN109240902A (zh) 一种获取电子设备的固件代码的方法和装置
CN110046497A (zh) 一种函数挂钩实现方法、装置和存储介质
CN106657254B (zh) 一种联系人信息的同步方法、装置及系统
CN110609694A (zh) 一种bug的修复方法、装置、终端设备及存储介质
CN110413639A (zh) 数据核查方法及装置、电子设备和计算机可读存储介质
CN106407800A (zh) 一种hook的方法及终端设备
CN104423990B (zh) 一种磁贴的更新方法和装置
CN104978237B (zh) 修复动态链接库文件的方法和装置
CN106445662B (zh) 一种移植应用程序的方法及终端设备
CN109062643A (zh) 一种显示界面调整方法、装置及终端
CN106919458B (zh) Hook目标内核函数的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee after: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

Address before: Changan town in Guangdong province Dongguan 523860 usha Beach Road No. 18

Patentee before: GUANGDONG OPPO MOBILE TELECOMMUNICATIONS Corp.,Ltd.

CP01 Change in the name or title of a patent holder