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.根据权利要求1所述的方法,其特征在于,所述将用于局部代码更新的子可执行文件中的各个目标类配置为优先于所述目标程序的安装包中的主可执行文件中的各个类被加载包括:将所述子可执行文件中的路径列表中的所有元素插入所述主可执行文件中的路径列表的首位,使得当所述子可执行文件与所述主可执行文件中包含相同的类时,所述目标程序只加载所述子可执行文件中的所述相同的类。3.根据权利要求2所述的方法,其特征在于,所述将所述子可执行文件中的路径列表中的所有元素插入所述主可执行文件中的路径列表的首位包括:通过所述目标程序中的AndroidManifest.xml中的Application类的attachBaseContext判断是否存在所述子可执行文件;若存在所述子可执行文件,则获取所述子可执行文件的类加载器文件;获取所述主可执行文件的类加载器文件;将所述子可执行文件的类加载器文件中的链表成员的所有元素与所述主可执行文件的类加载器文件中的链表成员的所有元素合并,并生产新的链表成员,所述子可执行文件的类加载器文件中的链表成员的所有元素在所述新的链表成员中,位于所述主可执行文件的类加载器文件中的链表成员的所有元素之前;使用所述新的链表成员替换所述主可执行文件的类加载器文件中的链表成员。4.根据权利要求3所述的方法,其特征在于,所述内存补丁文件基于hook函数生成,则所述重新启动所述目标程序与所述加载所述子可执行文件中的各个目标类,以及加载所述主可执行文件中除所述目标类之外的其他类之间包括:当检测到所述子可执行文件和所述主可执行文件中存在相同的类时,通过预置的hook函数返回真值。5.根据权利要求3所述的方法,其特征在于,所述加载内存补丁文件包括:加载内存补丁文件,通过所述内存补丁文件修改检测代码中的条件-结果语句,使得所述检测代码不论检测到所述子可执行文件和所述主可执行...
【专利技术属性】
技术研发人员:江威,蒋宁波,吴昊,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。