[发明专利]一种文件处理方法及装置有效
| 申请号: | 201710200198.1 | 申请日: | 2017-03-30 |
| 公开(公告)号: | CN107391223B | 公开(公告)日: | 2021-03-19 |
| 发明(设计)人: | 苟晓东 | 申请(专利权)人: | 创新先进技术有限公司 |
| 主分类号: | G06F9/455 | 分类号: | G06F9/455 |
| 代理公司: | 北京晋德允升知识产权代理有限公司 11623 | 代理人: | 吴绍群 |
| 地址: | 开曼群岛大开曼岛乔治镇医院*** | 国省代码: | 暂无信息 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 文件 处理 方法 装置 | ||
本申请实施例公开了一种文件处理方法及装置,所述方法包括:针对应用程序的待编译文件,确定所述应用程序包含的类,在编译所述待编译文件时,向所述待编译文件中添加虚拟机包含的类,建立所述应用程序包含的类与添加的类之间的引用关系,生成可执行文件。通过本方法,采用重复定义类的方式,使得在DexOpt阶段可执行文件中的各类均不会被赋予校验标识,也就不会触发校验错误,从而保证了虚拟机正常加载补丁文件,不出现应用程序闪退的现象。
技术领域
本申请涉及计算机技术领域,尤其涉及一种文件处理方法及装置。
背景技术
目前,对于安卓(Android)系统而言,通过其自身的Dalvik虚拟机(DalvikVirtual Machine,DVM)运行安装于Android系统上的各类应用程序。
具体而言,如图1a所示,在编译阶段,可将基于Java语言开发的应用程序的类(class)文件(如:class.jar文件),转换为一种适用于DVM的可执行文件----Dex文件(如:class.dex文件)。从而,在运行阶段,DVM便可加载该 Dex文件实现应用程序的运行。
实际应用时,可能会出现某些class出错而导致应用程序的运行故障(如:应用程序内的某项功能出现bug)。在此情况下,所采用的故障修复方式通常为:针对需要修复的class,重新编译生成Dex补丁文件(即,Patch.dex,该补丁文件也属于Dex文件),并将该Dex补丁文件加载在DVM中,用以替换出现故障的类。如图1b所示,对于某一个应用程序而言,DVM会将与该应用程序有关的Dex文件形成一个文件序列,逐一加载各Dex文件。在修复时,可将Dex 补丁文件加载至该文件序列的最前端,使得DVM在加载文件序列时,优先加载该Dex补丁文件,从而达到修复出错class的目的。
需要说明的是,DVM在加载Dex文件时,会执行一种称为DexOpt的操作,用以对Dex文件进行优化和校验(如:优化Dex文件中的代码格式、校验Dex文件中class是否能正常运行等,其中,DexOpt的校验操作发生在首次加载Dex文件时,属于一次性校验)。若某一class通过校验,则DVM会针对该class生成一种校验标识(即,Verified标识)。其中,基于DexOpt的校验机制,针对携带有校验标识的class,需保证与其具有引用关系的class均在同一个Dex文件中,否则会发生校验错误(verify error)。
然而,在实际应用中,所要修复的class(即,Dex补丁文件中所包含的class),可能与文件序列中其他Dex文件内的class之间具有引用关系,而如果其他Dex 文件中的class已携带有Verified标识,那么,便会触发校验错误。一旦出现校验错误,则DVM将停止运行与该应用程序有关的Dex文件,进一步致使应用程序出现闪退等现象,严重影响应用程序的正常运行。
发明内容
本申请实施例提供一种文件处理方法及装置,用以解决加载Dex补丁文件出现校验错误的问题。
本申请实施例提供的一种文件处理方法,所述方法包括:
针对应用程序的待编译文件,确定所述应用程序包含的类;
在编译所述待编译文件时,向所述待编译文件中添加虚拟机包含的类;
建立所述应用程序包含的类与添加的类之间的引用关系,生成可执行文件。
本申请实施例提供的一种文件处理装置,所述装置包括:
确定模块,针对应用程序的待编译文件,确定所述应用程序包含的类;
编译模块,在编译所述待编译文件时,向所述待编译文件中添加虚拟机中包含的类;
生成模块,所述应用程序包含的类与添加的类之间的引用关系,生成可执行文件。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于创新先进技术有限公司,未经创新先进技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710200198.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种资源预处理方法及装置
- 下一篇:一种基于容器服务的调度方法和设备





