CN107193544B - 一种应用程序组件化开发方法及装置 - Google Patents

一种应用程序组件化开发方法及装置 Download PDF

Info

Publication number
CN107193544B
CN107193544B CN201710212083.4A CN201710212083A CN107193544B CN 107193544 B CN107193544 B CN 107193544B CN 201710212083 A CN201710212083 A CN 201710212083A CN 107193544 B CN107193544 B CN 107193544B
Authority
CN
China
Prior art keywords
component
file
program code
executable program
installation package
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
CN201710212083.4A
Other languages
English (en)
Other versions
CN107193544A (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.)
Beijing 58 Information Technology Co Ltd
Original Assignee
Beijing 58 Information Technology 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 Beijing 58 Information Technology Co Ltd filed Critical Beijing 58 Information Technology Co Ltd
Priority to CN201710212083.4A priority Critical patent/CN107193544B/zh
Publication of CN107193544A publication Critical patent/CN107193544A/zh
Application granted granted Critical
Publication of CN107193544B publication Critical patent/CN107193544B/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/20Software design
    • G06F8/24Object-oriented
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation

Abstract

本发明提出了一种应用程序组件化开发方法及装置,该方法包括:从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;将所述新的组件压缩文件发布到设定的存储处;在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。本发明实现了基于dex文件拆分的组件化方案,支持多部门并行开发;可以有效减少安卓系统开发过程中的代码编译时间。

Description

一种应用程序组件化开发方法及装置
技术领域
本发明涉及安卓系统的应用程序开发技术领域,尤其涉及一种应用程序组件化开发方法及装置。
背景技术
随着安卓系统的应用程序的发展,手机客户端上的单个应用程序的功能越来越多,代码量也随之增加,导致编译一次的时间越来越长,这样非常影响开发效率和应用程序的稳定性、可维护性。而且大公司在开发的应用程序都需要多个部门、多个团队合作并行开发。
这些问题都需要从手机客户端架构方面提供支持。目前普遍的做法是组件化,现有的方案是:首先把功能模块化拆分,然后把每个功能打包成独立的APK,独立的APK中包括代码和资源,接下来把所有的组件APK放在安装包的assets目录下,最后,运行的时候通过改变系统的参数PathClassLoader和AssetManager,加载assets目录下的组件APK。
现有技术的缺点是:1、在运行的时候要通过修改安卓系统的参数PathClassLoader和AssetManager来加载组件APK,所以会在不同的手机上出现兼容性问题,在安卓系统版本升级后也会出现兼容的风险。2、组件APK是在运行的时候被加载的,而加载组件APK需要时间,特别是在android 5.X系统上要对dex文件进行优化,时间会更长。这样就会严重影响用户体验
发明内容
本发明要解决的技术问题是,提供一种应用程序组件化开发方法及装置,克服现有技术中运行应用程序时因加载组件APK而出现的兼容性和性能问题。
本发明采用的技术方案是,所述应用程序组件化开发方法,包括:
从应用程序的组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
将所述新的组件压缩文件发布到设定的存储处;
在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
进一步的,对所述组件APK的获取过程,包括:
对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;
对所述组件压缩文件进行编译得到组件可执行程序代码文件;
针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
进一步的,所述方法,还包括:从所述设定的存储处读取所述新的组件压缩文件之前,
当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
进一步的,所述编译是由gradle编译工具实现的。
进一步的,所述方法,还包括:
当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;
当所述应用程序安装包在终端系统中安装运行时,由终端系统对所述应用程序安装包根目录中的组件可执行程序代码文件和主可执行程序代码文件合并优化成一个可执行程序代码文件;或者,由终端系统提供的多可执行程序代码加载工具从所述应用程序安装包根目录中加载主可执行程序代码文件和所有的组件可执行程序代码文件。
本发明还提供一种应用程序组件化开发装置,包括:
组件压缩模块,用于从应用程序的组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
组件发布模块,用于将所述新的组件压缩文件发布到设定的存储处;
组件复制模块,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
进一步的,所述装置,还包括:
组件APK获取模块,用于对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
进一步的,所述装置,还包括:
命令拦截模块,用于在所述组件复制模块从所述设定的存储处读取所述新的组件压缩文件之前,当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
进一步的,所述编译是由gradle编译工具实现的。
进一步的,当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;
所述装置,还包括:
安装运行模块,用于当所述应用程序安装包在终端系统中安装运行时,通过终端系统对所述应用程序安装包根目录中的组件可执行程序代码文件和主可执行程序代码文件合并优化成一个可执行程序代码文件;或者,通过终端系统提供的多可执行程序代码加载工具从所述应用程序安装包根目录中加载主可执行程序代码文件和所有的组件可执行程序代码文件。
采用上述技术方案,本发明至少具有下列优点:
本发明所述应用程序组件化开发方法及装置,由于在生成组件APK时已完成了组件dex文件的编译和生成,后续直接将组件dex文件放入应用程序安装包的根目录下,应用程序安装包在终端系统中安装运行时无需动态加载,也避免了在不同终端上的兼容性和性能问题;本发明实现了基于dex文件拆分的组件化方案,支持多部门并行开发;本发明无需再像现有技术一样在合成编译的过程中把各组件aar文件一边编译成组件dex文件一边合成到主dex文件中,而这个过程站总编译时间的80%左右,本发明可以有效减少安卓系统开发过程中的代码编译时间。
附图说明
图1为本发明第一实施例的应用程序组件化开发方法流程图;
图2为本发明第二实施例的应用程序组件化开发方法流程图;
图3为本发明第三实施例的应用程序组件化开发方法流程图;
图4为本发明第四实施例的应用程序组件化开发方法流程图;
图5为本发明第五实施例的应用程序组件化开发装置组成结构示意图;
图6为本发明第六实施例的应用程序组件化开发装置组成结构示意图;
图7为本发明第七实施例的应用程序组件化开发装置组成结构示意图;
图8为本发明第八实施例的应用程序组件化开发装置组成结构示意图;
图9为本发明第九实施例的组件化系统结构示意图;
图10为本发明第九实施例代码编译部分的流程示意图。
具体实施方式
为更进一步阐述本发明为达成预定目的所采取的技术手段及功效,以下结合附图及较佳实施例,对本发明进行详细说明如后。
本发明第一实施例,一种应用程序组件化开发方法,如图1所示,包括以下具体步骤:
步骤S101,从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件。
可选的,应用程序中的各组件可以是:业务组件、服务组件、中间件等。每个组件对应一个组件APK,本步骤中记载的是组件级的APK,由于本发明实施例是基于dex文件拆分的组件化方案,支持多部门并行开发,每个部门开发一个组件APK,可以提高开发的效率。
在本领域中,可执行程序代码文件简称为dex文件,压缩文件简称aar,应用程序安装包简称为APK。
步骤S102,将所述新的组件压缩文件发布到设定的存储处。
可选的,设定的存储处可以为maven仓库。
步骤S103,在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
在本发明实施例中,在将组件APK合并编译成应用程序安装包的过程中,直接将组件dex文件放入应用程序安装包的根目录下,现有技术中主dex文件也位于该根目录中,应用程序安装包在终端系统中安装运行时无需动态加载各组件dex文件,也避免了在不同终端上的兼容性和性能问题。
本发明第二实施例,一种应用程序组件化开发方法,如图2所示,包括以下具体步骤:
步骤S100,对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
可选的,应用程序中的各组件可以是:业务组件、服务组件、中间件等。每个组件对应一个功能模块。
在本领域中,类文件通常称为jar包,库函数资源文件简称为资源。
步骤S101,从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
步骤S102,将所述新的组件压缩文件发布到设定的存储处;
步骤S103,在将组件APK合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
在本发明实施例中,由于在生成组件APK时已完成了组件dex文件的编译和生成,后续直接将组件dex文件放入应用程序安装包的根目录下,现有技术中主dex文件也位于该根目录中,应用程序安装包在终端系统中安装运行时无需动态加载各组件dex文件,也避免了在不同终端上的兼容性和性能问题。
本发明第三实施例,一种应用程序组件化开发方法,如图3所示,包括以下具体步骤:
步骤S100,对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
步骤S101,从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
步骤S102,将所述新的组件压缩文件发布到设定的存储处;
步骤S102-a,当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
本发明实施例在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,对gradle编译工具的流程做了一定的干预,就是先对将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令进行拦截,以避免所述组件压缩文件向主可执行程序代码文件的编译转化,目的是为了节省编译的时间,然后通过删除所述临时文件,不给所述命令提供转化的数据基础,以确保不产生现有的合并编译消耗。
步骤S103,在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
在本发明实施例中,由于在生成组件APK时已完成了组件dex文件的编译和生成,后续直接将组件dex文件放入应用程序安装包的根目录下,现有技术中主dex文件也位于该根目录中,应用程序安装包在终端系统中安装运行时无需动态加载各组件dex文件,也避免了在不同终端上的兼容性和性能问题。
本发明第四实施例,一种应用程序组件化开发方法,如图4所示,包括以下具体步骤:
步骤S100,对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
步骤S101,从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
步骤S102,将所述新的组件压缩文件发布到设定的存储处;
步骤S102-a,当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
步骤S103,在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
步骤S104,当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;当所述应用程序安装包在终端系统中安装运行时,由终端系统对所述应用程序安装包根目录中的组件可执行程序代码文件和主可执行程序代码文件合并优化成一个可执行程序代码文件;或者,由终端系统提供的多可执行程序代码加载工具从所述应用程序安装包根目录中加载主可执行程序代码文件和所有的组件可执行程序代码文件。
在本发明实施例中,一方面,由于在生成组件APK时已完成了组件dex文件的编译和生成,后续直接将组件dex文件放入应用程序安装包的根目录下,现有技术中主dex文件也位于该根目录中,应用程序安装包在终端系统中安装运行时无需动态加载各组件dex文件,也避免了在不同终端上的兼容性和性能问题。
另一方面,本发明实施例在应用程序安装包在终端系统中安装运行的过程中,无需再像现有技术一样在合成编译的过程中把各组件aar文件一边编译成组件dex文件一边合成到主dex文件中,而这个过程站总编译时间的80%左右,本发明可以有效减少安卓系统开发过程中的代码编译时间。
本发明第五实施例,与第一实施例对应,本实施例介绍一种应用程序组件化开发装置,如图5所示,包括以下组成部分:
组件压缩模块501,用于从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
可选的,应用程序中的各组件可以是:业务组件、服务组件、中间件等。每个组件对应一个组件APK。
组件发布模块502,用于将所述新的组件压缩文件发布到设定的存储处;
组件复制模块503,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
本发明第六实施例,与第二实施例对应,本实施例介绍一种应用程序组件化开发装置,如图6所示,包括以下组成部分:
组件APK获取模块500,用于对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
可选的,应用程序中的各组件可以是:业务组件、服务组件、中间件等。每个组件对应一个功能模块。
组件压缩模块501,用于从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
组件发布模块502,用于将所述新的组件压缩文件发布到设定的存储处;
组件复制模块503,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
本发明第七实施例,与第三实施例对应,本实施例介绍一种应用程序组件化开发装置,如图7所示,包括以下组成部分:
组件APK获取模块500,用于对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
组件压缩模块501,用于从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
组件发布模块502,用于将所述新的组件压缩文件发布到设定的存储处;
命令拦截模块502-a,用于当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
组件复制模块503,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
本发明第八实施例,与第四实施例对应,本实施例介绍一种应用程序组件化开发装置,如图8所示,包括以下组成部分:
组件APK获取模块500,用于对应用程序各组件对应的功能模块分别进行编译得到组件压缩文件,所述组件压缩文件中包含相应功能模块所需用到的类文件包和库函数资源文件;对所述组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件APK。
组件压缩模块501,用于从组件APK中取出组件可执行程序代码文件并压缩到组件压缩文件中得到新的组件压缩文件;
组件发布模块502,用于将所述新的组件压缩文件发布到设定的存储处;
命令拦截模块502-a,用于当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
组件复制模块503,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;
组件复制模块504,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中。
可选的,所述编译是由gradle编译工具实现的。
本发明第九实施例,本实施例是在上述实施例的基础上,结合附图9~10介绍一个本发明的应用实例。
本发明实施例的应用程序组件化开发方案依次分为四个部分:组件拆分部分、组件发布部分、代码编译部分、安装运行部分
一、组件拆分部分:
如图9所示,组件化系统结构分为下面三部分:
组件:可以独立出一个功能模块,只对外提供协议接口;图9中示出了业务组件和服务组件。
业务中间件:提供业务代码共享;
底层中间件:提供底层代码共享;
这样拆分成一个个组件就可以让每个团队开发自己的组件而不互相影响,提升开发效率。
二、组件发布部分:
组件发布部分包括以下步骤:
步骤1,把功能模块编译出组件aar文件。
步骤2,把组件aar文件编译成组件APK包。
步骤3,解压步骤2产出的组件APK包,取出组件dex文件。
步骤4,步骤3产出的组件dex压缩到步骤1的组件aar文件中(比如组件aar文件中的目录assets/dexs处),生成新的组件aar文件。
步骤5,把步骤4产出的新的组件aar文件发布到maven仓库中待用。
三、代码编译部分:
当把所有的新的组件aar文件都发布完成后,开发人员只需要引用这些新的组件aar文件就可以了。在编译过程中需要自定义编译脚本,不需要把aar文件中的代码编译到dex文件中,只需要把新的组件aar文件中包含的组件dex文件复制到应用程序安装包的根目录就可以,这样就大大减少了编译时间。
如图10所示,代码编译部分的流程如下:
步骤11,利用gradle编译工具执行由组件aar文件合并编译成APK的流程开始。
步骤12,删除由gradle编译工具生成的临时文件。
步骤13,响应transformClassesWithDex命令时,读取临时文件中的类文件合并成主dex文件失败。
步骤14,复制组件aar文件目录中的组件dex文件到gradle编译工具指定的目录中即APK的根目录中,这样打出来就是一个正常的APK,组件dex文件和主dex文件在同一个目录中。
本发明实施例在这个过程中节省了把组件代码合并到主dex文件的过程,而这个过占总编译时间的80%左右,所以可以节省80%的编译时间。
四、安装运行过程:
通过上面编译出的APK包在安卓android5.x系统上在安装过程中就会把所有的各组件dex文件与主dex文件合并成一个并进行了优化,在android4.x上用系统提供的mutildex工具就可加载。所以没有兼容问题和性能问题。
用本发明实施例的以上方案可以做到减小代码编译时间、支持并行开发、没有系统兼容问题和性能问题。
本发明实施例的技术方案带来的有益效果在于:
1、大幅减小了代码编译时间,支持多团队并行开发,提高开发效率。
2、没有系统兼容问题,提高了安全性和维定性。
3、组件不用运行时动态加载,提升用户体验。
本发明第十实施例,本实施例的应用程序组件化开发的流程与第一、二、三或四实施例相同,区别在于,在工程实现上,本实施例可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的所述方法可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台设备(可以是计算机等)执行本发明实施例所述的方法。
通过具体实施方式的说明,应当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图示仅是提供参考与说明之用,并非用来对本发明加以限制。

Claims (10)

1.一种应用程序组件化开发方法,其特征在于,包括:
从应用程序的组件安装包中取出组件可执行程序代码文件并压缩到第一组件压缩文件中得到新的组件压缩文件;
将所述新的组件压缩文件发布到设定的存储处;
在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中;
所述第一组件压缩文件中包含应用程序各组件相应功能模块所需用到的类文件包和库函数资源文件。
2.根据权利要求1所述的应用程序组件化开发方法,其特征在于,对所述组件安装包的获取过程,包括:
对应用程序各组件对应的功能模块分别进行编译得到第二组件压缩文件;
对所述第二组件压缩文件进行编译得到组件可执行程序代码文件;
针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件安装包。
3.根据权利要求1所述的应用程序组件化开发方法,其特征在于,所述方法,还包括:从所述设定的存储处读取所述新的组件压缩文件之前,
当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述新的组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
4.根据权利要求2或3所述的应用程序组件化开发方法,其特征在于,所述编译是由gradle编译工具实现的。
5.根据权利要求3所述的应用程序组件化开发方法,其特征在于,所述方法,还包括:
当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;
当所述应用程序安装包在终端系统中安装运行时,由终端系统对所述应用程序安装包根目录中的组件可执行程序代码文件和主可执行程序代码文件合并优化成一个可执行程序代码文件;或者,由终端系统提供的多可执行程序代码加载工具从所述应用程序安装包根目录中加载主可执行程序代码文件和所有的组件可执行程序代码文件。
6.一种应用程序组件化开发装置,其特征在于,包括:
组件压缩模块,用于从应用程序的组件安装包中取出组件可执行程序代码文件并压缩到第一组件压缩文件中得到新的组件压缩文件;
组件发布模块,用于将所述新的组件压缩文件发布到设定的存储处;
组件复制模块,用于在将所述新的组件压缩文件合并编译成应用程序安装包的过程中,从所述设定的存储处读取所述新的组件压缩文件,将所述新的组件压缩文件中的组件可执行程序代码文件复制到应用程序安装包的根目录中;
所述第一组件压缩文件中包含应用程序各组件相应功能模块所需用到的类文件包和库函数资源文件。
7.根据权利要求6所述的应用程序组件化开发装置,其特征在于,所述装置,还包括:
组件安装包获取模块,用于对应用程序各组件对应的功能模块分别进行编译得到第二组件压缩文件;对所述第二组件压缩文件进行编译得到组件可执行程序代码文件;针对每一个功能模块,基于该功能模块的组件可执行程序代码文件编译成组件安装包。
8.根据权利要求6所述的应用程序组件化开发装置,其特征在于,所述装置,还包括:
命令拦截模块,用于在所述组件复制模块从所述设定的存储处读取所述新的组件压缩文件之前,当开始将所述新的组件压缩文件合并编译成应用程序安装包时,先删除由所述合并编译产生的临时文件;所述临时文件包含类文件包和库函数资源文件,再响应将所述新的组件压缩文件中的类文件向主可执行程序代码文件转化的命令。
9.根据权利要求7或8所述的应用程序组件化开发装置,其特征在于,所述编译是由gradle编译工具实现的。
10.根据权利要求8所述的应用程序组件化开发装置,其特征在于,当所述合并编译完成后,所述主可执行程序代码文件也位于应用程序安装包的根目录中;
所述装置,还包括:
安装运行模块,用于当所述应用程序安装包在终端系统中安装运行时,通过终端系统对所述应用程序安装包根目录中的组件可执行程序代码文件和主可执行程序代码文件合并优化成一个可执行程序代码文件;或者,通过终端系统提供的多可执行程序代码加载工具从所述应用程序安装包根目录中加载主可执行程序代码文件和所有的组件可执行程序代码文件。
CN201710212083.4A 2017-04-01 2017-04-01 一种应用程序组件化开发方法及装置 Active CN107193544B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710212083.4A CN107193544B (zh) 2017-04-01 2017-04-01 一种应用程序组件化开发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710212083.4A CN107193544B (zh) 2017-04-01 2017-04-01 一种应用程序组件化开发方法及装置

Publications (2)

Publication Number Publication Date
CN107193544A CN107193544A (zh) 2017-09-22
CN107193544B true CN107193544B (zh) 2021-01-15

Family

ID=59871385

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710212083.4A Active CN107193544B (zh) 2017-04-01 2017-04-01 一种应用程序组件化开发方法及装置

Country Status (1)

Country Link
CN (1) CN107193544B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107832057A (zh) * 2017-10-31 2018-03-23 福建天泉教育科技有限公司 一种iOS应用的构建方法及终端
CN107748662A (zh) * 2017-11-17 2018-03-02 深圳市泉眼网络科技有限公司 应用程序开发方法、终端及计算机可读存储介质
CN108829406B (zh) * 2018-06-13 2022-10-14 珠海豹趣科技有限公司 安装包打包方法、装置、电子设备及存储介质
CN109144521A (zh) * 2018-09-28 2019-01-04 五八有限公司 生成静态库的方法、装置、计算机设备及可读存储介质
CN111610982B (zh) * 2019-02-26 2023-05-16 阿里巴巴集团控股有限公司 一种应用程序开发的方法、装置和相关系统
CN110457045B (zh) * 2019-08-16 2023-05-16 百度在线网络技术(北京)有限公司 组件化合并编译方法、装置、设备和存储介质
CN111427584A (zh) * 2020-04-14 2020-07-17 北京达佳互联信息技术有限公司 可执行文件的生成方法、装置及设备
CN112035160A (zh) * 2020-08-31 2020-12-04 广州鲁邦通物联网科技有限公司 代码管理系统及其控制方法
CN112905170B (zh) * 2021-03-09 2024-04-19 百果园技术(新加坡)有限公司 渠道包的生成方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
CN104317573A (zh) * 2014-10-03 2015-01-28 李宏伟 安卓安装包转换方法和装置以及运行应用的方法和装置
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备
CN104866504A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种对Android软件进行功能扩展的方法及装置
CN105278989A (zh) * 2015-10-12 2016-01-27 邱寅峰 Apk文件的快速加载方法
US20160132547A1 (en) * 2014-11-11 2016-05-12 SEWORKS, Inc. Apparatus and method for managing apk file in an android platform
CN105975311A (zh) * 2016-05-09 2016-09-28 腾讯科技(深圳)有限公司 一种应用启动方法及装置
CN105975290A (zh) * 2015-10-13 2016-09-28 乐视致新电子科技(天津)有限公司 一种解析apk文件的方法和装置
CN106528258A (zh) * 2016-10-28 2017-03-22 武汉斗鱼网络科技有限公司 提高安卓项目编译速度的方法及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
CN104866504A (zh) * 2014-02-25 2015-08-26 北京娜迦信息科技发展有限公司 一种对Android软件进行功能扩展的方法及装置
CN104317573A (zh) * 2014-10-03 2015-01-28 李宏伟 安卓安装包转换方法和装置以及运行应用的方法和装置
US20160132547A1 (en) * 2014-11-11 2016-05-12 SEWORKS, Inc. Apparatus and method for managing apk file in an android platform
CN104484585A (zh) * 2014-11-26 2015-04-01 北京奇虎科技有限公司 一种应用程序安装包的处理方法、装置及移动设备
CN105278989A (zh) * 2015-10-12 2016-01-27 邱寅峰 Apk文件的快速加载方法
CN105975290A (zh) * 2015-10-13 2016-09-28 乐视致新电子科技(天津)有限公司 一种解析apk文件的方法和装置
CN105975311A (zh) * 2016-05-09 2016-09-28 腾讯科技(深圳)有限公司 一种应用启动方法及装置
CN106528258A (zh) * 2016-10-28 2017-03-22 武汉斗鱼网络科技有限公司 提高安卓项目编译速度的方法及系统

Also Published As

Publication number Publication date
CN107193544A (zh) 2017-09-22

Similar Documents

Publication Publication Date Title
CN107193544B (zh) 一种应用程序组件化开发方法及装置
CN110377290B (zh) 一种目标工程编译的方法、装置及设备
US8898662B2 (en) Method and device for generating software installation packet
CN104375849B (zh) 加载内核的方法及装置
CN103701930A (zh) 一种移动应用程序的实时更新方法及系统
CN104834555A (zh) 调用功能模块的方法、相关装置及装置修复方法
CN104793946A (zh) 基于云计算平台的应用部署方法和系统
CN111367510B (zh) 一种安卓功能模块开发的方法及装置
CN102289378A (zh) 自动生成应用程序的方法
CN104461582A (zh) 业务处理方法、装置以及设备
CN111209001A (zh) 批量生成安卓各渠道apk的方法、系统、设备和介质
CN110659031A (zh) 应用程序的编译方法、装置、电子设备及存储介质
CN101957766A (zh) 一种字节码织入方法、装置及系统
CN102799444A (zh) 跨平台打包程序的方法及装置
CN111008007A (zh) 组件开发方法、系统、存储介质及处理器
CN111880894A (zh) 一种前端容器镜像的生成方法及系统
CN101930377B (zh) 一种动态获取uid的链接库编译方法
CN102117219A (zh) 一种客户端生成的方法、系统和终端设备
CN113138768A (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
KR20110114754A (ko) 에스케이브이엠 및 위피자바 응용프로그램을 안드로이드 응용프로그램으로 변환하는 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN116009959B (zh) Flash项目的移植方法、装置、系统及存储介质
CN111061486B (zh) 一种安卓应用程序增量方法
CN105335432A (zh) oracle数据库访问方法
CN114840195B (zh) 一种针对iOS SDK静态库的私有化方法
CN115509545A (zh) 一种ios应用的打包构建方法及装置

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