应用打包方法、应用打包装置及存储介质与流程

专利2022-06-30  61


本公开涉及应用开发技术领域,尤其涉及应用打包方法、应用打包装置及存储介质。



背景技术:

应用(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依次尝试验证apk。而一些场景中,会忽略v3签名验证,直接尝试v2签名验证,最后才进行v1签名验证。

apkv3签名验证过程发生在应用打包为apk包并安装的过程中,应用打包为apk包过程中需要加入一些辅助信息,例如渠道信息。相关技术中将辅助信息加入到apk文件时,将辅助信息加入到apk文件的目录下,改变了apk文件结构。然而,android的签名方案中引入了v3签名方案,在v3签名验证过程中,由于加入辅助信息的apk文件结构改变,会导致签名验证失败,进而导致apk包安装失败。并且apkv3签名验证方案中,需要拿到签名密钥进行v3签名,如果没有签名密钥很难再次签名。

本公开实施例中,提供一种apk文件打包方法,以在没有原签名密钥情况下,对apk文件采用v3签名方式进行签名,并对签名后的apk文件进行渠道信息等辅助信息的写入。实现在不改变原apk的签名验证方式的基础上,能够在android9以上的终端上正常校验并安装apk文件。

图2是根据一示例实施例示出的apk签名块的结构示意图。参阅图2所示,apk签名块中包括多个标识值(id-value)。每个id-value中包括有4字节的id和对应的数据。v3签名块可以理解为是字节流。例如图2中,首先是8字节的签名块大小,此大小不包含该字段本身的8字节。其次是多个id-value形成的序列,每个id-value包含一个4字节的id和对应的数据;然后又是一个8字节的签名块大小,与开始的8字节是相等的。最后是16字节的签名块模数。其中,id为0xf05368c0对应的value就是v3签名块数据。

参阅图2可知,apk签名块中包括有多个id-value,故若新添加一个id-value,并不会影响apk签名块的结构。有鉴于此,本公开实施例中,在原有apk签名块中添加包含有待添加信息的id-value,然后重新生成新的apk签名块。基于新的apk签名块生成apk文件,实现在不改变apk文件结构的基础上,在apk文件中加入信息,进而可以避免因apk文件结构改变导致的签名验证失败。

图3是根据一示例性实施例示出的一种应用打包方法的流程图,如图3所示,应用打包方法用于终端中,所述终端的操作系统为安卓系统。参阅图3所示,包括以下步骤。

在步骤s11中,确定apk签名块。

本公开实施例中,可以找到apk文件的eocd块,然后根据eocd块中央目录偏移量找到apk签名块。eocd块可以理解为是apk文件中真实数据存储区域。签名块可以理解为是apk文件中的备注区域。

在步骤s12中,在apk签名块中添加id-value。

本公开实施例中,在apk签名块中额外添加一个新id-value,该额外添加的新id-value中包括待加入至apk文件中的信息。例如,该待加入至apk文件中的信息可以是渠道信息等辅助信息。本公开实施例中待加入至apk文件中的信息也可以是诸如编译时间戳信息、版本信息等中的一项或多项。

在步骤s13中,生成包含加入信息的apk文件。

在apk签名块中添加包含有待加入信息的标识值,生成包含加入信息的标识值,进而实现在不改变apk文件结构的基础上,在apk文件中加入信息,进而可以避免因apk文件结构改变导致的签名验证失败。

本公开实施例以下将结合实际应用对上述实施例涉及的应用打包生成apk文件的过程进行说明。

本公开实施例中可以应用于对apk文件采用v3签名方式进行签名,并对签名后的apk文件进行渠道信息等辅助信息的添加的场景,以实现在不改变原apk的签名验证方式的基础上,能够在android9以上的终端上正常校验并安装apk文件。

本公开实施例中确定的apk签名块可以是v3签名块。以下将对v3签名块的确定过程进行说明。

图4是根据一示例性实施例示出的一种v3签名块的确定过程示意图。首先,根据多个签名算法,计算出整个apk的数据摘要,组成apk数据摘要集,图4中第一列中第一行。然后,将apk数据摘要、数字证书和额外属性组装起来,形成类似于v1签名的mf文件,例如图4中第二列第一行。其次,使用生成mf文件相同的私钥,不同的签名算法,计算出似于v1签名的mf文件数字签名,形成类似于v1签名的sf文件,例如图4中第二列第二行,然后,把第二列的类似mf文件、类似sf文件和开发者公钥一起组装成v3签名块,例如图4中第三列第一行。其中,v3签名块通过单个keystore签名后形成的。android中允许使用多个keystore对apk文件进行签名,故将多个keystore签名后的签名块组装起来,即可形成完整的v3签名块。

综上,本公开实施例中确定的v3签名块主要由三部分组成,分别是图4中第二列的三个数据块:类似mf文件、类似sf文件和开发者公钥,其结构如图5所示。

本公开实施例中确定了apk签名块以后,可以在apk签名块中新添加一个id-value,该新添加的id-value中包括需要加入apk文件中的信息。例如渠道信息等。其中,渠道信息可以是渠道号。新添加了包含待加入信息的id-value的apk签名块结构如图2所示。

本公开实施例中在新添加包含待加入信息的id-value后,可以确定apk签名块中的已有id-value。然后将apk签名块中所有的id-value,及已有id-value和包含有待加入信息的id-value,生成新apk签名块。基于新apk签名块生成包含加入信息的apk文件。

其中,本公开实施例中可以获取apk的eocd块,基于eocd块和新apk签名块,生成包含加入信息的apk文件。

进一步的,由于本公开实施例中apk签名块中新添加了id-value,进而会导致新apk签名块的字节数变化,即eocd块的中央目录偏移量发生变化。本公开实施例中为使字节码对齐,可以利用新apk签名块修改eocd块的中央目录偏移量,以便基于修改后的中央目录偏移量确定新apk签名块。

图6是根据一示例性实施例示出的一种应用打包生成apk文件的方法流程图。参阅图6所示,包括:找到apk的eocd块。找到apk签名块。获取已有的id-valuepair。

添加包含渠道信息的id-value。基于所有的id-value生成新的签名块。修改eocd的中央目录的偏移量(其中,修改eocd的中央目录偏移量,不会导致数据摘要校验失败)。用新的签名块替代旧的签名块,生成带有渠道信息的apk。

本公开实施例中加入到apk文件中的渠道信息可以是一固定id值,例如id为0x4d494859。

本公开实施例中,通过16进制编辑器,可以查看到添加渠道信息后的apk(小端模式),如图7所示。图7中,“6c656f6e”为渠道信息leon。向前4个字节“ff551188”为新添加的id,再向前8个字节“0800000000000000”为id-value的长度,正好是8。

本公开实施例上述提供的应用打包方法生成的apk文件,支持9.0之上新增的v3签名的检验。

本公开实施例中,针对添加了信息的apk签名块,可以采用如图8所示的方式进行签名校验。参阅图8所示,进行apk签名校验时,可以首先找到eocd块,并根据eocd块中央目录偏移量找到签名块,校验两个签名块大小字段是否相同。本公开实施例中若找不到v3签名块,则可以采用诸如图1所示的方式,采用降级签名校验的方式进行校验,进行v2签名校验或者v1签名校验。本公开实施例中找到v3签名块后,可以从v3签名块中找到id为0xf05368c0的签名块,进而找到v3签名块,并忽略其他id-valuepair的签名块。在进行校验时,从sf数字签名列表中选择系统支持的最强的签名算法id,通过签名块中的公钥解密sf签名块中的数字签名。将解密得到的数字签名与mf文件中的数据摘要进行对比,查看摘要是否被修改。对比mf文件中的签名算法id和sf文件中的签名算法id是否一致。对比mf中开发者数字证书中的公钥和签名块中公钥是否一致。计算apk的数据摘要与mf当中的数据摘要进行对比。

通过上述apk文件加入信息的方式,以及上述对v3签名校验的方式,apk的v3签名块会存储为一个id-value对(id-valuepair),其中id为0xf05368c0,在v3签名的apk上添加id-valuepair为0x4d494859的渠道号信息,实现了在没有签名密钥时能够在v3签名的apk文件上添加上渠道号等信息。并且在id-value中加入渠道号等信息,能够快速添加渠道号等信息,节省开发成本和资源占用

进一步的,本公开实施例中在andoid9校验v3签名的apk文件包时,无渠道和有渠道号的两个apk文件,能够相互覆盖安装。

基于相同的构思,本公开实施例还提供一种应用打包装置。

可以理解的是,本公开实施例提供的应用打包装置为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。结合本公开实施例中所公开的各示例的单元及算法步骤,本公开实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同的方法来实现所描述的功能,但是这种实现不应认为超出本公开实施例的技术方案的范围。

图9是根据一示例性实施例示出的一种应用打包装置框图。参照图9,应用打包装置100包括确定单元101、添加单元102和生成单元103。

确定单元101,用于确定apk签名块。添加单元102,用于在所述apk签名块中添加id-value,所述id-value中包括待加入至所述apk文件中的信息。生成单元103,用于生成包含所述信息的apk文件。

一种实施方式中,生成单元103采用如下方式生成包含信息的apk文件:

确定apk签名块中的已有id-value。基于已有id-value和包含有信息的id-value,生成新apk签名块。基于新apk签名块生成包含信息的apk文件。

另一种实施方式中,生成单元103采用如下方式基于新apk签名块生成包含信息的apk文件:

确定apk的eocd块。基于新apk签名块,修改eocd块的中央目录偏移量。基于修改中央目录偏移量的eocd块和新apk签名块,生成包含信息的apk文件。

又一种实施方式中,信息包括渠道信息、编译时间戳信息、版本信息等中的一项或多项。

又一种实施方式中,确定单元采用如下方式确定apk签名块:

根据多个签名算法确定apk数据摘要。将apk数据摘要,与数字证书链以及额外属性,组装形成mf文件。确定mf文件的数字签名,形成sf文件。将mf文件、sf文件,与开发者公钥组装形成v3签名块。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图10是根据一示例性实施例示出的一种用于应用打包的装置200的框图。例如,装置200可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图10,装置200可以包括以下一个或多个组件:处理组件202,存储器204,电力组件206,多媒体组件208,音频组件210,输入/输出(i/o)的接口212,传感器组件214,以及通信组件216。

处理组件202通常控制装置200的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件202可以包括一个或多个处理器220来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件202可以包括一个或多个模块,便于处理组件202和其他组件之间的交互。例如,处理组件202可以包括多媒体模块,以方便多媒体组件208和处理组件202之间的交互。

存储器204被配置为存储各种类型的数据以支持在设备200的操作。这些数据的示例包括用于在装置200上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器204可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电力组件206为装置200的各种组件提供电力。电力组件206可以包括电源管理系统,一个或多个电源,及其他与为装置200生成、管理和分配电力相关联的组件。

多媒体组件208包括在所述装置200和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件208包括一个前置摄像头和/或后置摄像头。当设备200处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件210被配置为输出和/或输入音频信号。例如,音频组件210包括一个麦克风(mic),当装置200处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器204或经由通信组件216发送。在一些实施例中,音频组件210还包括一个扬声器,用于输出音频信号。

i/o接口212为处理组件202和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件214包括一个或多个传感器,用于为装置200提供各个方面的状态评估。例如,传感器组件214可以检测到设备200的打开/关闭状态,组件的相对定位,例如所述组件为装置200的显示器和小键盘,传感器组件214还可以检测装置200或装置200一个组件的位置改变,用户与装置200接触的存在或不存在,装置200方位或加速/减速和装置200的温度变化。传感器组件214可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件214还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件214还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件216被配置为便于装置200和其他设备之间有线或无线方式的通信。装置200可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件216经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件216还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

在示例性实施例中,装置200可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器204,上述指令可由装置200的处理器220执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

进一步可以理解的是,本公开中“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

进一步可以理解的是,术语“第一”、“第二”等用于描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开,并不表示特定的顺序或者重要程度。实际上,“第一”、“第二”等表述完全可以互换使用。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。

进一步可以理解的是,本公开实施例中尽管在附图中以特定的顺序描述操作,但是不应将其理解为要求按照所示的特定顺序或是串行顺序来执行这些操作,或是要求执行全部所示的操作以得到期望的结果。在特定环境中,多任务和并行处理可能是有利的。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。


技术特征:

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文件中的信息;

生成单元,用于生成包含所述信息的apk文件。

7.根据权利要求6所述的应用打包装置,其特征在于,所述生成单元采用如下方式生成包含所述信息的apk文件:

确定所述apk签名块中的已有标识值;

基于所述已有标识值和包含有所述信息的所述标识值,生成新apk签名块;

基于所述新apk签名块生成包含所述信息的apk文件。

8.根据权利要求7所述的应用打包装置,其特征在于,所述生成单元还用于:

基于所述新apk签名块,修改eocd块的中央目录偏移量。

9.根据权利要求6至8中任意一项所述的应用打包装置,其特征在于,所述信息包括渠道信息、编译时间戳信息、版本信息等中的一项或多项。

10.根据权利要求6所述的应用打包装置,其特征在于,所述确定单元采用如下方式确定apk签名块:

根据多个签名算法确定apk数据摘要;

将所述apk数据摘要,与数字证书链以及额外属性,组装形成mf文件;

确定所述mf文件的数字签名,形成sf文件;

将所述mf文件、所述sf文件,与开发者公钥组装形成v3签名块。

11.一种应用打包装置,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为:执行权利要求1至5中任意一项所述的应用打包方法。

12.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行权利要求1至5中任意一项所述的应用打包方法。

技术总结
本公开是关于一种应用打包方法、应用打包装置及存储介质。应用打包方法,包括:确定APK签名块;在所述APK签名块中添加标识值,所述标识值中包括待加入至所述APK文件中的信息;生成包含所述信息的APK文件。通过本公开实现在不改变APK文件结构的基础上,在APK文件中加入信息,进而可以避免因APK文件结构改变导致的签名验证失败。

技术研发人员:饶福贵
受保护的技术使用者:北京小米移动软件有限公司
技术研发日:2020.01.17
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-60043.html

最新回复(0)