安卓应用程序构建过程中对文件的处理方法及装置制造方法及图纸

技术编号:27098305 阅读:15 留言:0更新日期:2021-01-25 18:38
本发明专利技术实施例提供一种安卓应用程序构建过程中对文件的处理方法及装置;方法包括:扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。文件。文件。

【技术实现步骤摘要】
安卓应用程序构建过程中对文件的处理方法及装置


[0001]本专利技术涉及操作系统
,尤其涉及一种安卓应用程序构建过程中对文件的处理方法及装置。

技术介绍

[0002]在低版本的Android(安卓)操作系统(4.X 及以下,SDK < 21)中,用于存储方法(method)ID的链表结构是short类型,而short类型占两个字节(两个字节可保存-2的15次方到2的15次方-1,即-32768~32767),因此单个DEX文件(DEX文件是运行在Android Dalvik虚拟机上的程序)中所包含的方法的数量不能超过65536个。但随着安卓应用(Android App)的功能的不断扩展,通常一个安卓应用所包含的方法数目会超过65536个,为此需要将安卓应用所对应的DEX文件分拆成多个DEX文件,然后在安卓虚拟机上再将拆分后的多个DEX文件组装起来并运行。如何将一个DEX文件分拆成多个DEX文件的过程也被称为分包方案。
[0003]boostMultidex能够极大地缩短安卓应用冷启动的等待时间。基于这一优势,本领域技术人员希望在ARouter的框架内采用boostMultidex,以缩短基于ARouter所实现的安卓应用的首次冷启动的等待时间。
[0004]但由于ARouter的实现是通过Multidex分包后的路径以及通过指定包名来找到需要路由的class(类),而boostMultidex的实现更改了分包路径,因此在ARouter的框架内采用boostMultidex,会使得ARouter无法找到需要路由的class,造成安卓应用拆分所得到的多个DEX文件在安卓虚拟机中无法正常安装的问题。简单的说,boostMultidex与Arouter无法兼容。

技术实现思路

[0005]针对现有技术存在的问题,本专利技术实施例提供一种安卓应用程序构建过程中对文件的处理方法及装置。
[0006]本专利技术第一方面实施例提供一种安卓应用程序构建过程中对文件的处理方法,其特征在于,包括:扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
[0007]上述技术方案中,所述扫描得到安卓操作系统中安卓应用程序的第一类型信息,包括:在安卓应用程序的目录下查找Arouter模块中的ClassUtils文件夹;
扫描所述ClassUtils文件夹,得到getFileNameByPackageName方法;根据所述getFileNameByPackageName方法,得到所述安卓应用程序的第一类型信息。
[0008]上述技术方案中,当安卓操作系统不支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:根据所述安卓应用程序的APK的完整路径获取第一DexFile文件;将所述第一DexFile文件转换成ZipFile进行读取,通过读取到的每一个zipEntry对象路径,用字节流数据读取的方式获得字节格式的.dex文件;调用BoostNative.loadDirectDex接口将所述字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中的每一个.class文件,并将遍历访问到的所述.class文件放入到.class文件集合;将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径。
[0009]上述技术方案中,当安卓操作系统支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:根据所述安卓应用程序的APK的完整路径获取ApkFile文件;遍历data/data/files/boost_multidex/dex_cache/目录下.dex文件,获取所有.dex文件路径;遍历调用DexFile.loadDex()接口,获得第三DexFile文件,所述第三DexFile文件用于遍历访问.dex文件中每一个.class文件,并将遍历访问到的.class文件放入到.class文件集合;将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径。
[0010]上述技术方案中,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径采用通过字节码操控框架动态织入编译代码的方式实现。
[0011]上述技术方案中,在扫描得到安卓操作系统中安卓应用程序的第一类型信息的步骤之前,方法还包括:打开Gradle插件;在所述根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件的步骤之后,方法还包括:结束Gradle插件。
[0012]本专利技术第二方面实施例提供一种安卓应用程序构建过程中对文件的处理装置,包括:第一类型信息确定模块,用于扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;修改模块,用于修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所
述安卓应用程序在第二路由分包策略下的DEX文件路径;DEX文件生成模块,用于根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
[0013]本专利技术第三方面实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本专利技术第一方面实施例所述安卓应用程序构建过程中对文件的处理方法的步骤。
[0014]本专利技术第四方面实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本专利技术第一方面实施例所述安卓应用程序构建过程中对文件的处理方法的步骤。
[0015]本专利技术实施例提供的安卓应用程序构建过程中对文件的处理方法及装置,通过修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,既可以让安卓应用程序能够正常运行,也可以正常使用boostMultidex所带来的项目收益,实现了boostMultidex与Arouter的兼容。
[0016]附图说明
[0017]为了更清楚地说本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种安卓应用程序构建过程中对文件的处理方法,其特征在于,包括:扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。2.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,所述扫描得到安卓操作系统中安卓应用程序的第一类型信息,包括:在安卓应用程序的目录下查找Arouter模块中的ClassUtils文件夹;扫描所述ClassUtils文件夹,得到getFileNameByPackageName方法;根据所述getFileNameByPackageName方法,得到所述安卓应用程序的第一类型信息。3.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,当安卓操作系统不支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:根据所述安卓应用程序的APK的完整路径获取第一DexFile文件;将所述第一DexFile文件转换成ZipFile进行读取,通过读取到的每一个zipEntry对象路径,用字节流数据读取的方式获得字节格式的.dex文件;调用BoostNative.loadDirectDex接口将所述字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中的每一个.class文件,并将遍历访问到的所述.class文件放入到.class文件集合;将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径。4.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,当安卓操作系统支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:根据所述...

【专利技术属性】
技术研发人员:钟超朱磊
申请(专利权)人:智道网联科技北京有限公司
类型:发明
国别省市:

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

1
相关领域技术
  • 暂无相关专利