一种应用安装包的构建方法、装置、系统及存储介质与流程

未命名 10-18 阅读:116 评论:0


1.本技术涉及应用开发技术领域,更具体的说,涉及一种应用安装包的构建方法、装置、系统及存储介质。


背景技术:

2.伴随着应用程序(application,app)的业务更新和迭代,通常应用安装包体积会越来越大。而安装包体积的增长会严重影响到应用安装成功率和启动时间。
3.目前,除了删除无用代码、无用库、重复功能代码、优化多媒体内置资源文件体积等常规方式进行包体积优化的手段外,还开始考虑将一些资源文件作为远程资源,在应用构建时抽离,应用运行时通过远程下载这些资源文件,实现应用安装包的瘦身。
4.但是,以运行时下载远程资源这种方式实现应用安装包体积优化,每次应用安装包更新都需要人工提取远程资源、人工上传远程资源、人工绑定瘦身后的应用安装包和远程资源之间的对应关系,如此导致远程资源的提取、上传效率低下,以及对应关系的绑定效率低下,从而导致瘦身后的应用安装包的获得效率低下。而且,人工部署操作可能存在较多的失误。


技术实现要素:

5.有鉴于此,本技术实施例公开一种应用安装包的构建方法、装置、系统及存储介质,提高获得瘦身后的应用安装包的效率,减少人为操作风险。
6.本技术实施例提供的技术方案如下:
7.第一方面,本技术实施例提供了一种应用安装包的构建方法,所述方法包括:
8.编译应用源码工程时,生成构建号;
9.从所述应用源码工程中获取构建参数;
10.利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;
11.按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的第一资源信息发送至第二服务器;其中,所述第一资源信息包括:所述构建号、所述第一远程资源的下载地址;
12.当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。
13.在一种可能的实现方式中,所述多个任务包括:多个提取任务、一个上传任务和一个入库任务,所述第一远程资源为多个,所述第一远程资源与所述提取任务一一对应;
14.所述按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的资源信息发送至第二服务器,包括:
15.按所述调度时机运行每个所述第一远程资源对应的提取任务,从所述应用源码工
程中提取得到所述第一远程资源对应的第一资源压缩包,构建第一远程资源对应的第一资源信息;
16.按所述调度时机运行所述上传任务,将所有所述第一资源压缩包上传至第一服务器;
17.按所述调度时机运行所述入库任务,将所有所述第一资源信息发送至第二服务器,并将所有所述第一资源信息存入所述第二服务器维护的数据库中。
18.在一种可能的实现方式中,所述按所述调度时机运行所述上传任务,将所有所述第一资源压缩包上传至第一服务器,包括:
19.按所述调度时机运行所述上传任务,得到每个第二远程资源对应的第二资源压缩包,将所有所述第一资源压缩包和所有所述第二资源压缩包上传至第一服务器;其中,所述第一远程资源包括以下至少一种:资源文件、动态链接库文件,所述第二远程资源包括:插件代码包;
20.所述按所述调度时机运行所述入库任务,将所有所述第一资源信息发送至第二服务器,并将所有所述第一资源信息存入所述第二服务器维护的数据库中,包括:
21.按所述调度时机运行所述入库任务,将所有所述第一资源信息和所有所述第二远程资源对应的所有第二资源信息发送至第二服务器,并将所有所述第一资源信息和所有所述第二资源信息存入所述第二服务器维护的数据库中。
22.在一种可能的实现方式中,所述多个任务还包括:至少一个变换transform任务,所述按所述调度时机运行每个所述第一远程资源对应的提取任务之前,所述方法还包括:
23.按所述调度时机运行所述第一远程资源对应的transform任务,对所述第一远程资源对应的资源加载方法进行修改。
24.在一种可能的实现方式中,所述方法还包括:
25.利用校验文件一致性算法对所述第一远程资源进行计算,得到第一校验参数;
26.将所述第一校验参数上传至所述第一服务器;其中,所述第一校验参数用于所述第一服务器校验所述第一服务器上是否存储有所述第一远程资源。
27.在一种可能的实现方式中,所述第一资源信息还包括:远程资源下载时机,所述方法还包括:
28.当运行所述瘦身后的应用安装包时,根据所述构建号从所述第二服务器获取对应的第一资源信息;
29.根据所述第一资源信息中的下载地址和远程资源下载时机从所述第一服务器下载对应的第一远程资源。
30.第二方面,本技术实施例提供了一种应用安装包的构建装置,所述装置包括:
31.生成模块,用于编译应用源码工程时,生成构建号;
32.获取模块,用于从所述应用源码工程中获取构建参数;
33.创建模块,用于利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;
34.运行模块,用于按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的第一资源信息发送至第二服务器;其中,所述第一资源信息包括:所述构建号、所述第一远
程资源的下载地址;
35.输出模块,用于当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。
36.第三方面,本技术实施例提供了应用安装包的构建系统,所述系统包括:应用构建服务器、内容分发网络cdn源站服务器、远程资源管理服务器;
37.所述应用构建服务器,用于编译应用源码工程时,生成构建号;
38.所述应用构建服务器,还用于从所述应用源码工程中获取构建参数;
39.所述应用构建服务器,还用于利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;
40.所述应用构建服务器,还用于按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至所述cdn源站服务器,将所述第一远程资源对应的第一资源信息发送至所述远程资源管理服务器;其中,所述第一资源信息包括:所述构建号、所述第一远程资源的下载地址;
41.所述应用构建服务器,还用于当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。
42.第四方面,本技术实施例提供了一种应用安装包的构建装置,包括;
43.存储器,用于存储指令;
44.处理器,用于执行所述存储器中的所述指令以执行以上第一方面任一项所述的方法。
45.第五方面,本技术实施例提供了一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行以上第一方面任一项所述的方法。
46.第六方面,本技术实施例提供一种计算机程序产品,所述计算机程序产品在终端设备上运行时,使得所述终端设备执行以上第一方面任一项所述的方法。
47.基于上述技术方案,本技术具有以下有益效果:
48.本技术实施例公开了一种应用安装包的构建方法、装置、系统及存储介质。其中,该方法包括:编译应用源码工程时,生成构建号;从应用源码工程中获取构建参数;利用构建参数创建对应的多个任务,并配置任务的调度时机;按调度时机运行对应的任务,从应用源码工程中提取出第一远程资源,将第一远程资源上传至第一服务器,将第一远程资源对应的第一资源信息发送至第二服务器;当应用源码工程编译完成时,输出瘦身后的应用安装包。可见,本技术实施例中通过修改原有的应用安装包构建流程,插入远程资源的提取、上传步骤以及资源信息的发送步骤,使得能自动完成远程资源文件的提取、上传,如此提高了远程资源的提取、上传效率;而且构建号能够唯一标识本次构建,通过发送包括构建号的资源信息以及在瘦身后的应用安装包中携带构建号,实现通过构建号自动绑定本次构建的瘦身后的应用安装包与远程资源的映射关系,如此提高了映射关系的绑定效率;从而提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。此外,若后续应用程序需再次更新,只需对应修改应用源码工程中的构建参数,就可上传对应的远程资源、绑定对应的映射关系,对应的输出瘦身后的应用安装包,进一步提高了获得瘦身后的应用安装包的效率。
附图说明
49.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据公开的附图获得其他的附图。
50.图1为本技术实施例公开的一种应用安装包的构建方法的流程图;
51.图2为本技术实施例公开的一种动态链接库文件的生产方法的流程图;
52.图3为本技术实施例公开的一种应用安装包构建及运行的方法的流程图;
53.图4为本技术实施例公开的一种资源信息入库后的展示界面示意图;
54.图5为本技术实施例公开的另一种资源信息入库后的展示界面示意图;
55.图6为本技术实施例公开的另一种应用安装包的构建方法的流程图;
56.图7为本技术实施例公开的一种应用安装包的运行方法的流程图;
57.图8为本技术实施例公开的一种应用安装包的构建装置的结构示意图。
具体实施方式
58.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
59.目前,除了删除无用代码、无用库、重复功能代码、优化多媒体内置资源文件体积等常规方式进行包体积优化的手段外,还开始考虑将一些资源文件作为远程资源,在应用构建时抽离,应用运行时通过远程下载这些资源文件,实现应用安装包的瘦身。
60.以运行时下载远程资源这种方式实现应用安装包体积优化,目前主要是通过人工的方式从应用源码工程里抽取远程资源并上传,得到远程资源的下载地址,然后编译得到瘦身后的应用安装包,再人工配置绑定瘦身后的应用安装包和远程资源的对应关系,以保证瘦身包安装后运行能够按配置获取对应远程资源列表,并下载、加载。但是,该方法每次应用安装包更新都需要人工提取远程资源、人工上传远程资源、人工绑定对应关系,如此导致远程资源的提取、上传效率低下,以及对应关系的绑定效率低下,从而导致瘦身后的应用安装包的获得效率低下。而且,人工部署操作可能存在较多的失误。
61.为此,本技术实施例中通过修改原有的应用安装包构建流程,插入远程资源的提取、上传步骤以及资源信息的发送步骤,使得能自动完成远程资源文件的提取、上传,如此提高了远程资源的提取、上传效率;而且构建号能够唯一标识本次构建,通过发送包括构建号的资源信息以及在瘦身后的应用安装包中携带构建号,实现通过构建号自动绑定本次构建的瘦身后的应用安装包与远程资源的映射关系,如此提高了映射关系的绑定效率;从而提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。此外,若后续应用程序需再次更新,只需对应修改应用源码工程中的构建参数,就可上传对应的远程资源、绑定对应的映射关系,对应的输出瘦身后的应用安装包,进一步提高了获得瘦身后的应用安装包的效率。
62.参见图1,本技术实施例公开的一种应用安装包的构建方法的流程图,该方法包
括:
63.s101、编译应用源码工程时,生成构建号;
64.通常安卓软件输出两种方式,一种是安卓安装包(androi dpackage,apk)输出,一种是软件开发工具包(software development kit,sdk)sdk输出,sdk输出即是安卓资料库(android archive,aar)包。安卓应用构建本身已有的版本号version code,通常适用于apk或aar包升级,却无法标识一次构建,特别是在某一版本软件开发测试时版本号通常不做变更。故本技术实施例在每一次应用源码工程编译时,自动生成构建号,利用该构建号在入库远程资源对应的资源信息时绑定远程资源和应用安装包的映射关系。需要说明的是,该构建号能保证单应用单渠道单次编译构建的唯一性即可,例如采用编译服务器utc时间等等,本技术对此不做限定。
65.s102、从应用源码工程中获取构建参数;
66.其中,构建参数包括:构建应用id、构建jenkins任务链接、提取资源列表信息、业务渠道号、内置资源是否保留配置、远程资源下载时机等等,其中,远程资源下载时机包括:应用启动时下载、功能使用时下载、应用闲时下载等等,本技术对此不做限制,可根据实际需求设置。需要说明的是,在安卓应用安装包编译构建时,通常在应用安装包编译构建服务器上搭建jenkins服务,可以通过新建jenkins任务,配置构建参数,发送构建任务。
67.需要说明的是,android使用gradle作为编译构建工具,支持插件化添加构建任务,本技术实施例通过修改原本android apk或者aar包构建任务流程,插入自定义gradle plugin构建任务实现自动输出瘦身后的应用安装包。本技术实施例会预先在应用源码工程里配置构建参数,应用开发时集成构建gradle plugin,通过gradle plugin配置方法,即gradle extension将构建配置传递给插件自定义任务。
68.以下为应用源码工程里配置构建参数的一段示例性代码:
69.70.[0071][0072][0073]
可以理解的是,上述的代码只是示例性说明,不应理解为对本技术的限制。
[0074]
s103、利用构建参数创建对应的多个任务,并配置任务的调度时机;
[0075]
需要说明的是,gradle提供了构建应用的核心功能,开发了一套android gradle plugin插件专门来编译构建android工程。gradle插件封装了一系列task并执行,本技术实
施例通过自定义gradle对象插件的方式,插入原本应用构建流程,能保证远程资源构建成功后,才能构建出瘦身后的apk或者aar包。插件模块maven发布,应用通过apply plugin的方式去引用这个插件,实现构建脚本在各应用工程接入。需要说明的是,maven是一个项目管理和综合工具,maven提供了开发人员构建一个完整的生命周期框架,开发团队可以自动完成项目的基础工具建设,maven使用标准的目录结构和默认构建生命周期。
[0076]
s104、按调度时机运行对应的任务,从应用源码工程中提取出第一远程资源,将第一远程资源上传至第一服务器,将第一远程资源对应的第一资源信息发送至第二服务器;其中,第一资源信息包括:构建号、第一远程资源的下载地址;
[0077]
需要说明的是,未瘦身的应用安装包文件解压后有assets、libs文件目录,assets文件目录通常存放一些应用安装包运行时需要的字体资源文件、配置文件、图片、音视频多媒体文件等等,lib文件目录通常会存放应用安装包运行时需要加载的动态链接库文件。为减少应用安装包大小以实现瘦身等目的,本技术实施例可以在编译生成应用安装包时抽离出来assets、libs文件目录中的这些资源,运行时再通过远程下载。即第一远程资源可以包括:资源文件、动态链接库文件,资源文件指的是应用源码工程直接存放文件,如assets目录下的字体、多媒体等等,动态链接库文件指的是应用源码工程经过gradle编译任务生成的的动态链接库文件。
[0078]
其中,第一资源信息可以包括:构建号、构建应用渠道信息、应用版本号、下载地址、文件大小、资源名称、资源类型、资源业务、远程资源下载时机、文件md5值等等,本技术对此不做限制。
[0079]
本技术实施例中的第一服务器可以是内容分发网络(content delivery network,cdn)源站服务器,第二服务器可以是远程资源管理服务器。将第一资源信息发送至第二服务器之后,可以将第一资源信息存入第二资源服务器维护的数据库中,为后续远程资源服务请求远程资源列表接口提供数据源。
[0080]
在一种可能的实现方式中,入库接口服务还可以通过第一资源信息的文件md5信息自动生成资源版本信息,如此方便后续资源问题排查、或者支持资源版本升级功能。例如:查询数据库同名资源记录,若未查询本地入库资源md5值,则版本号+1。可以理解的是,上述只是示例性说明,不应理解为对本技术的限制。
[0081]
s105、当应用源码工程编译完成时,输出瘦身后的应用安装包;瘦身后的应用安装包携带构建号。
[0082]
在一种可能的实现方式中,本技术实施例中的第一资源信息还包括:远程资源下载时机,本技术实施中当运行瘦身后的应用安装包时,会根据构建号从第二服务器获取对应的第一资源信息,然后根据第一资源信息中的下载地址和远程资源下载时机从第一服务器下载对应的第一远程资源。其中,远程下载时机可以为以下任一种:应用启动时、业务启动时、应用闲时。可以理解的是,一个瘦身后的应用安装包一般会包括多个第一远程资源,该多个第一远程资源对应的构建号是相同,故本技术实施中当运行瘦身后的应用安装包时,可以根据构建号从第二服务器获取对应的第一资源信息列表,该第一资源信息列表中会包括多条第一资源信息。可见,本技术实施例通过构建号实现瘦身后的应用安装包对应的第一远程资源文件的下载,从而能实现后续完整的应用安装包的运行;而且,本技术实施例中是结合远程资源下载时机下载远程资源,如此不同的远程资源可能在不同的时机进行
下载,能实现按需下载远程资源,避免一次性下载全部远程资源而造成的下载速度过慢的问题。
[0083]
可以理解的是,后面提到的第二远程资源的下载与第一远程资源的下载相似,是当运行瘦身后的应用安装包时,根据构建号从第二服务器获取对应的第二资源信息,然后根据第二资源信息中的下载地址和远程资源下载时机从第一服务器下载对应的第二远程资源,故此不再赘述。
[0084]
可见,本技术实施例中通过修改原有的应用安装包构建流程,插入远程资源的提取、上传步骤以及资源信息的发送步骤,使得能自动完成远程资源文件的提取、上传,如此提高了远程资源的提取、上传效率;而且构建号能够唯一标识本次构建,通过发送包括构建号的资源信息以及在瘦身后的应用安装包中携带构建号,实现通过构建号自动绑定本次构建的瘦身后的应用安装包与远程资源的映射关系,如此提高了映射关系的绑定效率;从而提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。此外,若后续应用程序需再次更新,只需对应修改应用源码工程中的构建参数,就可上传对应的远程资源、绑定对应的映射关系,对应的输出瘦身后的应用安装包,进一步提高了获得瘦身后的应用安装包的效率。
[0085]
在一种可能的实现方式中,本技术实施例中提供的应用安装包的构建方法中,多个任务包括:多个提取任务、一个上传任务和一个入库任务,第一远程资源为多个,第一远程资源与提取任务一一对应;步骤s104具体包括:
[0086]
s1041、按调度时机运行每个第一远程资源对应的提取任务,从应用源码工程中提取得到第一远程资源对应的第一资源压缩包,构建第一远程资源对应的第一资源信息;
[0087]
需要说明的是,第一资源压缩包是对第一远程资源进行压缩后得到的。
[0088]
其中,从应用源码工程中提取得到第一远程资源对应的第一资源压缩包,构建第一远程资源对应的第一资源信息可以包括:将应用源码工程中对应的第一远程资源复制到编译输出目录,然后在编译输出目录中对该第一远程资源进行压缩,得到第一资源压缩包;构建该第一远程资源对应的第一资源信息输出到编译输出目录;按内置资源是否保留配置删除或保留应用源码工程中对应的第一远程资源;或,利用应用源码工程编译生产出对应的第一远程资源,将该生产出的第一远程资源复制到编译输出目录,然后在编译输出目录中对该生产出的第一远程资源进行压缩,得到第一资源压缩包;构建该生产出的第一远程资源对应的第一资源信息输出到编译输出目录;按内置资源是否保留配置删除或保留应用源码工程中该生产出的第一远程资源。需要说明的是,出于可动态更新以及保险的目的,本技术实施例中应用源码工程中的有些远程资源可以不进行删除,通过内置资源是否保留配置这一构建参数来实现。在资源加载应用的时候,可以控制优先加载远程下载的资源文件,实现动态更新。
[0089]
需要说明的是,本技术实施例需要按资源类型定义不同类型的提取任务,每个第一远程资源对应一个提取任务。其中,资源类型包括:so文件、字体文件、多媒体文件、json配置文件等等,本技术对此不做限定,可根据实际情况选择设置。提取任务需要按资源类型生产资源文件、并复制、压缩、构建资源描述信息到编译输出目录,任意环节发生错误都直接结束编译,构建失败。
[0090]
在一种可能的实现方式中,多个任务还包括:至少一个变换transform任务,步骤
s1041之前,该方法还包括:按调度时机运行第一远程资源对应的transform任务,对第一远程资源对应的资源加载方法进行修改。
[0091]
需要说明的是,transform任务是非必需的,有的第一远程资源需要配置对应的transform任务,有的则不需要。本技术实施例中可以按构建配置的资源类型创建transform任务,transform任务是用于修改源码工程里资源加载类对应的资源加载方法。例如:配置第一远程资源的资源类型为动态链接库文件,资源名为libhello-jni.so,则transform任务负责将该资源文件加载类com.example.hellojni.hellojni.java的system.loadlibrary("hello-jni")方法调用替换为自定义的资源加载方法soloader.loadlibrary()。可以理解的是,上述只是示例性说明,不应理解为对本技术的限制。
[0092]
s1042、按调度时机运行上传任务,将所有第一资源压缩包上传至第一服务器;
[0093]
本技术实施例中可以通过文件传输协议(file transfer protocol,ftp)将资源压缩包上传至第一服务器,上传完成后获得对应的下载地址。之后还可以通过该下载地址自动校验资源压缩包是否上传成功。若资源压缩包上传失败、或者下载校验失败,则应用编译构建失败。
[0094]
s1043、按调度时机运行入库任务,将所有第一资源信息发送至第二服务器,并将所有第一资源信息存入第二服务器维护的数据库中。
[0095]
参见图2,为本技术实施例公开的一种动态链接库文件的生产方法的流程图。需要说明的是,图2中的afterevaluate、compiledebugsources、mergedebugnativelibs、stripdebugdebugsymbols、packagedebug是插入时机,这些插入时机均是已有的android gradle task;图2中的n表示任务执行失败,y表示任务执行成功。
[0096]
以动态链接库文件的生产为例进行说明,包括以下步骤:
[0097]
1)读取并检查构建参数。
[0098]
2)根据构建参数新建transform任务、提取任务、上传任务和入库任务,并配置各任务的调度时机。
[0099]
需要说明的是,本流程是以动态链接库为例,不同类型的远程加载模块需要抽离的资源文件不一样,提取任务的调度时机也不一样。例如:so文件则是插入原应用构建mergenativelibs任务后,stripdebugsymbols任务前,mergedebugnativelib中的debug指android编译flavor名称。
[0100]
3)运行transform任务:该任务非必需。不同远程加载资源类型,任务的实现不一样。本流程是以动态链接库为例,可以新建gradle transformtask,采用字节码技术,实现指定类调用的system.loadlibrary系统方法替换。
[0101]
4)运行提取任务;复制、压缩配置文件对应资源文件,删除apk或aar包文件待提取资源文件,输出到编译输出目录。
[0102]
5)运行上传任务:通过ftp协议,将输出目录里提取的资源列表文件上传到对应的cdn服务器对应目录,生成下载地址。最后校验下载地址,保证文件可以正常下载。
[0103]
6)入库任务:通过服务端入库接口,将构建号、应用id、应用版本号、资源文件类型、资源文件名称、资源文件下载地址、资源文件md5值等信息存入后台服务数据库。
[0104]
以上步骤出错,则构建流程终止,构建apk或aar输出失败。
[0105]
可见,本技术实施例中通过构建多个不同的任务,并在合适的调度时机运行对应的任务,实现了远程资源的自动提取、上传,以及资源信息的自动入库,提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。
[0106]
在一种可能的实现方式中,本技术实施例中提供的应用安装包的构建方法中步骤s1042具体包括:
[0107]
按调度时机运行上传任务,得到每个第二资源对应的第二资源压缩包,将所有第一资源压缩包和所有第二资源压缩包上传至第一服务器;其中,第一远程资源包括以下至少一种:资源文件、动态链接库文件,第二远程资源包括:插件代码包;
[0108]
需要说明的是,插件代码包是其他插件工程源码编译生成的文件,第二资源压缩是对第二资源进行压缩得到的。本技术实施例中可以按调度时机运行上传任务,对每个第二资源进行压缩,得到每个第二资源对应的第二资源压缩包。
[0109]
可以理解的是,插件代码包是不存在对应的提取任务的。本技术实施例中每个远程资源都单独压缩,统一时机上传多个资源压缩包。
[0110]
步骤s1043具体包括:
[0111]
按调度时机运行入库任务,将所有第一资源信息和所有第二远程资源对应的所有第二资源信息发送至第二服务器,并将所有第一资源信息和所有第二资源信息存入第二服务器维护的数据库中。
[0112]
可以理解的是,一个第二远程资源是对应一个第二资源信息。在一种可能的实现方式中,本技术实施例中可以按调度时机运行入库任务,构建每个第二远程资源对应的第二资源信息,然后将所有第一资源信息和所有第二资源信息发送至第二服务器。可以理解的是,也可以在其他时机构建第二资源信息,本技术对此不做限制,只要在入库时与第一资源信息一起入库即可。
[0113]
可见,本技术实施例中通过将插件代码包对应的压缩包与资源文件对应的压缩包、动态链接库文件对应的压缩包统一时机一起上传到第一服务器,并将资源信息统一时机一起存入第二服务器维护的数据库中,如此能自动绑定插件代码包与应用源码工程之间的关系,解决了目前插件工程和宿主工程单独编译,人工后台配置绑定两者关系而导致的效率低下的问题。
[0114]
在一种可能的实现方式中,本技术实施例中提供的应用安装包的构建方法还包括:
[0115]
s201、利用校验文件一致性算法对第一远程资源进行计算,得到第一校验参数;
[0116]
s202、将第一校验参数上传至第一服务器;其中,第一校验参数用于第一服务器校验第一服务器上是否存储有第一远程资源。
[0117]
同样的,本技术实施例中还可以利用校验文件一致性算法对第二远程资源进行计算,得到第二校验参数;将第二校验参数上传至第一服务器;其中,第二校验参数用于第一服务器校验第一服务器上是否存储有第二远程资源。
[0118]
需要说明的是,本技术实施例中是利用校验文件一致性算法对每一个第一远程资源进行计算,得到每一个第一远程资源对应的第一校验参数;是利用校验文件一致性算法对每一个第二远程资源进行计算,得到每一个第二远程资源对应的第二检验参数。而且,计算的是未压缩前的第一远程资源的检验参数,计算的是未压缩前的第二远程资源的检验参
数。
[0119]
在一种可能的实现方式中,本技术实施例中的校验文件一致性算法可以是信息-摘要算法5(message-digest algorithm 5,md5),校验参数可以是md5值。其中,md5用于确保信息传输完整一致,是计算机广泛使用的杂凑算法之一。
[0120]
需要说明的是,本技术实施例中第一服务器中会存储有以前上传的远程资源以及远程资源对应的校验参数,第一服务器可以通过比较上传的校验参数是否与历史存储的校验参数一致,来判断第一服务器校验第一服务器上是否存储有第一远程资源。若一致,则说明第一服务器已经存储有该第一远程资源,属于重复上传,需进行相应的删除。
[0121]
本技术实施例中校验参数还可以用于校验下载的远程资源是否与上传的远程资源一致。在一种可能的实现方式中,本技术实施例中当运行瘦身后的应用安装包时,还会根据构建号从第二服务器获取每一个远程资源对应的下载地址和校验参数,然后根据下载地址从第一服务器下载对应的远程资源,然后利用校验文件一致性算法对下载的远程资源进行计算,得到待校验参数,比较该远程资源对应的校验参数与该计算得到的待校验参数是否一致,若一致,则说明下载的远程资源与上传的远程资源一致,若不一致,则说明下载的远程资源与上传的远程资源不一致。需要说明的是,本技术实施例中若下载得到的是远程资源对应的压缩包,则需对该压缩包进行解压,得到远程资源,之后再利用校验文件一致性算法对该远程资源进行计算,得到待校验参数。
[0122]
可见,本技术实施例通过md5值唯一性参数保证文件上传到第一服务器仅有一份拷贝,多个应用共用资源的情况下可以节省存储空间。而且,还可以利用md5值校验下载的远程资源与上传的远程资源是否一致,保证运行的远程资源不是被恶意修改后的远程资源,提高应用安装包安装运行的安全性。
[0123]
参见图3,本技术实施例公开的一种应用安装包构建及运行的方法的流程图,该方法包括:
[0124]
步骤1:配置构建参数,生产构建号。
[0125]
在app源码工程里配置构建参数,应用开发时集成构建gradle plugin,通过gradle extension将构建配置传递给插件自定义任务;另采用构建号维护远程下载资源和应用安装包间映射关系。
[0126]
步骤2:生产远程资源。
[0127]
远程资源文件可以包括应用源码工程直接存放文件,如asset目录下的字体、多媒体,以及应用源码工程经过gradle编译任务生成的的动态链接库文件,以及其他插件工程源码编译生成的插件代码包文件等等等。需要按生产资源类型定义不同类型的gradle task,每个资源生产对应的一个gradle task,任务需要按文件类型生产资源文件、并复制、压缩、构建资源描述信息到编译输出目录,任意环节发生错误都直接结束编译,构建失败。
[0128]
步骤3:上传远程资源。
[0129]
ftp上传生产的所有远程资源,上传完成后获得下载地址,可以再次自动校验是否上传成功。也可以通过md5值文件唯一性参数保证文件上传到cdn源站服务器仅有一份拷贝,多个应用共用资源的情况下节省存储空间。若资源上传失败、或者下载校验失败,则应用编译构建失败。
[0130]
步骤4:发送远程资源对应的资源信息和构建应用版本信息,入库资源信息。
[0131]
将资源信息,如构建号、构建应用渠道信息、构建应用版本信息、文件下载地址、文件大小、文件名、文件类型、文件md5值等等存入远程资源管理服务器维护的数据库(database,db)中;为后续远程资源服务请求远程资源列表接口提供数据源。另入库接口服务还可以通过资源文件的md5信息自动生成资源版本信息,例如查询资源数据库同名资源记录,若未查询本地入库资源md5值,则版本号+1;方便后续资源问题排查、或者支持资源版本升级功能。
[0132]
参见图4为本技术实施例公开的一种资源信息入库后的展示界面示意图。通过点击构建信息管理按钮,可以查看动态资源构建信息,在该界面可以通过构建号、版本号、渠道号、应用类型、发布环境、构建信息、构建时间进行相应的搜索。
[0133]
参见图5为本技术实施例公开的另一种资源信息入库后的展示界面示意图。通过点击图4中的动态资源的按钮,查看6.2.401.200.3这一应用版本下的动态资源列表明细,在该界面可以通过资源名称、ab i、md5、自增版本i d、资源类型、是否抛出异常进行相应的搜索。
[0134]
步骤5:完成应用编译构建,输出瘦身后的应用安装包。
[0135]
需要说明的是,步骤1-5为应用安装包的构建阶段,具体过程还可参见图6,该阶段将原本预置在apk或aar里,需在apk安装阶段解压到本地的资源文件,通过apk或aar源码工程里自定义的构建配置和插件任务,通过jenki ns自动编译打包apk或aar时抽离生产出来,同时输出抽离资源的apk瘦身包和其对应远程资源压缩包、资源描述信息;然后通过将远程资源压缩包和资源描述信息上传动态资源管理平台,将抽离资源的apk瘦身包上传到应用管理平台;并配置好资源包和apk瘦身包的对应版本关系的过程。
[0136]
步骤6:请求资源信息。
[0137]
瘦身后的应用安装包安装运行后,向远程资源管理服务器请求资源信息如下载地址、资源文件名、md5、资源版本号等。
[0138]
步骤7:下载远程资源;
[0139]
根据服务器返回资源信息下载远程资源;若已下载则通过版本号、md5校验可以不再下载。
[0140]
步骤8:加载远程资源。
[0141]
具体可以按下载资源类型逐一加载并运行远程资源。
[0142]
需要说明的是,步骤6-8为应用安装包的运行阶段,具体过程还可参见图7,该阶段通过apk集成的动态资源加载管理sdk,根据当前资源包名称、运行cpu架构ab i环境、当前应用版本信息构建请求参数,通过向动态资源管理后台请求资源;根据请求结果和本地已加载情况下载校验对应动态资源,并完成资源注入的过程。
[0143]
可见,本技术实施例中提供了一种自动分离、上传、校验远程资源包和应用安装包,自动按应用安装包版本下发对应资源包的方法;通过改进远程资源生产、上传、部署环节,将上述环节自动嵌入应用自动化编译流程中,提高应用构建自动化程度,节约了手动资源包分离、上传、校验、配置远程资源服务器的操作时间;每个步骤做校验容错,减小人工错误风险;版本信息服务器入库可查,大大降低软件部署和后期维护成本。同时该系统可以支持多应用、多渠道、多版本、多类型的远程资源文件入库、下发和升级管理和维护。而且,创造性地使用应用构建号来维护远程下载资源和应用安装包间映射关系,更安全稳定。
[0144]
参见图8,本技术实施例公开的一种应用安装包的构建装置的结构示意图,该装置包括:
[0145]
生成模块801,用于编译应用源码工程时,生成构建号;
[0146]
获取模块802,用于从应用源码工程中获取构建参数;
[0147]
创建模块803,用于利用所述构建参数创建对应的多个任务,并配置任务的调度时机;
[0148]
运行模块804,用于按调度时机运行对应的任务,从应用源码工程中提取出第一远程资源,将第一远程资源上传至第一服务器,将第一远程资源对应的第一资源信息发送至第二服务器;其中,第一资源信息包括:构建号、第一远程资源的下载地址;
[0149]
输出模块805,用于当应用源码工程编译完成时,输出瘦身后的应用安装包;瘦身后的应用安装包携带构建号。
[0150]
可见,本技术实施例中通过修改原有的应用安装包构建流程,插入远程资源的提取、上传步骤以及资源信息的发送步骤,使得能自动完成远程资源文件的提取、上传,如此提高了远程资源的提取、上传效率;而且构建号能够唯一标识本次构建,通过发送包括构建号的资源信息以及在瘦身后的应用安装包中携带构建号,实现通过构建号自动绑定本次构建的瘦身后的应用安装包与远程资源的映射关系,如此提高了映射关系的绑定效率;从而提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。此外,若后续应用程序需再次更新,只需对应修改应用源码工程中的构建参数,就可上传对应的远程资源、绑定对应的映射关系,对应的输出瘦身后的应用安装包,进一步提高了获得瘦身后的应用安装包的效率。
[0151]
在一种可能的实现方式中,本技术实施例提供的应用安装包的构建装置中多个任务包括:多个提取任务、一个上传任务和一个入库任务,第一远程资源为多个,第一远程资源与提取任务一一对应;
[0152]
运行模块804包括:
[0153]
提取单元,用于按调度时机运行每个第一远程资源对应的提取任务,从应用源码工程中提取得到第一远程资源对应的第一资源压缩包,构建第一远程资源对应的第一资源信息;
[0154]
上传单元,用于按调度时机运行上传任务,将所有第一资源压缩包上传至第一服务器;
[0155]
入库单元,用于按调度时机运行入库任务,将所有第一资源信息发送至第二服务器,并将所有第一资源信息存入第二服务器维护的数据库中。
[0156]
在一种可能的实现方式中,本技术实施例提供的应用安装包的构建装置中上传单元具体用于:按调度时机运行上传任务,得到每个第二远程资源对应的第二资源压缩包,将所有第一资源压缩包和所有第二资源压缩包上传至第一服务器;其中,第一远程资源包括以下至少一种:资源文件、动态链接库文件,第二远程资源包括:插件代码包;
[0157]
入库单元具体用于:按调度时机运行入库任务,将所有第一资源信息和所有第二远程资源对应的所有第二资源信息发送至第二服务器,并将所有第一资源信息和所有第二资源信息存入第二服务器维护的数据库中。
[0158]
在一种可能的实现方式中,本技术实施例提供的应用安装包的构建装置中多个任
务还包括:至少一个变换transform任务,运行模块还包括:
[0159]
修改单元,用于按调度时机运行第一远程资源对应的transform任务,对第一远程资源对应的资源加载方法进行修改。
[0160]
在一种可能的实现方式中,本技术实施例提供的应用安装包的构建装置还包括:
[0161]
计算单元,用于利用校验文件一致性算法对第一远程资源进行计算,得到第一校验参数;
[0162]
上传单元,还用于将第一校验参数上传至第一服务器;其中,第一校验参数用于第一服务器校验第一服务器上是否存储有第一远程资源。
[0163]
在一种可能的实现方式中,本技术实施例提供的应用安装包的构建装置还包括:
[0164]
获取模块,用于当运行瘦身后的应用安装包时,根据构建号从第二服务器获取对应的第一资源信息;第一资源信息还包括:远程资源下载时机;
[0165]
下载模块,用于根据第一资源信息中的下载地址和远程资源下载时机从第一服务器下载对应的第一远程资源。
[0166]
本技术实施例还提供了一种应用安装包的构建系统,该系统包括:应用构建服务器、内容分发网络cdn源站服务器、远程资源管理服务器;
[0167]
应用构建服务器,用于编译应用源码工程时,生成构建号;
[0168]
应用构建服务器,还用于从应用源码工程中获取构建参数;
[0169]
应用构建服务器,还用于利用构建参数创建对应的多个任务,并配置任务的调度时机;
[0170]
应用构建服务器,还用于按调度时机运行对应的所述任务,从应用源码工程中提取出第一远程资源,将第一远程资源上传至cdn源站服务器,将第一远程资源对应的第一资源信息发送至远程资源管理服务器;其中,第一资源信息包括:构建号、第一远程资源的下载地址;
[0171]
应用构建服务器,还用于当应用源码工程编译完成时,输出瘦身后的应用安装包;瘦身后的应用安装包携带构建号。
[0172]
可以理解的是,应用构建服务器可以执行上述应用安装包的构建方法的任一种实现方法,具体不再赘述。
[0173]
进一步地,本技术实施例还提供了一种应用安装包的构建装置,包括:
[0174]
存储器,用于存储指令;
[0175]
处理器,用于执行存储器中的指令以执行上述应用安装包的构建方法的任一种实现方法。
[0176]
进一步地,本技术实施例还提供了一种计算机可读存储介质,计算机可读存储介质中存储有指令,当指令在终端设备上运行时,使得终端设备执行上述应用安装包的构建方法的任一种实现方法。
[0177]
进一步地,本技术实施例还提供了一种计算机程序产品,计算机程序产品在终端设备上运行时,使得终端设备执行上述应用安装包的构建方法的任一种实现方法。
[0178]
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式
体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如媒体网关等网络通信设备,等等)执行本技术各个实施例或者实施例的某些部分所述的方法。
[0179]
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0180]
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0181]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
[0182]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术特征:
1.一种应用安装包的构建方法,其特征在于,所述方法包括:编译应用源码工程时,生成构建号;从所述应用源码工程中获取构建参数;利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的第一资源信息发送至第二服务器;其中,所述第一资源信息包括:所述构建号、所述第一远程资源的下载地址;当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。2.根据权利要求1所述的方法,其特征在于,所述多个任务包括:多个提取任务、一个上传任务和一个入库任务,所述第一远程资源为多个,所述第一远程资源与所述提取任务一一对应;所述按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的资源信息发送至第二服务器,包括:按所述调度时机运行每个所述第一远程资源对应的提取任务,从所述应用源码工程中提取得到所述第一远程资源对应的第一资源压缩包,构建第一远程资源对应的第一资源信息;按所述调度时机运行所述上传任务,将所有所述第一资源压缩包上传至第一服务器;按所述调度时机运行所述入库任务,将所有所述第一资源信息发送至第二服务器,并将所有所述第一资源信息存入所述第二服务器维护的数据库中。3.根据权利要求2所述的方法,其特征在于,所述按所述调度时机运行所述上传任务,将所有所述第一资源压缩包上传至第一服务器,包括:按所述调度时机运行所述上传任务,得到每个第二远程资源对应的第二资源压缩包,将所有所述第一资源压缩包和所有所述第二资源压缩包上传至第一服务器;其中,所述第一远程资源包括以下至少一种:资源文件、动态链接库文件,所述第二远程资源包括:插件代码包;所述按所述调度时机运行所述入库任务,将所有所述第一资源信息发送至第二服务器,并将所有所述第一资源信息存入所述第二服务器维护的数据库中,包括:按所述调度时机运行所述入库任务,将所有所述第一资源信息和所有所述第二远程资源对应的所有第二资源信息发送至第二服务器,并将所有所述第一资源信息和所有所述第二资源信息存入所述第二服务器维护的数据库中。4.根据权利要求2所述的方法,其特征在于,所述多个任务还包括:至少一个变换transform任务,所述按所述调度时机运行每个所述第一远程资源对应的提取任务之前,所述方法还包括:按所述调度时机运行所述第一远程资源对应的transform任务,对所述第一远程资源对应的资源加载方法进行修改。5.根据权利要求1所述的方法,其特征在于,所述方法还包括:利用校验文件一致性算法对所述第一远程资源进行计算,得到第一校验参数;
将所述第一校验参数上传至所述第一服务器;其中,所述第一校验参数用于所述第一服务器校验所述第一服务器上是否存储有所述第一远程资源。6.根据权利要求1所述的方法,其特征在于,所述第一资源信息还包括:远程资源下载时机,所述方法还包括:当运行所述瘦身后的应用安装包时,根据所述构建号从所述第二服务器获取对应的第一资源信息;根据所述第一资源信息中的下载地址和远程资源下载时机从所述第一服务器下载对应的第一远程资源。7.一种应用安装包的构建装置,其特征在于,所述装置包括:生成模块,用于编译应用源码工程时,生成构建号;获取模块,用于从所述应用源码工程中获取构建参数;创建模块,用于利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;运行模块,用于按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至第一服务器,将所述第一远程资源对应的第一资源信息发送至第二服务器;其中,所述第一资源信息包括:所述构建号、所述第一远程资源的下载地址;输出模块,用于当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。8.一种应用安装包的构建系统,其特征在于,所述系统包括:应用构建服务器、内容分发网络cdn源站服务器、远程资源管理服务器;所述应用构建服务器,用于编译应用源码工程时,生成构建号;所述应用构建服务器,还用于从所述应用源码工程中获取构建参数;所述应用构建服务器,还用于利用所述构建参数创建对应的多个任务,并配置所述任务的调度时机;所述应用构建服务器,还用于按所述调度时机运行对应的所述任务,从所述应用源码工程中提取出第一远程资源,将所述第一远程资源上传至所述cdn源站服务器,将所述第一远程资源对应的第一资源信息发送至所述远程资源管理服务器;其中,所述第一资源信息包括:所述构建号、所述第一远程资源的下载地址;所述应用构建服务器,还用于当所述应用源码工程编译完成时,输出瘦身后的应用安装包;所述瘦身后的应用安装包携带所述构建号。9.一种应用安装包的构建装置,其特征在于,包括:存储器,用于存储指令;处理器,用于执行所述存储器中的所述指令以执行权利要求1至6任意一项所述的方法。10.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行权利要求1至6任意一项所述的方法。

技术总结
本申请实施例公开了一种应用安装包的构建方法、装置、系统及存储介质。其中,该方法包括:编译应用源码工程时,生成构建号;从应用源码工程中获取构建参数;利用构建参数创建对应的多个任务,并配置任务的调度时机;按调度时机运行对应的任务,从应用源码工程中提取出第一远程资源,将第一远程资源上传至第一服务器,将第一远程资源对应的第一资源信息发送至第二服务器;当应用源码工程编译完成时,输出瘦身后的应用安装包。可见,本申请实施例中通过修改原有的应用安装包构建流程,提高了获得瘦身后的应用安装包的效率,减少了人为操作风险。险。险。


技术研发人员:赵文娴 刘广宾 何桂 王书浩 陈碧锋 蔡玮 李尧彦
受保护的技术使用者:湖南快乐阳光互动娱乐传媒有限公司
技术研发日:2023.07.13
技术公布日:2023/10/11
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐