一种资源包构建方法及装置制造方法及图纸

技术编号:37363537 阅读:17 留言:0更新日期:2023-04-27 07:11
本公开实施例提供了一种资源包构建方法及装置,涉及软件开发技术领域。该方法包括:在构建目标应用程序的资源包时,获取目标应用程序的资源补丁;所述资源补丁包括至少一个覆盖资源的编译文件;解析资源补丁获取至少一个覆盖资源的编译文件;将各个覆盖资源的编译文件对应的链接参数添加到工程编译参数中;合并各个工程编译参数对应的编译文件,生成编译文件集合;其中,覆盖资源的编译文件的优先级高于所述目标应用程序的原始资源的编译文件的优先级;对编译文件集合中的编译文件进行打包,生成目标应用程序的资源包。本公开实施例用于解决现有的编译期动态覆盖资源方案无法实现多分辨率或多语言的动态覆盖资源的问题。多分辨率或多语言的动态覆盖资源的问题。多分辨率或多语言的动态覆盖资源的问题。

【技术实现步骤摘要】
一种资源包构建方法及装置


[0001]本公开涉及软件开发
,尤其涉及一种资源包构建方法及装置。

技术介绍

[0002]目前的资源包自动构建流程中常常需要在编译期动态覆盖资源。在编译期动态覆盖资源是指:通过资源下发服务器向编译设备下发一些资源,编译设备在编译过程中通过服务器下发的资源替代原始资源集中的资源,从而保证资源能够被统一管理,无会被开发者自行修改。例如:通过资源下发服务器向编译设备下发图标,编译设备在编译流程中通过资源下发服务器下发的图标替代原始资源集中的相应图标,以实现对软件中的该图标的统一管理。
[0003]目前,使用较为广泛的一种编译期动态覆盖资源方案为:通过安卓Gradle插件(Android Gradle Plugin)自带的resValue方法实现编译期动态覆盖资源。具体为:在编译脚本中调用resValue命令将指定资源插入默认的资源集中,在后续编译流程通过该默认资源集中的资源替代原始资源集中的相应的资源,从而实现编译期动态覆盖资源。然而,由于通过resValue方法实现编译期动态覆盖资源时只能将资源插入默认的资源集中,且在一个资源集中同一资源只能存在一个可生效的资源文件,因此对于同一图像资源或文本资源,该默认资源集中只会存在一个可生效的图像资源或文本资源,而无法同时存在多个不同分辨率的可生效图像资源或多个不同语言的可生效文本资源,因此通过resValue方法实现编译期动态覆盖资源时,同一图像资源只能包括一种分辨率的可生效图像,同一文本资源也只能包括一种语言的可生效文本,而无法实现多分辨率或多语言的动态覆盖资源。

技术实现思路

[0004]有鉴于此,本公开提供了一种资源包构建方法及装置,用于解决现有的编译期动态覆盖资源方案无法实现多分辨率或多语言的动态覆盖资源的问题。
[0005]为了实现上述目的,本公开实施例提供技术方案如下:
[0006]第一方面,本公开的实施例提供了一种资源包构建方法,应用于编译设备,所述方法包括:
[0007]在构建目标应用程序的资源包时,获取所述目标应用程序的资源补丁;所述资源补丁包括至少一个覆盖资源的编译文件;
[0008]解析所述资源补丁获取所述至少一个覆盖资源的编译文件;
[0009]将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中;
[0010]合并各个工程编译参数对应的编译文件,生成编译文件集合;其中,所述覆盖资源的编译文件的优先级高于所述目标应用程序的原始资源的编译文件的优先级;
[0011]对所述编译文件集合中的编译文件进行打包,生成所述目标应用程序的资源包。
[0012]作为本公开实施例一种可选的实施方式,所述获取所述目标应用程序的资源补丁,包括:
[0013]向资源下发服务器发送第一请求信息;
[0014]接收所述资源下发服务器发送的索引文件;
[0015]解析所述索引文件获取第一文件名称,所述第一文件名称为所述资源下发服务器存储的所述目标应用程序的第一资源补丁的文件名称;
[0016]获取第二资源补丁的第二文件名称;所述第二文件名称为本地缓存的所述目标应用程序的第二资源补丁的文件名称;
[0017]若所述第一文件名称与所述第二文件名称不同,则从所述资源下发服务器下载所述第一资源补丁,并将所述第一资源补丁作为所述目标应用程序的资源补丁;
[0018]若所述第一文件名称与所述第二文件名称相同,则从本地缓存中读取所述第二资源补丁,并将所述第二资源补丁作为所述目标应用程序的资源补丁。
[0019]作为本公开实施例一种可选的实施方式,所述下载所述第一资源补丁,包括:
[0020]根据所述第一文件名称生成所述第一资源补丁的下载地址;
[0021]根据所述下载地址向所述资源下发服务器发送第二请求信息;
[0022]接收所述资源下发服务器发送的所述第一资源补丁。
[0023]作为本公开实施例一种可选的实施方式,在下载所述第一资源补丁之后,所述方法还包括:
[0024]将本地缓存的所述目标应用程序的资源补丁由所述第二资源补丁更新为所述第一资源补丁。
[0025]作为本公开实施例一种可选的实施方式,所述第一文件名称中包括第一校验码;在将所述第一资源补丁作为所述目标应用程序的资源补丁,并解析所述资源补丁获取所述至少一个覆盖资源的编译文件之后,所述方法还包括:
[0026]根据所述至少一个覆盖资源的编译文件计算第二校验码;
[0027]判断所述第一校验码与所述第二校验码是否相同;
[0028]在所述第一校验码与所述第二校验码不同的情况下,输出用于提示资源补丁获取异常的提示信息。
[0029]作为本公开实施例一种可选的实施方式,所述将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中,包括:
[0030]将各个覆盖资源的编译文件对应的链接参数添加到所述工程编译参数的尾部,以使所述覆盖资源的编译文件的优先级高于所述目标应用程序的原始资源的编译文件的优先级。
[0031]作为本公开实施例一种可选的实施方式,在通过增量编译的方式构建所述目标应用程序的资源包的情况下,所述方法还包括:
[0032]在将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中之前,对各个所述覆盖资源的编译文件进行重命名。
[0033]第二方面,本公开的实施例提供了一种资源包构建方法,应用于资源下发服务器,所述方法包括:
[0034]接收资源打包服务器发送的目标应用程序的资源补丁;
[0035]保存所述资源补丁并将索引文件中存储的索引值更新为所述资源补丁的文件名称;
[0036]接收所述编译设备发送的第一请求信息;
[0037]响应于所述第一请求信息,向所述编译设备发送所述索引文件;
[0038]接收所述编译设备发送的第二请求信息;
[0039]响应于所述第二请求信息,向所述编译设备发送所述资源补丁。
[0040]第三方面,本公开的实施例提供了一种资源包构建方法,应用于资源打包服务器,所述方法包括:
[0041]以预设时长为周期,周期性获取目标应用程序的各个覆盖资源;
[0042]对各个所述覆盖资源进行编译,获取各个所述覆盖资源的编译文件;
[0043]根据各个所述覆盖资源的编译文件确定所述目标应用程序的覆盖资源是否具有更新;
[0044]若确定所述目标应用程序的覆盖资源具有更新,则根据各个所述覆盖资源的编译文件生成所述目标应用程序的资源补丁,并向资源下发服务器发送所述目标应用程序的资源补丁。
[0045]作为本公开实施例一种可选的实施方式,所述根据各个所述覆盖资源的编译文件确定所述目标应用程序的覆盖资源是否具有更新,包括:
[0046]根据各个所述覆盖资源的编译文件计算得到校验码;
[0047]判断所述校验码是否与上一周期计算得到的校验码相同;本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种资源包构建方法,其特征在于,应用于编译设备,所述方法包括:在构建目标应用程序的资源包时,获取所述目标应用程序的资源补丁;所述资源补丁包括至少一个覆盖资源的编译文件;解析所述资源补丁获取所述至少一个覆盖资源的编译文件;将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中;合并各个工程编译参数对应的编译文件,生成编译文件集合;其中,所述覆盖资源的编译文件的优先级高于所述目标应用程序的原始资源的编译文件的优先级;对所述编译文件集合中的编译文件进行打包,生成所述目标应用程序的资源包。2.根据权利要求1所述的方法,其特征在于,所述获取所述目标应用程序的资源补丁,包括:向资源下发服务器发送第一请求信息;接收所述资源下发服务器发送的索引文件;解析所述索引文件获取第一文件名称,所述第一文件名称为所述资源下发服务器存储的所述目标应用程序的第一资源补丁的文件名称;获取第二资源补丁的第二文件名称;所述第二文件名称为本地缓存的所述目标应用程序的第二资源补丁的文件名称;若所述第一文件名称与所述第二文件名称不同,则从所述资源下发服务器下载所述第一资源补丁,并将所述第一资源补丁作为所述目标应用程序的资源补丁;若所述第一文件名称与所述第二文件名称相同,则从本地缓存中读取所述第二资源补丁,并将所述第二资源补丁作为所述目标应用程序的资源补丁。3.根据权利要求2所述的方法,其特征在于,所述下载所述第一资源补丁,包括:根据所述第一文件名称生成所述第一资源补丁的下载地址;根据所述下载地址向所述资源下发服务器发送第二请求信息;接收所述资源下发服务器发送的所述第一资源补丁。4.根据权利要求2所述的方法,其特征在于,在下载所述第一资源补丁之后,所述方法还包括:将本地缓存的所述目标应用程序的资源补丁由所述第二资源补丁更新为所述第一资源补丁。5.根据权利要求2所述的方法,其特征在于,所述第一文件名称中包括第一校验码;在将所述第一资源补丁作为所述目标应用程序的资源补丁,并解析所述资源补丁获取所述至少一个覆盖资源的编译文件之后,所述方法还包括:根据所述至少一个覆盖资源的编译文件计算第二校验码;判断所述第一校验码与所述第二校验码是否相同;在所述第一校验码与所述第二校验码不同的情况下,输出用于提示资源补丁获取异常的提示信息。6.根据权利要求1

5任一项所述的方法,其特征在于,所述将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中,包括:将各个所述覆盖资源的编译文件对应的链接参数添加到所述工程编译参数的尾部,以使所述覆盖资源的编译文件的优先级高于所述目标应用程序的原始资源的编译文件的优
先级。7.根据权利要求1

5任一项所述的方法,其特征在于,在通过增量编译的方式构建所述目标应用程序的资源包的情况下,所述方法还包括:在将各个所述覆盖资源的编译文件对应的链接参数添加到工程编译参数中之前,对各个所述覆盖资源的编译文件进行重命名。8.一种软件编译方法,其特征在于,应用于资源下发服务器,所述方法包括:接收资源打包服务器发送的目标应用程序的资源补丁;保存所述资源补丁并将索引文件中存储的索引值更新为所述资源补丁的文件名称;接收所述编译设备发送的第一请求信息;响应于所述第一请求信息,向所述编译设备发送所述索引文件;接收所述编译设备发送的第二请求信息;响应于所述第二请求信息,向所述编译设备发送所述资源补丁。9.一种软件编译方法,其特征在于,应用于资源打包服务器...

【专利技术属性】
技术研发人员:焦鹏文
申请(专利权)人:北京字节跳动网络技术有限公司
类型:发明
国别省市:

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

1