本发明涉及终端
技术领域:
,具体而言,涉及一种应用打包方法及装置。
背景技术:
:目前,开发商会通过多种渠道推广应用程序,在通过一个渠道进行应用推广时,需要在应用程序的安装包中打包该渠道的渠道标识,以便统计该渠道推广该应用程序的用户量及用户流水。当前,相关技术中提供了一种应用打包方法,包括:将应用程序的安装文件的格式由APK(AndroidPackage,安卓安装包)格式转换为ZIP(文件压缩格式)格式。解压缩ZIP格式的安装文件,得到该应用程序对应的存在层级关系的文件夹,然后在该文件夹中特定路径下生成一个XML(ExtensibleMarkupLanguage,可扩展标记语言)格式的文件,在该XML格式的文件中存入渠道标识。然后再将上述文件夹整体压缩成ZIP文件,压缩完成后再重命名成APK文件。但当应用程序的安装包体积很大、包内文件很多时,上述相关技术中先解压缩安装包,加入渠道标识再打包压缩,需要花费的时间很长,消耗大量服务器资源并且效率很低。技术实现要素:有鉴于此,本发明实施例的目的在于提供一种应用打包方法及装置,在安装文件的文件体中的注释位中直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包对服务器资源的消耗。第一方面,本发明实施例提供了一种应用打包方法,所述方法包括:获取渠道信息及应用程序的安装文件;从所述安装文件的文件体中定位出安装文件的注释位;将所述渠道信息写入所述安装文件的注释位。结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述将所述渠道信息写入所述安装文件的注释位,包括:获取所述渠道信息的数据长度;将所述安装文件的注释位的注释长度修改为所述数据长度;将所述渠道信息以字节流写入所述安装文件的注释位。结合第一方面,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述从所述安装文件的文件体中定位出安装文件的注释位,包括:将所述安装文件转存为文件压缩格式ZIP文件;从所述ZIP文件的文件体中定位出注释位。结合第一方面,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述将所述渠道信息写入所述安装文件的注释位之前,还包括:获取第一密钥和第二密钥;通过所述第一密钥对所述渠道信息进行加密,得到数据密文;通过所述第二密钥对所述第一密钥进行加密,得到密钥密文;将所述密钥密文和所述数据密文确定为需写入所述注释位的渠道信息。结合第一方面或第一方面的第一至第三种实现方式中的任一种实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,所述将所述渠道信息写入所述安装文件的注释位之前,还包括:将所述渠道信息转换为轻量级数据格式json格式数据。第二方面,本发明实施例提供了一种应用打包装置,所述装置包括:获取模块,用于获取渠道信息及应用程序的安装文件;定位模块,用于从所述安装文件的文件体中定位出安装文件的注释位;写入模块,用于将所述渠道信息写入所述安装文件的注释位。结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述写入模块包括:获取单元,用于获取所述渠道信息的数据长度;修改单元,用于将所述安装文件的注释位的注释长度修改为所述数据长度;写入单元,用于将所述渠道信息以字节流写入所述安装文件的注释位。结合第二方面,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述定位模块包括:转存单元,用于将所述安装文件转存为文件压缩格式ZIP文件;定位单元,用于从所述ZIP文件的文件体中定位出注释位。结合第二方面,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述装置还包括:加密模块,用于获取第一密钥和第二密钥;通过所述第一密钥对所述渠道信息进行加密,得到数据密文;通过所述第二密钥对所述第一密钥进行加密,得到密钥密文;将所述密钥密文和所述数据密文确定为需写入所述注释位的渠道信息。结合第二方面或第二方面的第一至第三种可能的实现方式中的任一种实现方式,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,所述装置还包括:格式转换模块,用于将所述渠道信息转换为轻量级数据格式json格式数据。在本发明实施例提供的方法及装置中,获取渠道信息及应用程序的安装文件;从安装文件的文件体中定位出安装文件的注释位;将渠道信息写入安装文件的注释位。本发明在安装文件的文件体中的注释位中直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包对服务器资源的消耗。为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。图1示出了本发明实施例1所提供的一种应用打包方法的流程图;图2示出了本发明实施例2所提供的一种应用打包装置的第一结构示意图;图3示出了本发明实施例2所提供的一种应用打包装置的第二结构示意图;图4示出了本发明实施例2所提供的一种应用打包装置的第三结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。考虑到当应用程序的安装包数据量很大时,相关技术中先解压缩安装包,加入渠道标识再打包压缩,需要花费的时间很长,消耗大量服务器资源并且效率很低。基于此,本发明实施例提供了一种应用打包方法及装置,下面通过实施例进行描述。实施例1参见图1,本发明实施例提供了一种应用打包方法,该方法具体包括以下步骤:步骤101:获取渠道信息及应用程序的安装文件。本发明实施例的执行主体为服务器。当需要将应用程序放在某渠道进行推广时,服务器生成该渠道对应的渠道信息,该渠道信息可以为渠道名称、渠道标识符或渠道序列号等。上述渠道可以为一些浏览器网站或应用推广平台等。服务器生成渠道的渠道信息,并获取该应用程序的安装文件。其中,应用程序的安装文件的文件格式通常为APK文件。步骤102:从安装文件的文件体中定位出安装文件的注释位。服务器获取到应用程序的安装文件后,将安装文件转存为ZIP文件,即将安装文件的文件格式由APK格式转换为ZIP格式。ZIP文件的文件体的目录结束标识位于ZIP文件整个文件的结尾,用于标记压缩的目录数据的结束。ZIP文件的文件体的目录结束标识结构如表1所示。其中,在表1中注释内容对应的字节数n为注释长度字段所记录的字节数。表1序号字节数字段内容04核心目录结束标记42当前磁盘号62核心目录开始位置的磁盘编号82磁盘上所记录的核心目录数量102核心目录结构总数124核心目录的大小164核心目录开始位置相对于archive(档案文件)开始的位移202注释长度22n注释内容在本发明实施例中,就是充分利用ZIP文件的文件体,将渠道信息写入ZIP文件的文件体中,从而实现不解压缩安装文件即可将渠道信息打包到安装文件中,提高了打包渠道信息的效率。将安装文件转换为ZIP文件后,从该ZIP文件的文件体中定位出注释位。该注释位即包括上述表1中的注释长度和注释内容两个字段。步骤103:将渠道信息写入安装文件的注释位。在将渠道信息写入安装文件时,首先将渠道信息转换为json(JavaScriptObjectNotation,轻量级数据格式)格式数据,以方便后续对渠道信息的读取。将渠道信息转换为json格式数据后,获取第一密钥和第二密钥;通过第一密钥对渠道信息进行加密,得到数据密文;通过第二密钥对第一密钥进行加密,得到密钥密文;将密钥密文和数据密文确定为需写入注释位的渠道信息。服务器可以随机生成两个密钥,分别作为第一密钥和第二密钥。也可以接收开发商上传的预设的第一密钥和第二密钥。获得第一密钥和第二密钥后,通过第一密钥对渠道信息对应的json格式数据进行DES(DataEncryptionStandard,数据加密标注)加密,得到数据密文。再通过第二密钥对第一密钥进行DES加密,得到密钥密文。如此确保第一密钥和渠道信息对应的json格式数据都是经过加密的,以提高打包后应用程序安装文件中渠道信息的安全性。通过上述方式得到密钥密文和数据密文后,获取渠道信息的数据长度;将安装文件的注释位的注释长度修改为数据长度;将渠道信息以字节流写入安装文件的注释位。在本发明实施例中,将密钥密文和数据密文的数据长度之和作为获取的渠道信息的数据长度。然后将表1所示的安装文件对应的ZIP文件的文件体中字段注释长度的内容修改为渠道信息的数据长度,以确保ZIP文件的文件体中有足够大的字节空间来盛放渠道信息。然后将密钥密文和数据密文作为需写入的渠道信息,通过ByteStreamWriter(字节流写)以字节流的方式写入表1所示的注释内容字段。在本发明实施例中,为了后续解密上述数据密文和密钥密文,服务器还存储第二密钥与渠道信息的对应关系。通过本发明实施例提供的应用打包方法可在文件体上直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包对服务器资源的消耗。在本发明实施例中,将上述应用打包方式对应的程序代码通过IDE(IntegratedDevelopmentEnvironment,集成开发环境)封装为JAR(JavaArchive,脚本归档文件)包。将封装得到的JAR包配置在服务器上,服务器通过运行该JAR包即可实现通过本发明实施例提供的方法进行应用打包。若需要在多个渠道推广应用程序,则对于每个渠道都复制该应用程序的安装文件,并按照本发明实施例提供的方式在复制的安装文件的文件体中写入渠道对应的渠道信息。在本发明实施例中,将渠道信息写入应用程序的安装文件对应的ZIP文件的文件体后,将安装文件的文件格式转换为APK文件。然后将该应用程序对应的APK格式的安装文件发送给渠道对应的渠道服务器。渠道服务器存储该应用程序的APK格式的安装文件。当用户通过终端登录渠道服务器请求下载该应用程序时,渠道服务器复制该应用程序的APK格式的安装文件,将复制得到的该应用程序的APK格式的安装文件发送给该用户的终端。该用户的终端接收到该安装文件时,将该安装文件转换为ZIP格式的文件,从ZIP格式的文件的文件体中定位出注释内容字段,从该注释内容字段获取渠道信息,将获取的渠道信息发送给该应用程序对应的服务器。该应用程序对应的服务器接收到用户的终端发送的渠道信息,该渠道信息包括密钥密文和数据密文。从第二密钥与渠道信息的对应关系中获取对应的第二密钥,通过获取的第二密钥对密钥密文进行解密得到第一密钥。通过第一密钥对数据密文进行解密得到渠道信息。根据该渠道信息,在该渠道信息对应的渠道累加字段上加一。通过上述方式服务器可以统计渠道推广该应用程序的数量,并根据各个渠道对应的推广数量为各个渠道进行结算,以及根据各个渠道对应的推广数量进行应用程序推广策略的调整。在本发明实施例提供的方法中,获取渠道信息及应用程序的安装文件;从安装文件的文件体中定位出安装文件的注释位;将渠道信息写入安装文件的注释位。本发明在安装文件的文件体中的注释位中直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包对服务器资源的消耗。实施例2参见图2,本发明实施例提供了一种应用打包装置,该装置用于执行上述实施例1所提供的应用打包方法,该装置具体包括:获取模块201,用于获取渠道信息及应用程序的安装文件;定位模块202,用于从安装文件的文件体中定位出安装文件的注释位;写入模块203,用于将渠道信息写入安装文件的注释位。如图3所示,写入模块203包括:获取单元2031,用于获取渠道信息的数据长度;修改单元2032,用于将安装文件的注释位的注释长度修改为数据长度;写入单元2033,用于将渠道信息以字节流写入安装文件的注释位。如图3所示,上述定位模块202包括:转存单元2021,用于将安装文件转存为文件压缩格式ZIP文件;定位单元2022,用于从ZIP文件的文件体中定位出注释位。在本发明实施例中,就是充分利用ZIP文件的文件体,将渠道信息写入ZIP文件的文件体中,从而实现不解压缩安装文件即可将渠道信息打包到安装文件中,提高了打包渠道信息的效率。如图4所示,该装置还包括:加密模块204,用于获取第一密钥和第二密钥;通过第一密钥对渠道信息进行加密,得到数据密文;通过第二密钥对第一密钥进行加密,得到密钥密文;将密钥密文和数据密文确定为需写入注释位的渠道信息。确保第一密钥和渠道信息对应的json格式数据都是经过加密的,以提高打包后应用程序安装文件中渠道信息的安全性。在本发明实施例中,为了后续解密上述数据密文和密钥密文,该装置还存储第二密钥与渠道信息的对应关系。格式转换模块205,用于将渠道信息转换为轻量级数据格式json格式数据。通过本发明实施例提供的应用打包方法可在文件体上直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包的资源消耗。在本发明实施例中,将渠道信息写入应用程序的安装文件对应的ZIP文件的文件体后,将安装文件的文件格式转换为APK文件。然后将该应用程序对应的APK格式的安装文件发送给渠道对应的渠道服务器。渠道服务器存储该应用程序的APK格式的安装文件。当用户通过终端登录渠道服务器请求下载该应用程序时,渠道服务器复制该应用程序的APK格式的安装文件,将复制得到的该应用程序的APK格式的安装文件发送给该用户的终端。该用户的终端接收到该安装文件时,将该安装文件转换为ZIP格式的文件,从ZIP格式的文件的文件体中定位出注释内容字段,从该注释内容字段获取渠道信息,将获取的渠道信息发送给该装置。该装置接收到用户的终端发送的渠道信息,该渠道信息包括密钥密文和数据密文。从第二密钥与渠道信息的对应关系中获取对应的第二密钥,通过获取的第二密钥对密钥密文进行解密得到第一密钥。通过第一密钥对数据密文进行解密得到渠道信息。根据该渠道信息,在该渠道信息对应的渠道累加字段上加一。通过上述方式该装置可以统计渠道推广该应用程序的数量,并根据各个渠道对应的推广数量为各个渠道进行结算,以及根据各个渠道对应的推广数量进行应用程序推广策略的调整。在本发明实施例提供的装置中,获取渠道信息及应用程序的安装文件;从安装文件的文件体中定位出安装文件的注释位;将渠道信息写入安装文件的注释位。本发明在安装文件的文件体中的注释位中直接写入渠道信息,无需拆包或解压缩应用程序的安装包,且无需重新签名以打入渠道信息,节省了打入渠道信息所需的时间,提高应用打包效率,降低了应用打包对服务器资源的消耗。本发明实施例所提供的应用打包装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本
技术领域:
的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3