本公开是关于一种应用打包方法、应用打包装置及存储介质。应用打包方法,包括:确定APK签名块;在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;生成包含所述信息的APK文件。通过本公开实现在不改变APK文件结构的基础上,在APK文件中加入信息,进而可以避免因APK文件结构改变导致的签名验证失败。
Application packaging method, application packaging device and storage medium
【技术实现步骤摘要】
应用打包方法、应用打包装置及存储介质
本公开涉及应用开发
,尤其涉及应用打包方法、应用打包装置及存储介质。
技术介绍
应用(APP)在发布使用之前,需要对Android(安卓系统)应用程序包(Androidapplicationpackage,APK)进行签名验证。签名验证过程发生在应用打包为APK包并安装的过程中,应用打包为APK包过程中需要加入一些辅助信息,例如渠道信息。相关技术中将辅助信息加入到APK文件时,将辅助信息加入到APK文件的目录下,改变了APK文件结构。然而,Android的签名方案中引入了V3签名方案,在V3签名验证过程中,由于加入辅助信息的APK文件结构改变,会导致签名验证失败,进而导致APK包安装失败。
技术实现思路
为克服相关技术中存在的问题,本公开提供一种应用打包方法、应用打包装置及存储介质。根据本公开实施例的第一方面,提供一种应用打包方法,,包括:确定APK签名块;在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;生成包含所述信息的APK文件。一种实施方式中,生成包含所述信息的APK文件,包括:确定所述APK签名块中的已有标识值;基于所述已有标识值和包含有所述信息的所述标识值,生成新APK签名块;基于所述新APK签名块生成包含所述信息的APK文件。又一种实施方式中,本公开实施例涉及的应用打包方法还包括:基于所述新APK签名块,修改所述EOCD块的中央目录偏移量。又一种实施方式中,所述信息包括渠道信息、编译时间戳信息、版本信息等中的一项或多项。又一种实施方式中,所述确定APK签名块,包括:根据多个签名算法确定APK数据摘要;将所述APK数据摘要,与数字证书链以及额外属性,组装形成MF文件;确定所述MF文件的数字签名,形成SF文件;将所述MF文件、所述SF文件,与开发者公钥组装形成V3签名块。根据本公开实施例的第二方面,提供一种应用打包装置,包括:确定单元,用于确定APK签名块;添加单元,用于在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;生成单元,用于生成包含所述信息的APK文件。一种实施方式中,所述生成单元采用如下方式生成包含所述信息的APK文件:确定所述APK签名块中的已有标识值;基于所述已有标识值和包含有所述信息的所述标识值,生成新APK签名块;基于所述新APK签名块生成包含所述信息的APK文件。另一种实施方式中,所述生成单元还用于:基于所述新APK签名块,修改所述EOCD块的中央目录偏移量。又一种实施方式中,所述信息包括渠道信息、编译时间戳信息、版本信息等中的一项或多项。又一种实施方式中,所述确定单元采用如下方式确定APK签名块:根据多个签名算法确定APK数据摘要;将所述APK数据摘要,与数字证书链以及额外属性,组装形成MF文件;确定所述MF文件的数字签名,形成SF文件;将所述MF文件、所述SF文件,与开发者公钥组装形成V3签名块。根据本公开实施例的第三方面,提供一种应用打包装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:执行第一方面或者第一方面任意一种实施方式中所述的应用打包方法。根据本公开实施例第四方面,提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行第一方面或者第一方面任意一种实施方式中所述的应用打包方法。本公开的实施例提供的技术方案可以包括以下有益效果:在APK签名块中添加包含有待加入信息的标识值,生成包含加入信息的标识值,进而实现在不改变APK文件结构的基础上,在APK文件中加入信息,进而可以避免因APK文件结构改变导致的签名验证失败。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1是根据一示例性实施例示出的一种APK文件安装方法流程示意图。图2是根据一示例性实施例示出的APK签名块的结构示意图。图3是根据一示例性实施例示出的一种应用打包方法的流程图。图4是根据一示例性实施例示出的一种V3签名块的确定过程示意图。图5是根据一示例性实施例示出的V3签名块的结构示意图。图6是根据一示例性实施例示出的一种应用打包生成APK文件的方法流程图。图7是根据一示例性实施例示出的一种添加渠道信息后的APK示意图。图8是根据一示例性实施例示出的V3签名校验流程图。图9是根据一示例性实施例示出的一种应用打包装置的框图。图10是根据一示例性实施例示出的一种用于应用打包装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。本公开实施例提供的应用打包方法可以应用于APK文件安装场景中。APK文件安装主要有如下四种方式:统应用安装:开机时完成,没有安装界面。网络下载的应用安装:通过市场应用完成,没有安装界面。ADB工具安装:没有安装界面。第三方应用安装:通过packageinstall.apk应用安装,有安装界面。但是其实无论通过哪种方式安装APK文件都要通过PackageManagerService来完成安装的主要工作。在进行APK文件安装时,需要进行签名验证,例如,在Android9.0及更高版本中对于APKV3签名块的验证。图1所示为APK文件安装方法流程示意图。参阅图1所示,在打开APK文件后,判断APK文件中是否有V3签名块。若APK文件中有V3签名块,则采用V3签名块验证方式进行签名验证。若采用V3签名块验证方式验证通过则安装APK文件,若采用V3签名块验证方式验证失败,则取消安装APK文件。若APK文件中无V3签名块,则判断是否APK文件中有V2签名块。若APK文件中有V2签名块,则采用V2签名块验证方式进行签名验证。若采用V2签名块验证方式验证通过则安装APK文件,若采用V2签名块验证方式验证失败,则取消安装APK文件。若APK文件中无V2签名块,则采用V1签名块验证方式进行签名验证。若采用V1签名块验证方式验证通过则安装APK文件,若采用V1签名块验证方式验证失败,则取消安装APK文件。在引入APKV3签名验证方案后,Android9.0及更高版本中,可以根据APK签名方案采用图1所示的方式进行签名验证。参阅图1所示,按照V3→V2→V1依次尝试验证A本文档来自技高网...
【技术保护点】
1.一种应用打包方法,其特征在于,包括:/n确定APK签名块;/n在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;/n生成包含所述信息的APK文件。/n
【技术特征摘要】
1.一种应用打包方法,其特征在于,包括:
确定APK签名块;
在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;
生成包含所述信息的APK文件。
2.根据权利要求1所述的应用打包方法,其特征在于,生成包含所述信息的APK文件,包括:
确定所述APK签名块中的已有标识值;
基于所述已有标识值和包含有所述信息的所述标识值,生成新APK签名块;
基于所述新APK签名块生成包含所述信息的APK文件。
3.根据权利要求2所述的应用打包方法,其特征在于,所述应用打包方法还包括:
基于所述新APK签名块,修改EOCD块的中央目录偏移量。
4.根据权利要求1至3中任意一项所述的应用打包方法,其特征在于,所述信息包括渠道信息、编译时间戳信息、版本信息等中的一项或多项。
5.根据权利要求1所述的应用打包方法,其特征在于,所述确定APK签名块,包括:
根据多个签名算法确定APK数据摘要;
将所述APK数据摘要,与数字证书链以及额外属性,组装形成MF文件;
确定所述MF文件的数字签名,形成SF文件;
将所述MF文件、所述SF文件,与开发者公钥组装形成V3签名块。
6.一种应用打包装置,其特征在于,包括:
确定单元,用于确定APK签名块;
添加单元,用于在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;
生成单元,用于生成包含所...
【专利技术属性】
技术研发人员:饶福贵,
申请(专利权)人:北京小米移动软件有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。