[发明专利]生成主Dex的方法及装置在审
申请号: | 201810011448.1 | 申请日: | 2018-01-05 |
公开(公告)号: | CN108073406A | 公开(公告)日: | 2018-05-25 |
发明(设计)人: | 陈新盛;杨鹏;张颖;潘浩;赵子颖;谢安涛;韩运;王远强 | 申请(专利权)人: | 世纪龙信息网络有限责任公司 |
主分类号: | G06F8/61 | 分类号: | G06F8/61;G06F9/445 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 陈金普 |
地址: | 510630 广东省广州市天河*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 第三方 压缩包 自定义 设备运行 再压缩 加载 压缩 检测 | ||
本发明涉及一种生成主Dex的方法及装置,其中,生成主Dex的方法包括以下步骤:根据第三方SDK的自定义任务,修改获取到的manifest_keep.txt文件,得到修改后的manifest_keep.txt文件;压缩修改后的manifest_keep.txt文件中的class文件,生成包含所述第三方SDK代码的压缩包;根据压缩包,生成主Dex。本发明实施例,针对Android的低版本的Android系统的设备运行时,根据第三方SDK的自定义任务,可以基于获取到的manifest_keep.txt文件,对manifest_keep.txt文件进行修改,进而再压缩修改后的文件中得到包含第三方的SDK代码的压缩包,根据压缩包生成主Dex。基于生成的主Dex,能够检测到加载的时候注入的第三方SDK的代码,低版本的Android系统不会抛出java.lang.NoClassDefFoundError异常。
技术领域
本发明涉及安卓系统插件领域,特别是涉及一种生成主Dex的方法及装置。
背景技术
在安卓(Android)系统进行应用安装时,会生成虚拟机可执行二进制文件即Dex文件,安装过程中需要对Dex进行优化,这个过程是通过DexOpt工具来处理。DexOpt在Android系统第一次加载Dex文件的时候执行优化程序,生成ODex(optimize dalvik package)文件。Odex是从Android安装包(APK:Android Package)中提取的可运行文件,是通过Android安装包的中的Dex优化过的,再把Android安装包里的dex文件删除。执行ODex的效率会比直接执行Dex文件的效率要高很多。DexOpt在执行过程中会检索每一个类的方法id,存在一个链表结构里。由于链表的长度是用一个short类型来保存的,导致了方法id的数目不能够超过65536个。当一个项目足够大的时候,显然这个方法数的上限是不够的。
在传统技术中,发明人发现至少存在如下问题:尽管在新版本的Android系统中,DexOpt修复了这个问题,但是对低版本的Android系统仍然需要做兼容;在接入第三方软件开发工具包(SDK:Software Development Kit)的时候,SDK代码依赖注入的任务transformClasses With Dex For${variant.name.capitalize()},不会检测依赖和控制主Dex上的class,只会实现代码注入。在启动App时默认只能加载主Dex,如果在App的Application或者主Activity当中注入了代码,而在加载的时候注入的代码在主Dex上检测不到,系统就会抛出java.lang.NoClassDefFoundError异常。
发明内容
基于此,有必要针对低版本的Android系统,在接入第三方SDK的时候,如果APK文件存在多个Dex,并且在Android系统的设备上运行抛出异常的问题,提供一种生成主Dex的方法及装置。
为了实现上述目的,一方面,本发明实施例提供了一种生成主Dex的方法,包括以下步骤:
根据第三方SDK的自定义任务,修改获取到的manifest_keep.txt文件,得到修改后的manifest_keep.txt文件;
压缩修改后的manifest_keep.txt文件中的class文件,生成压缩包;
根据压缩包,生成主Dex。
在其中一个实施例中,修改获取到的manifest_keep.txt文件的步骤包括:
根据自定义任务,在manifest_keep.txt文件的文本末尾增加第三方SDK的入口类或第三方SDK的包名。
在其中一个实施例中,自定义任务为自定义UxMainDexTask任务。
在其中一个实施例中,压缩包为jar格式压缩包;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于世纪龙信息网络有限责任公司,未经世纪龙信息网络有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810011448.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种应用程序卸载方法及移动终端
- 下一篇:行车记录仪固件升级方法及装置