基于安卓平台的局部代码补丁更新方法及装置制造方法及图纸

技术编号:15391316 阅读:60 留言:0更新日期:2017-05-19 04:41
一种基于安卓平台的局部代码补丁更新方法,包括:启动目标程序,将用于局部代码更新的子可执行文件中的各个目标类配置为优先于目标程序的安装包中的主可执行文件中的各个类被加载;加载内存补丁文件,以屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误;重新启动目标程序,加载子可执行文件中的各个目标类,以及加载主可执行文件中除目标类之外的其他类。同时还提供了一种基于安卓平台的局部代码补丁更新装置,可实现主可执行文件中代码的局部更新,并无需在开发代码前预知将来需要更新的代码片段,从而可提高代码更新的灵活性及便捷性。

Local code patch updating method and device based on Android platform

A method for updating the local code based on the Android platform patch includes: a start target program, will be used to update the local code can each target class configuration in the executable file for each class prior to the target program installation package in the main executable file is loaded in memory; loading patch file to run for the same kind of shielding exists in multiple executable files and lead to error; restart the target program, loading can each target class in the executable file, and load the main executable file in the target class other than the class. Also provided is a device to update the Android platform patch based on local code, can achieve the main local update code in the executable file, there is no need to foresee the future need to update the code fragment in the development code, which can improve the flexibility and convenience of the code update.

【技术实现步骤摘要】
基于安卓平台的局部代码补丁更新方法及装置
本专利技术涉及计算机
,特别涉及一种基于安卓平台的局部代码补丁更新方法及装置。
技术介绍
现有技术中,在安卓(Android)系统中,只有在预知要更新的代码区域的情况下,才能将待更新的代码放在子Dex文件中实现,主Dex文件里使用反射调用的方式去调用所有待更新的代码,是当前使用的局部代码更新方式,其中主Dex文件是指APK(AndroidPackage,安卓安装包)文件中的classes.dex文件。当子Dex文件中的代码有新的版本时,就动态更新替换子Dex文件。但在以上现有技术中存在以下缺陷:1、须在开发代码前,预知将来需要更新的代码片段,然后将与更新相关的代码写到子Dex文件中,这种预知很困难;2、主Dex文件调用子Dex文件中的代码,只能使用反射调用的方式去执行,执行方式受限;3、主Dex文件中的代码无法实现局部更新。
技术实现思路
有鉴于此,本专利技术提供一种基于安卓平台的局部代码补丁方法及装置,通过改变子可执行文件中的类与主可执行文件中的类的搜索顺序,改变了子可执行文件中代码的执行方式,并实现了主可执行文件中代码的局部更新,并且无需在开发代码前预知将来需要更新的代码片段,从而可提高代码更新的灵活性及便捷性。本专利技术实施例提供一种基于安卓平台的局部代码补丁更新方法,应用于移动终端,包括:启动目标程序,将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载;加载内存补丁文件,以屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误;重新启动所述目标程序,加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类。本专利技术实施例提供一种基于安卓平台的局部代码补丁更新装置,运行于移动终端,包括:启动模块,用于启动目标程序;配置模块,用于将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载;补丁模块,用于加载内存补丁文件,以屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误;所述启动模块,还用于重新启动所述目标程序;加载模块,用于加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类。根据上述实施例中的基于安卓平台的局部代码补丁更新方法及装置,通过将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载,并加载用于屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误的内存补丁代码,使得子可执行文件中的类可优先于主可执行文件中的类被搜索,相较于现有技术,本专利技术改变了子可执行文件中代码的执行方式,并实现了主可执行文件中代码的局部更新,并且无需在开发代码前预知将来需要更新的代码片段,从而可提高代码更新的灵活性及便捷性。为让本专利技术的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。附图说明图1示出了一种移动终端结构框图;图2为本专利技术第一实施例中的基于安卓平台的局部代码补丁更新方法的流程示意图;图3为本专利技术第二实施例中的基于安卓平台的局部代码补丁更新方法的流程示意图;图4为本专利技术第三实施例中的基于安卓平台的局部代码补丁更新装置的结构示意图;图5为本专利技术第四实施例中的基于安卓平台的局部代码补丁更新装置的结构示意图。具体实施方式为更进一步阐述本专利技术为实现预定专利技术目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本专利技术的具体实施方式、结构、特征及其功效,详细说明如后。请参阅图1,图1为一种移动终端设备结构示意图。移动终端包括存储器102、存储控制器104,一个或多个(图中仅示出一个)处理器106、外设接口108、射频模块110、定位模块112、摄像模块114、音频模块116、触控屏幕118以及按键模块120。这些组件通过一条或多条通讯总线/信号线122相互通讯。可以理解,图1所示的结构仅为示意,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现存储器102可用于存储软件程序以及模块,如本专利技术实施例中的在终端设备内基于安卓平台的局部代码补丁更新方法及装置对应的程序指令/模块,处理器106通过运行存储在存储器102内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述基于安卓平台的局部代码补丁更新方法。存储器102可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器102可进一步包括相对于处理器106远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。处理器106以及其他可能的组件对存储器102的访问可在存储控制器104的控制下进行。外设接口108将各种输入/输入装置耦合至CPU以及存储器102。处理器106运行存储器102内的各种软件、指令以执行移动终端的各种功能以及进行数据处理。在一些实施例中,外设接口108,处理器106以及存储控制器104可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。射频模块110用于接收以及发送电磁波,实现电磁波与电信号的相互转换,从而与通讯网络或者其他设备进行通讯。射频模块110可包括各种现有的用于执行这些功能的电路元件,例如,天线、射频收发器、数字信号处理器、加密/解密芯片、用户身份模块(SIM)卡、存储器等等。射频模块110可与各种网络如互联网、企业内部网、无线网络进行通讯或者通过无线网络与其他设备进行通讯。上述的无线网络可包括蜂窝式电话网、无线局域网或者城域网。上述的无线网络可以使用各种通信标准、协议及技术,包括但并不限于全球移动通信系统(GlobalSystemforMobileCommunication,GSM)、增强型移动通信技术(EnhancedDataGSMEnvironment,EDGE),宽带码分多址技术(widebandcodedivisionmultipleaccess,W-CDMA),码分多址技术(Codedivisionaccess,CDMA)、时分多址技术(timedivisionmultipleaccess,TDMA),蓝牙,无线保真技术(Wireless,Fidelity,WiFi)(如美国电气和电子工程师协会标准IEEE802.11a,IEEE802.11b,IEEE802.11g和/或IEEE802.11n)、网络电话(Voiceoverinternetprotocal,VoIP)、全球微波互联接入(WorldwideInteroperabilityforMicrowaveAccess,Wi-Max)、其他用于邮件、即时通讯及短消息的协议,以及任何其他合适的通讯协议,甚至可包括那些当前仍未被开发出来的协议。定位模块112用于获取移动终端终端的当前位置。定位模块112的实例包括但不限于全球卫星定位系统(GPS)、基于无线局域网或者移动通信网的定本文档来自技高网...
基于安卓平台的局部代码补丁更新方法及装置

【技术保护点】
一种基于安卓平台的局部代码补丁更新方法,应用于移动终端,其特征在于,包括:启动目标程序,将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载;加载内存补丁文件,以屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误;重新启动所述目标程序,加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类。

【技术特征摘要】
1.一种基于安卓平台的局部代码补丁更新方法,应用于移动终端,其特征在于,包括:启动目标程序,将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载;加载内存补丁文件,以屏蔽因同一个类存在于多个可执行文件而导致的程序运行错误;重新启动所述目标程序,加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类。2.根据权利要求1所述的方法,其特征在于,所述将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载包括:将所述子可执行文件中的路径列表中的所有元素插入所述主可执行文件中的路径列表的首位,使得当所述子可执行文件与所述主可执行文件中包含相同的类时,所述目标程序只加载所述子可执行文件中的所述相同的类。3.根据权利要求2所述的方法,其特征在于,所述将所述子可执行文件中的路径列表中的所有元素插入所述主可执行文件中的路径列表的首位包括:通过所述目标程序中的AndroidManifest.xml中的Application类的attachBaseContext判断是否存在所述子可执行文件;若存在所述子可执行文件,则获取所述子可执行文件的类加载器文件;获取所述主可执行文件的类加载器文件;将所述子可执行文件的类加载器文件中的链表成员的所有元素与所述主可执行文件的类加载器文件中的链表成员的所有元素合并,并生产新的链表成员,所述子可执行文件的类加载器文件中的链表成员的所有元素在所述新的链表成员中,位于所述主可执行文件的类加载器文件中的链表成员的所有元素之前;使用所述新的链表成员替换所述主可执行文件的类加载器文件中的链表成员。4.根据权利要求3所述的方法,其特征在于,所述内存补丁文件基于hook函数生成,则所述重新启动所述目标程序与所述加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类之间包括:当检测到所述子可执行文件和所述主可执行文件中存在相同的类时,通过预置的hook函数返回真值。5.根据权利要求3所述的方法,其特征在于,所述加载内存补丁文件包括:加载内存补丁文件,通过所述内存补丁文件修改检测代码中的条件-结果语句,使得所述检测代码不论检测到所述子可执行文件和所述主可执行...

【专利技术属性】
技术研发人员:江威蒋宁波吴昊
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1