首页> 中国专利> 基于android插件化差分打包方法、装置、电子设备及计算机可读介质

基于android插件化差分打包方法、装置、电子设备及计算机可读介质

摘要

本发明提供一种基于android插件化差分打包方法,包括:从服务器获取基准版本文件;将新插件与基准版本文件中包含的旧插件进行对比,找出存在差异的插件;对新插件中的存在差异的插件进行打包;对于新插件中与旧插件不存在差异的插件,直接使用从服务器获取的相应的已打包的旧插件;以及将打包的新插件以及从服务器获取的旧插件组装成新插件集,并将新插件集拷贝到宿主的指定目录,对宿主生成新的apk。根据本实施方式,能够利用插件间的无耦合的特性,通过对比代码的差分,找出有代码变更的插件,只对该发生变更的插件进行打包,从而节省打包时间。

著录项

  • 公开/公告号CN112732314A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 北京一亩田新农网络科技有限公司;

    申请/专利号CN202011606003.1

  • 发明设计人 刘子樋;贾睿;王海明;

    申请日2020-12-30

  • 分类号G06F8/658(20180101);G06F8/71(20180101);G06F9/445(20180101);

  • 代理机构11464 北京奉思知识产权代理有限公司;

  • 代理人邹轶鲛;石红艳

  • 地址 100080 北京市海淀区西小口路66号中关村东升科技园B-6号楼A座6层A602B室

  • 入库时间 2023-06-19 10:48:02

说明书

技术领域

本发明涉及计算机领域,尤其涉及一种基于android插件化差分打包方法、装置、电子设备及计算机可读介质。

背景技术

一般的,一个android应用在开发到了一定阶段以后,功能模块将会越来越多,apk安装包也越来越大,用户在使用过程中没有办法选择性的加载自己需要的功能模块,此时需要考虑如何分拆整个应用。

所谓插件化,就是让应用不必再把所有的内容都放在一个apk中,可以把一些功能和逻辑单独抽出来放在插件apk中,然后由宿主apk做到按需调用。一个宿主可以有多个插件,根据不同业务需求,可以动态更新替换插件。

在现有技术中,当对应用进行重新打包时,需要对所有插件重新打包,因此大型项目打包时间较长,影响开发测试效率。

发明内容

发明欲解决的技术问题

本发明目的在于提供一种能够减少应用打包时间的基于android插件化差分打包方法。

用于解决问题的技术手段

本发明的一个方面提供一种基于android插件化差分打包方法,包括:

从服务器获取基准版本文件;

将新插件与所述基准版本文件中包含的旧插件进行对比,找出存在差异的插件;

对新插件中的所述存在差异的插件进行打包;对于新插件中与所述旧插件不存在差异的插件,直接使用从服务器获取的相应的已打包的旧插件;以及

将打包的新插件以及从服务器获取的旧插件组装成新插件集,并将所述新插件集拷贝到宿主的指定目录,对宿主生成新的apk。

在上述基于android插件化差分打包方法中,优选为,

根据所述存在差异的插件生成需打包插件列表,并与android插件工程内的全量插件列表做对比,对所述需打包插件列表中的插件进行打包,而对于所述全量插件列表中存在而所述需打包插件列表中不存在的插件,从服务器获取相应的旧插件。

在上述基于android插件化差分打包方法中,优选为,

找出所述存在差异的插件的步骤包括:

拉取android插件工程,包含源代码、资源文件、插件独立的配置文件和公共配置文件;

对已拉取的android插件工程中的所有文件生成md5;

将生成的android插件工程中的所有文件的md5与所述基准版本文件中包含的android插件工程中的所有文件的md5进行对比,找出存在差异的文件;以及

根据所述存在差异的文件找出所述存在差异的插件。

在上述基于android插件化差分打包方法中,进一步优选为,

根据所述存在差异的文件生成差异文件列表,并根据所述差异文件列表来找出存在差异的插件。

在上述基于android插件化差分打包方法中,进一步优选为,

当所述存在差异的文件包括公共配置文件时,对所有插件进行打包。

在上述基于android插件化差分打包方法中,优选为,

在不存在基准版本文件的情况下,对所有所述新插件进行打包。

在上述基于android插件化差分打包方法中,优选为,

还包括:利用md5检测所述宿主是否发生改变,若检测到所述宿主发生改变,则对所述宿主进行重新打包;若所述宿主未发生改变,则修复基准版本文件中的宿主的版本信息。

在上述基于android插件化差分打包方法中,优选为,

所述修复基准版本文件中的宿主的版本信息包括:对所述宿主进行解压,利用二进制工具修改androidmanifes.xml文件里的版本号对应的二进制字节,从而修改所述版本信息。

本发明的另一方面还提供一种基于android插件化差分打包装置,其特征在于,包括:

基准版本文件获取模块,该基准版本文件获取模块从服务器获取基准版本文件;

插件对比模块,该插件对比模块将新插件与所述基准版本文件中包含的旧插件进行对比,找出存在差异的插件;

插件打包模块,该插件打包模块对新插件中的所述存在差异的插件进行打包;

旧插件获取模块,对于新插件中与所述旧插件不存在差异的插件,该旧插件获取模块直接使用从服务器获取的相应的已打包的旧插件;以及

apk生成模块,该apk生成模块将打包的新插件以及从服务器获取的旧插件组装成新插件集,并将所述新插件集拷贝到宿主的指定目录,对所述宿主生成新的apk。

本发明的另一方面还提供一种基于android插件化差分打包的电子设备,包括:

一个或多个处理器;以及

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上所述的方法。

本发明还提供一种计算机可读介质,其上存储有程序,其特征在于,该程序被处理器执行,以实现如上所述的方法。

发明效果

根据本实施方式,能够利用插件间的无耦合的特性,通过对比代码的差分,找出有代码变更的插件,只对该发生变更的插件进行打包,从而节省打包时间。对于大型的项目,可以十倍以上地提高应用的打包效率。

附图说明

图1示出现有技术中的打包方法。

图2示出本发明涉及的基于android插件化差分打包方法的大致步骤。

图3示出本发明涉及的基于android插件化差分打包方法的原理。

图4示出本发明涉及的基于android插件化差分打包方法的具体流程图。

图5示出本发明涉及的基于android插件化差分打包装置的构成。

具体实施方式

以下,参照附图对本发明的实施方式进行详细说明。需要说明的是,以下所述的实施方式仅是本发明的优选实施例,本发明并不被其限定。

插件化开发是指将整个app拆分成很多模块,包括宿主和多个插件。现有技术中,对应用进行重新打包时,例如如图1所示,需要对所有的插件进行重新打包,并且对宿主进行重新打包。然而,在很多情况下,并不是所有的插件和宿主都会发生改变,有时只是其中的某个或某几个插件发生了改变,一般一个插件的打包时间为三分钟,此时若对所有的插件和宿主进行重新打包,势必会浪费很多时间。

在以下的说明中,例如将最终用来替换的插件称为新插件,将基准版本文件中的插件称为旧插件。需要说明的是,下文中的基准版本文件是由操作者选取的历史版本文件,包括:旧插件、android插件工程以及旧宿主。

如图2所示,本发明的一个实施方式涉及基于android插件化差分打包方法,具体包括:

S1:由操作者提供版本号和打包环境,从服务器获取基准版本文件。该基准版本文件即为历史版本的旧插件、历史版本的android插件工程以及历史版本的宿主(旧宿主);

S2:通过将新插件与基准版本文件中包含的旧插件进行对比,从而找出新插件中的与旧插件存在差异的插件;

S3:仅对新插件中与旧插件存在差异的插件进行打包;

S4:对于不存在差异的插件,直接使用从服务器获取的基准版本文件中包含的已经打包过的旧插件;以及

S5:将打包的新插件和从服务器获取的旧插件组装成插件集,并将该插件集拷贝到宿主的指定目录,对宿主生成新的apk(Android application package,Android应用程序包)。

例如如图3所示,根据本实施方式,当存在n个插件和一个宿主,而仅插件2和插件3发生改变时,与现有技术对所有的插件都进行打包不同,本发明的实施方式涉及的基于android插件化差分打包方法将新插件与旧插件进行对比,找出存在差异的插件即新插件2和新插件3,然后只需要对新插件2和新插件3进行打包,对于其他插件例如插件1和插件4-n,只需要从服务器获取相应的已经打包过的旧插件即可。然后,将新插件2、新插件3、旧插件1、旧插件4-n组装成新插件集,并与宿主一起生成新包。由于旧插件1和旧插件4-n并未发生改变,因此通过如上方法即可省去对插件1和插件4-n的打包过程所占用的时间,大大提高了打包效率。

另外,图3所示的打包方法为宿主未发生改变的情况,此时由于宿主并未发生改变,因此实质上并不需要重新打包宿主。然而,在现有技术中,由于需要修改宿主的版本号,因此仍旧需要对宿主进行重新打包以修改宿主的版本号。本发明的一个实施方式涉及的基于android插件化差分打包方法仅需要修改旧宿主的版本号即可。在修改完宿主的版本号之后,将插件集拷贝到宿主的指定目录,对宿主重新生成新的apk。需要说明的是,在宿主发生改变的情况下,需要对宿主进行打包。

根据本实施方式,能够利用插件间的无耦合的特性,通过对比代码的差分,找出有代码变更的插件,只对该发生变更的插件进行打包,从而节省打包时间。对于大型的项目,可以十倍以上地提高应用的打包效率。

另外,本发明在宿主未发生改变的情况下,不需要重新打包宿主,只需要修改旧宿主的版本号即可,从而进一步节省了时间。

下面,参照图4,对本发明的基于android插件化差分打包方法进行进一步详细说明。

首先,由操作者提供版本号和打包环境,并根据该版本号和打包环境从服务器中查找历史版本文件即基准版本文件。基准版本文件包括:历史版本的android插件工程、历史版本的插件(旧插件)、历史版本的宿主(旧宿主)。需要说明的是,若服务器中不存在相应的基准版本文件,则需要对所有的插件全部进行打包,即进行全量打包。在从服务器中查找到基准版本文件的情况下,进行以下差分打包。

首先,操作者拉取android插件工程,包含源代码、资源文件、插件独立的配置文件和公共配置文件。然后对已拉取的android插件工程中的所有文件生成md5(MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致)。

将生成的android插件工程中的所有文件的md5与从服务器获取的历史版本的android插件工程中的所有文件的md5进行对比,找出存在差异的文件,并根据差异文件来找出存在差异的插件。

此时,若是存在差异的文件包括公共配置文件,那么由于公共配置文件的改变,所有的插件都会发生改变,因此需要对所有的插件都进行打包,即进行全量打包。而若公共配置文件未发生改变,即存在差异的文件中不包含公共配置文件,例如仅插件独立的配置文件发生了改变,则仅有部分插件发生了改变,此时仅对该发生改变的插件进行打包即可。

具体地,在根据md5对新插件和旧插件进行对比时,根据插件工程中文件的md5列表和基准版本文件中的历史版本的插件工程中的文件的md5列表来找出差异文件,根据差异的文件生成差异文件列表,根据差异文件列表来找出新插件中与旧插件存在差异的插件。并且,根据找出的存在差异的插件生成需打包插件列表,并与插件工程内的全量插件列表做对比,根据全量插件列表中存在而需打包插件列表中不存在的插件生成不需打包插件列表。对需打包插件列表中的插件进行重新打包,而对于不需打包插件列表中的插件,直接使用从服务器获取的基准版本文件中包括的相应已打包过的旧插件即可。

由此,可以仅对发生了改变的插件进行打包,而未发生改变的插件可以使用历史版本的已打包过的旧插件,不需要再进行打包,从而相应地节省了打包时间。

在本发明的另一实施方式中,例如针对宿主生成md5,利用md5检测宿主是否发生改变,若宿主发生改变,则对宿主进行重新打包,但是若宿主未发生改变,则修复基准版本文件中旧宿主的版本信息。

具体地,修复基准版本文件中的旧宿主的版本信息包括:对旧宿主进行解压,利用二进制工具修改androidmanifes.xml文件里的版本号对应的二进制字节,从而修改版本信息。

作为比较例,在现有技术中,无论宿主是否发生了改变,都会将修改过版本信息的宿主进行重新打包。然而,根据本发明的该实施方式,使用了二进制工具,因此即使androidmanifes.xml文件被加密而无法直接修改,也能够利用二进制工具修改与版本号对应的二进制字节。因此节约了打包宿主的时间,提升了工作效率。

如图5所示,本发明的另一实施方式提供一种基于android插件化差分打包装置,包括:基准版本文件获取模块100,该基准版本文件获取模块100从服务器获取基准版本文件;插件对比模块200,该插件对比模块100将新插件与基准版本文件中包含的旧插件进行对比,找出存在差异的插件;插件打包模块300,该插件打包模块300对新插件中的存在差异的插件进行打包;旧插件获取模块400,对于新插件中与所述旧插件不存在差异的插件,该旧插件获取模块400直接使用从服务器获取的相应的已打包的旧插件;以及apk生成模块500,该apk生成模块500将打包的新插件以及从服务器获取的旧插件组装成新插件集,并将该新插件集拷贝到宿主的指定目录,对该宿主生成新的apk。

本发明还提供一种基于android插件化差分打包的电子设备,包括:一个或多个处理器;以及存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上所述的方法。

本发明还提供一种计算机可读介质,其上存储有程序,该程序被处理器执行,以实现如上所述的方法。

以上对本发明所提供的基于android插件化差分打包方法、装置、电子设备及计算机可读介质进行了详细的说明。本领域技术人员在不超出本发明的实质内容的范围内对实施方式的要素所做的变更,都落入本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号