CN112256324B - 安卓应用程序构建过程中对文件的处理方法及装置 - Google Patents

安卓应用程序构建过程中对文件的处理方法及装置 Download PDF

Info

Publication number
CN112256324B
CN112256324B CN202011420227.3A CN202011420227A CN112256324B CN 112256324 B CN112256324 B CN 112256324B CN 202011420227 A CN202011420227 A CN 202011420227A CN 112256324 B CN112256324 B CN 112256324B
Authority
CN
China
Prior art keywords
application program
android application
file
dex file
dex
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011420227.3A
Other languages
English (en)
Other versions
CN112256324A (zh
Inventor
钟超
朱磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhidao Network Technology Beijing Co Ltd
Original Assignee
Zhidao Network Technology Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhidao Network Technology Beijing Co Ltd filed Critical Zhidao Network Technology Beijing Co Ltd
Priority to CN202011420227.3A priority Critical patent/CN112256324B/zh
Publication of CN112256324A publication Critical patent/CN112256324A/zh
Application granted granted Critical
Publication of CN112256324B publication Critical patent/CN112256324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Library & Information Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种安卓应用程序构建过程中对文件的处理方法及装置;方法包括:扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。

Description

安卓应用程序构建过程中对文件的处理方法及装置
技术领域
本发明涉及操作系统技术领域,尤其涉及一种安卓应用程序构建过程中对文件的处理方法及装置。
背景技术
在低版本的Android(安卓)操作系统(4.X 及以下,SDK < 21)中,用于存储方法(method)ID的链表结构是short类型,而short类型占两个字节(两个字节可保存-2的15次方到2的15次方-1,即-32768~32767),因此单个DEX文件(DEX文件是运行在Android Dalvik虚拟机上的程序)中所包含的方法的数量不能超过65536个。但随着安卓应用(AndroidApp)的功能的不断扩展,通常一个安卓应用所包含的方法数目会超过65536个,为此需要将安卓应用所对应的DEX文件分拆成多个DEX文件,然后在安卓虚拟机上再将拆分后的多个DEX文件组装起来并运行。如何将一个DEX文件分拆成多个DEX文件的过程也被称为分包方案。
boostMultidex能够极大地缩短安卓应用冷启动的等待时间。基于这一优势,本领域技术人员希望在ARouter的框架内采用boostMultidex,以缩短基于ARouter所实现的安卓应用的首次冷启动的等待时间。
但由于ARouter的实现是通过Multidex分包后的路径以及通过指定包名来找到需要路由的class(类),而boostMultidex的实现更改了分包路径,因此在ARouter的框架内采用boostMultidex,会使得ARouter无法找到需要路由的class,造成安卓应用拆分所得到的多个DEX文件在安卓虚拟机中无法正常安装的问题。简单的说,boostMultidex与Arouter无法兼容。
发明内容
针对现有技术存在的问题,本发明实施例提供一种安卓应用程序构建过程中对文件的处理方法及装置。
本发明第一方面实施例提供一种安卓应用程序构建过程中对文件的处理方法,其特征在于,包括:
扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;
修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;
根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
上述技术方案中,所述扫描得到安卓操作系统中安卓应用程序的第一类型信息,包括:
在安卓应用程序的目录下查找Arouter模块中的ClassUtils文件夹;
扫描所述ClassUtils文件夹,得到getFileNameByPackageName方法;
根据所述getFileNameByPackageName方法,得到所述安卓应用程序的第一类型信息。
上述技术方案中,当安卓操作系统不支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:
根据所述安卓应用程序的APK的完整路径获取第一DexFile文件;
将所述第一DexFile文件转换成ZipFile进行读取,通过读取到的每一个zipEntry对象路径,用字节流数据读取的方式获得字节格式的.dex文件;
调用BoostNative.loadDirectDex接口将所述字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中的每一个.class文件,并将遍历访问到的所述.class文件放入到.class文件集合;
将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName()接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径。
上述技术方案中,当安卓操作系统支持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文件路径。
上述技术方案中,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径采用通过字节码操控框架动态织入编译代码的方式实现。
上述技术方案中,在扫描得到安卓操作系统中安卓应用程序的第一类型信息的步骤之前,方法还包括:
打开Gradle插件;
在所述根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件的步骤之后,方法还包括:
结束Gradle插件。
本发明第二方面实施例提供一种安卓应用程序构建过程中对文件的处理装置,包括:
第一类型信息确定模块,用于扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;
修改模块,用于修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;
DEX文件生成模块,用于根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
本发明第三方面实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本发明第一方面实施例所述安卓应用程序构建过程中对文件的处理方法的步骤。
本发明第四方面实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如本发明第一方面实施例所述安卓应用程序构建过程中对文件的处理方法的步骤。
本发明实施例提供的安卓应用程序构建过程中对文件的处理方法及装置,通过修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,既可以让安卓应用程序能够正常运行,也可以正常使用boostMultidex所带来的项目收益,实现了boostMultidex与Arouter的兼容。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的安卓应用程序构建过程中对文件的处理方法的流程图;
图2为本发明另一实施例提供的安卓应用程序构建过程中对文件的处理装置的示意图;
图3为本发明实施例所涉及的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的安卓应用程序构建过程中对文件的处理方法的流程图,如图1所示,本发明实施例提供的安卓应用程序构建过程中对文件的处理方法,包括:
步骤101、扫描得到安卓操作系统中安卓应用程序的第一类型信息。
在本发明实施例中,安卓操作系统中的安卓应用程序是基于Arouter实现的。
所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径。例如,在Multidex分包策略下的DEX文件路径。
安卓应用程序根据功能的不同可以被划分成多个模块,如某一用于电子购物的安卓应用程序,其包括:用于提供诸如支付功能、搜索功能的业务模块,用于为业务模块提供基本方法调用的基础服务模块,用于提供通用服务的通用服务模块,用于记录日志信息的日志服务模块等。
在对安卓应用程序的源代码进行编译的过程中,对安卓应用程序的各个模块所包含的方法进行扫描,查找能够寻找安卓应用程序中所有类名(ClassName)的方法。根据该方法能够得到安卓应用程序的第一类型信息。
例如,在一个具体的实施例中,通过Gradle插件对安卓应用程序的编译过程进行处理。具体的说,在安卓应用程序的目录下找到Arouter模块中的ClassUtils文件夹,如按照以下路径进行查找:com/alibaba/android/arouter/utils/ClassUtils。然后扫描该文件夹内的各个方法,找到名称为getFileNameByPackageName的方法,该方法能够寻找安卓应用程序中的所有类名。根据查找到的getFileNameByPackageName方法,能够得到所述安卓应用程序在Multidex分包策略下的DEX文件路径。
步骤102、修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径。
在前一步骤中,得到了安卓应用程序的第一类型信息,如安卓应用程序在Multidex分包策略下的DEX文件路径。Multidex的分包路径与boostMultidex的分包路径是不一样的,例如,使用Multidex方案进行分包,会在具有安卓操作系统的设备的目录“data/data/package(应用包名) /code_cache ”下生成.dex文件;使用boostMultidex方案进行分包,会在具有安卓操作系统的设备的目录“data/data/boost_multidex/dex_cache”下生成.dex文件。因此,在本步骤中,需要修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,如在boostMultidex分包策略下的DEX文件路径。
具体的说,如果设备的安卓操作系统不支持Multidex(如安卓操作系统的版本为Android4.4以下),则通过以下操作获得boostMultidex分包策略下的DEX文件路径:调用接口loadClassFromDexFile(),即根据安卓应用程序的基本APK的完整路径获取第一DexFile文件;然后将所述第一DexFile文件转换成ZipFile进行读取,通过获取到的每一个zipEntry对象路径,用byte(字节)流数据读取的方式来获得byte格式的.dex文件;再调用BoostNative.loadDirectDex接口将字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中每一个.class文件,并放入到.class文件集合;将最终得到的.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径。
如果设备的安卓操作系统支持Multidex(如安卓操作系统的版本为Android4.4及以上),则通过以下操作获得boostMultidex分包策略下的DEX文件路径:调用接口loadClassFromApk(),即根据应用程序的基本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文件路径。
修改所述安卓应用程序在第一路由分包策略下的DEX文件路径可采用通过ASM(字节码操控框架)动态织入编译代码的方式实现。
步骤103、根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
在本发明实施例中,对之前步骤所得到的.class文件集合中的class文件进行重新编译,重新生成二进制的class文件。将重新生成的二进制class文件进行打包操作,可得到安卓应用程序的DEX文件。DEX文件实质上是多个class文件的集合,将重新生成的二进制class文件与其他相关的class文件进行打包操作,可得到对应的DEX文件。如何进行打包操作是本领域技术人员的公知常识,因此不在此处重复说明。
本领域技术人员很容易理解,重新生成的二进制的class文件在未被打包成为安卓虚拟机可加载的DEX文件之前,已经更改了类的行为,因此,包含有重新生成的二进制class文件的安卓应用程序的DEX文件能够在Arouter的框架下、按照boostMultidex的分包路径查找需要路由的类。
当生成安卓应用程序的DEX文件后,可结束Gradle插件。在本发明实施例中,采用Gradle插件可在安卓应用程序被安装到安卓设备之前就实现class文件的功能替换,避免在安卓应用程序运行时实现动态替换功能,很大程度上提升了程序的执行效率和稳定性。
本发明实施例提供的安卓应用程序构建过程中对文件的处理方法,通过修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,既可以让安卓应用程序能够正常运行,也可以正常使用boostMultidex所带来的项目收益,实现了boostMultidex与Arouter的兼容。
基于上述任一实施例,图2为本发明另一实施例提供的安卓应用程序构建过程中对文件的处理装置的示意图,如图2所示,本发明另一实施例提供的安卓应用程序构建过程中对文件的处理装置,包括:
第一类型信息确定模块201,用于扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;
修改模块202,用于修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;
DEX文件生成模块203,用于根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
本发明实施例提供的安卓应用程序构建过程中对文件的处理装置,通过修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,既可以让安卓应用程序能够正常运行,也可以正常使用boostMultidex所带来的项目收益,实现了boostMultidex与Arouter的兼容。
图3为本发明实施例所涉及的电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储器330中的逻辑指令,以执行如下方法:
扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;
修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;
根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:
扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;
修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;
根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种安卓应用程序构建过程中对文件的处理方法,其特征在于,包括:
步骤S1、扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;所述扫描得到安卓操作系统中安卓应用程序的第一类型信息,包括:
在安卓应用程序的目录下查找Arouter模块中的ClassUtils文件夹;
扫描所述ClassUtils文件夹,得到getFileNameByPackageName方法;
根据所述getFileNameByPackageName方法,得到所述安卓应用程序的第一类型信息;
步骤S2、修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;其中,当安卓操作系统不支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:
根据所述安卓应用程序的APK的完整路径获取第一DexFile文件;
将所述第一DexFile文件转换成ZipFile进行读取,通过读取到的每一个zipEntry对象路径,用字节流数据读取的方式获得字节格式的.dex文件;
调用BoostNative.loadDirectDex接口将所述字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中的每一个.class文件,并将遍历访问到的所述.class文件放入到.class文件集合;
将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径;
步骤S3、根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
2.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,当安卓操作系统支持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文件路径。
3.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径采用通过字节码操控框架动态织入编译代码的方式实现。
4.根据权利要求1所述的安卓应用程序构建过程中对文件的处理方法,其特征在于,在扫描得到安卓操作系统中安卓应用程序的第一类型信息的步骤之前,方法还包括:
打开Gradle插件;
在所述根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件的步骤之后,方法还包括:
结束Gradle插件。
5.一种安卓应用程序构建过程中对文件的处理装置,其特征在于,包括:
第一类型信息确定模块,用于扫描得到安卓操作系统中安卓应用程序的第一类型信息,其中,所述第一类型信息中包括安卓应用程序在第一路由分包策略下的DEX文件路径;所述扫描得到安卓操作系统中安卓应用程序的第一类型信息,包括:
在安卓应用程序的目录下查找Arouter模块中的ClassUtils文件夹;
扫描所述ClassUtils文件夹,得到getFileNameByPackageName方法;
根据所述getFileNameByPackageName方法,得到所述安卓应用程序的第一类型信息;
修改模块,用于修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径;其中,当安卓操作系统不支持Multidex时,所述修改所述安卓应用程序在第一路由分包策略下的DEX文件路径,得到所述安卓应用程序在第二路由分包策略下的DEX文件路径,包括:
根据所述安卓应用程序的APK的完整路径获取第一DexFile文件;
将所述第一DexFile文件转换成ZipFile进行读取,通过读取到的每一个zipEntry对象路径,用字节流数据读取的方式获得字节格式的.dex文件;
调用BoostNative.loadDirectDex接口将所述字节格式的.dex文件转换成第二DexFile文件,所述第二DexFile文件用于遍历访问.dex文件中的每一个.class文件,并将遍历访问到的所述.class文件放入到.class文件集合;
将所述.class文件集合作为ARouter中ClassUtil.getFileNameByPackageName() 接口的返回结果;其中,所述.class文件集合包括所述安卓应用程序在第二路由分包策略下的DEX文件路径;
DEX文件生成模块,用于根据所述安卓应用程序在第二路由分包策略下的DEX文件路径的第二类型信息,生成所述安卓应用程序的DEX文件。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至4任一项所述安卓应用程序构建过程中对文件的处理方法的步骤。
7.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至4任一项所述安卓应用程序构建过程中对文件的处理方法的步骤。
CN202011420227.3A 2020-12-08 2020-12-08 安卓应用程序构建过程中对文件的处理方法及装置 Active CN112256324B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011420227.3A CN112256324B (zh) 2020-12-08 2020-12-08 安卓应用程序构建过程中对文件的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011420227.3A CN112256324B (zh) 2020-12-08 2020-12-08 安卓应用程序构建过程中对文件的处理方法及装置

Publications (2)

Publication Number Publication Date
CN112256324A CN112256324A (zh) 2021-01-22
CN112256324B true CN112256324B (zh) 2021-03-19

Family

ID=74225062

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011420227.3A Active CN112256324B (zh) 2020-12-08 2020-12-08 安卓应用程序构建过程中对文件的处理方法及装置

Country Status (1)

Country Link
CN (1) CN112256324B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975311B (zh) * 2016-05-09 2021-01-29 腾讯科技(深圳)有限公司 一种应用启动方法及装置
WO2019079504A1 (en) * 2017-10-17 2019-04-25 Appdome Ltd. AUTOMATED INTEGRATION OF MOBILE APPLICATIONS
CN108021389B (zh) * 2017-11-15 2021-01-01 武汉斗鱼网络科技有限公司 一种Android中引入ARouter的方法及装置
CN111552518B (zh) * 2019-01-24 2023-04-07 阿里巴巴集团控股有限公司 一种启动应用的控件加载方法及装置
CN111767094A (zh) * 2020-06-30 2020-10-13 杭州萤石软件有限公司 路由校验方法、装置、设备和存储介质

Also Published As

Publication number Publication date
CN112256324A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
EP2966566B1 (en) Driver program loading method and embedded device
KR102159640B1 (ko) 데이터 컴파일 방법, 장치 및 전자 단말기, 컴퓨터 판독 가능 저장 매체
CN112308716B (zh) 区块链智能合约执行方法、装置、设备及计算机存储介质
CN111736913B (zh) 类加载方法和装置
CN108647032B (zh) 应用加载方法及装置、计算机装置和计算机可读存储介质
CN112769706B (zh) 组件化路由方法及系统
CN112947934A (zh) 一种动态变换业务逻辑的方法、设备及介质
CN112256359A (zh) 微服务合并方法、装置、电子设备及可读存储介质
CN112416612B (zh) 服务调用方法、装置、计算机设备和可读存储介质
KR20230058608A (ko) 외래 코드의 에뮬레이션을 지원하기 위한 네이티브 에뮬레이션 호환 애플리케이션 바이너리 인터페이스
CN112256324B (zh) 安卓应用程序构建过程中对文件的处理方法及装置
CN110941443B (zh) 修改sdk中文件名的方法、装置及电子设备
CN112230930A (zh) 混合技术栈构建打包的方法和装置及机器可读存储介质
CN101645018B (zh) 多版本的字节码处理方法、系统和装置
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
US20220261238A1 (en) Method and system for deploying third-party application to microcontroller by means of edge assistance
CN114840195A (zh) 一种针对iOS SDK静态库的私有化方法
WO2013189177A1 (zh) 存储空间映射方法及装置
KR20230058378A (ko) 코드 스트림 폴딩을 지원하는 하이브리드 바이너리
CN114371852B (zh) 一种编译方法及装置
CN113641389A (zh) 基于OpenCPU的软件升级方法、装置及设备
CN106897588B (zh) 一种标签函数的处理方法及装置
CN114579135B (zh) 一种安装包生成方法及装置
CN114416219B (zh) 系统函数调用方法、装置、电子设备及可读介质
CN112130858A (zh) 一种代码编译方法及编译服务器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant