一种应用程序的打包方法和装置制造方法及图纸

技术编号:22329797 阅读:37 留言:0更新日期:2019-10-19 12:13
本申请实施例提供了一种应用程序的打包方法和装置,所述应用程序的打包方法包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。由于将源代码划分为不同的业务模块和分析各个业务模块之间的依赖关系,可以根据依赖关系,采用多线程对多个业务模块进行并发式打包处理,避免了对应用程序的源代码进行一次打包处理耗时长的问题,缩短了应用程序的打包时间,提高了应用程序的打包效率和发布效率。

A packaging method and device of application program

【技术实现步骤摘要】
一种应用程序的打包方法和装置
本申请涉及数据处理
,特别是涉及一种应用程序的打包方法和装置。
技术介绍
随着应用程序的功能越来越多,应用程序也越来越大,而应用程序通常是打包之后进行发包以供用户下载安装。对某些大型应用程序而言,例如购物平台和视频平台,功能繁多,代码量非常大,如果不做代码精简优化而直接打包,会导致整个安装包非常大,同时大量的可执行代码也会影响应用程序的线上稳定性,因此对代码的精简、优化等打包是必须的。目前,应用程序打包通常是直接使用proguard工具直接对应用程序的代码一次性进行精简、优化和混淆后打包,在应用程序的代码量较大时,这种打包方法通常耗时较长,降低了应用程序的打包效率和应用程序的发布效率。
技术实现思路
鉴于上述问题,提出了本申请实施例以便提供一种克服上述问题或者至少部分地解决上述问题的一种应用程序的打包方法和装置。为了解决上述问题,本申请实施例公开了一种应用程序的打包方法,包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。可选地,所述获取待打包应用程序的源代码的步骤包括:获取待打包的应用程序;对所述应用程序进行解压缩处理,得到所述应用程序的可执行文件;对所述可执行文件进行反编译,得到所述应用程序的源代码。可选地,所述获取所述业务模块之间的依赖关系的步骤包括:获取预先配置的业务模块依赖列表;依据所述业务模块依赖列表,生成业务模块依赖树,所述业务模块依赖树的一个节点为一个业务模块;依据所述业务模块依赖树,为所述业务模块配置被依赖列表和依赖列表。可选地,所述依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件的步骤包括:遍历所述业务模块依赖树;判断当前业务模块是否标识有已打包标识;若否,则将所述当前业务模块加入任务队列中;对所述任务队列中的业务模块的代码进行打包,得到业务模块的打包文件,并返回判断当前业务模块是否标识有已打包标识的步骤。可选地,在对所述任务队列中的业务模块的代码进行打包,得到业务模块的打包文件,并返回判断当前业务模块是否标识有已打包标识的步骤之后还包括:对打包之后的业务模块标识已打包标识。可选地,所述对所述任务队列中的业务模块进行打包,得到业务模块的打包文件的步骤包括:从所述任务列表中提取被依赖列表为空的第一业务模块;对所述第一业务模块的代码进行打包得到所述第一业务模块的打包文件;如果所述第一业务模块的依赖列表不为空,对所述第一业务模块的代码进行分析,得到所述第一业务模块的依赖配置文件;从所述任务列表中提取所述第一业务模块的依赖表中的第二业务模块;依据所述第一业务模块的依赖配置文件对所述第二业务模块的代码进行打包,得到所述第二业务模块的打包文件;如果所述第二业务模块的依赖列表不为空,对所述第二业务模块的代码进行分析,得到所述第二业务模块的依赖配置文件。可选地,所述打包包括对所述业务模块的代码进行裁剪、优化、混淆、压缩处理。为了解决上述问题,本申请实施例公开了一种应用程序的打包方法,包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,采用打包处理集群对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。可选地,还包括:将所述业务模块的打包文件保存至缓存中,所述缓存包括本地缓存和/或远程服务器缓存。可选地,所述获取所述业务模块之间的依赖关系的步骤包括:获取预先配置的业务模块依赖列表;依据所述业务模块依赖列表,生成业务模块依赖树,所述业务模块依赖树的一个节点为一个业务模块;依据所述业务模块依赖树,为所述业务模块配置被依赖列表和依赖列表。可选地,所述依据所述依赖关系,采用打包处理集群对所述业务模块的代码进行打包,得到所述业务模块的打包文件的步骤包括:遍历所述业务模块依赖树;判断当前业务模块是否标识有已打包标识;若否,将所述当前业务模块加入任务队列中;采用所述打包处理集群,对所述任务队列中的业务模块的代码进行打包,并返回判断当前业务模块是否标识有已打包标识的步骤。可选地,在所述采用所述分布式打包处理集群,对所述任务队列中的业务模块的代码进行打包,并返回判断当前业务模块是否标识有已打包标识的步骤之后还包括:对打包之后的业务模块标识已打包标识。可选地,所述采用所述打包处理集群,对所述任务队列中的业务模块的代码进行打包的步骤包括:建立打包处理集群;从所述任务列表中提取被依赖列表为空的第一业务模块;将所述第一业务模块发送至所述打包处理集群;在所述打包处理集群中对所述第一业务模块的代码进行打包得到所述第一业务模块的打包文件;如果所述第一业务模块的依赖列表不为空,对所述第一业务模块的代码进行分析,得到所述第一业务模块的依赖配置文件;从所述任务列表中提取所述第一业务模块的依赖表中的第二业务模块;将所述第二业务模块发送至所述打包处理集群;在所述打包处理集群中,依据所述第一业务模块的依赖配置文件对所述第二业务模块的代码进行打包,得到所述第二业务模块的打包文件;如果所述第二业务模块的依赖列表不为空,对所述第二业务模块的代码进行分析,得到所述第二业务模块的依赖配置文件。可选地,所述依据所述依赖关系,采用打包处理集群对所述业务模块的代码进行打包,得到所述业务模块的打包文件的步骤包括:计算所述业务模块的代码的校验值;依据所述校验值在本地缓存中查找是否存储有所述业务模块的打包文件;若是,则获取本地缓存中的打包文件;若否,则依据所述校验值在远程服务器缓存中查找是否存储有所述业务模块的打包文件;如果远程服务器缓存中存储有所述业务模块的打包文件,则获取所述远程服务器缓存中的打包文件;如果远程服务器缓存中不存储有所述业务模块的打包文件,则对所述业务模块的代码进行打包。可选地,所述打包包括对所述业务模块的代码进行裁剪、优化、混淆、压缩处理。为了解决上述问题,本申请实施例公开了一种应用程序的打包装置,包括:源代码获取模块,用于获取待打包应用程序的源代码;业务模块确定模块,用于确定所述源代码中代码所属的业务模块;依赖关系获取模块,用于获取所述业务模块之间的依赖关系;第一业务模块打包模块,用于依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件;第一应用程序打包模块,用于采用所述业务模块的打包文件对所述应用程序进行打包。可选地,所述源代码获取模块包括:应用程序获取子模块,用于获取待处理的应用程序;解压子模块,用于对所述应用程序进行解压缩处理,得到所述应用程序的可执行文件;反编译子模块,用于对所述可执行文件进行反编译,得到所述应用程序的源代码。可选地,所述依赖关系获取模块包括:依赖列表获取子模块,用于获取预先配置的业务模块依赖列表;依赖树生成子模块,用于依据所述业务模块依赖列表,生成业务模块依赖树,所述业务模块依赖树的一个节点为一个业务模块;列表配置子模块,用于依据所述业务模块依赖树,为所述业务模块配置被依赖列表和依赖列表。可选地,所述第一业务模块打包模块包括:依赖本文档来自技高网...

【技术保护点】
1.一种应用程序的打包方法,其特征在于,包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。

【技术特征摘要】
1.一种应用程序的打包方法,其特征在于,包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。2.如权利要求1所述的打包方法,其特征在于,所述获取待打包应用程序的源代码的步骤包括:获取待打包的应用程序;对所述应用程序进行解压缩处理,得到所述应用程序的可执行文件;对所述可执行文件进行反编译,得到所述应用程序的源代码。3.如权利要求1所述的打包方法,其特征在于,所述获取所述业务模块之间的依赖关系的步骤包括:获取预先配置的业务模块依赖列表;依据所述业务模块依赖列表,生成业务模块依赖树,所述业务模块依赖树的一个节点为一个业务模块;依据所述业务模块依赖树,为所述业务模块配置被依赖列表和依赖列表。4.如权利要求3所述的打包方法,其特征在于,所述依据所述依赖关系,对所述业务模块的代码进行打包,得到所述业务模块的打包文件的步骤包括:遍历所述业务模块依赖树;判断当前业务模块是否标识有已打包标识;若否,则将所述当前业务模块加入任务队列中;对所述任务队列中的业务模块的代码进行打包,得到业务模块的打包文件,并返回判断当前业务模块是否标识有已打包标识的步骤。5.如权利要求4所述的打包方法,其特征在于,在对所述任务队列中的业务模块的代码进行打包,得到业务模块的打包文件,并返回判断当前业务模块是否标识有已打包标识的步骤之后还包括:对打包之后的业务模块标识已打包标识。6.如权利要求4所述的打包方法,其特征在于,所述对所述任务队列中的业务模块进行打包,得到业务模块的打包文件的步骤包括:从所述任务列表中提取被依赖列表为空的第一业务模块;对所述第一业务模块的代码进行打包得到所述第一业务模块的打包文件;如果所述第一业务模块的依赖列表不为空,对所述第一业务模块的代码进行分析,得到所述第一业务模块的依赖配置文件;从所述任务列表中提取所述第一业务模块的依赖表中的第二业务模块;依据所述第一业务模块的依赖配置文件对所述第二业务模块的代码进行打包,得到所述第二业务模块的打包文件;如果所述第二业务模块的依赖列表不为空,对所述第二业务模块的代码进行分析,得到所述第二业务模块的依赖配置文件。7.如权利要求1所述的打包方法,其特征在于,所述打包包括对所述业务模块的代码进行裁剪、优化、混淆、压缩处理。8.一种应用程序的打包方法,其特征在于,包括:获取待打包应用程序的源代码;确定所述源代码中代码所属的业务模块;获取所述业务模块之间的依赖关系;依据所述依赖关系,采用打包处理集群对所述业务模块的代码进行打包,得到所述业务模块的打包文件;采用所述业务模块的打包文件对所述应用程序进行打包。9.如权利要求8所述的打包方法,其特征在于,还包括:将所述业务模块的打包文件保存至缓存中,所述缓存包括本地缓存和/或远程服务器缓存。10.如权利要求8所述的打包方法,其特征在于,所述获取所述业务模块之间的依赖关系的步骤包括:获取预先配置的业务模块依赖列表;依据所述业务模块依赖列表,生成业务模块依赖树,所述业务模块依赖树的一个节点为一个业务模块;依据所述业务模块依赖树,为所述业务模块配置被依赖列表和依赖列表。11.如权利要求10...

【专利技术属性】
技术研发人员:鲁嘉武
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1