渠道包生成方法及装置、终端和服务器与流程

文档序号:11154391阅读:424来源:国知局
渠道包生成方法及装置、终端和服务器与制造工艺

本公开涉及渠道包处理领域,尤其涉及渠道包生成方法及装置、终端和服务器。



背景技术:

相关技术中,可以通过在安卓安装包(Android Package,APK)程序包中未被签名保护的区域写入渠道数据的方式,生成渠道包;或者还可以通过重新签名或重新打包的方式生成包括渠道数据的渠道包。

但是,新发布的安卓系统为平台增加了大量保护方案,其中的签名方案是对整个APK程序包对应的APK文件进行了保护,因此无法使用上述第一种方式生成渠道包。而采用上述第二种方式生成渠道包的过程比较缓慢,消耗时间较长。



技术实现要素:

有鉴于此,本申请提供一种提供了渠道包生成方法及装置、终端和服务器,以解决相关技术中的不足。

根据本公开实施例的第一方面,提供一种渠道包生成方法,所述方法用于终端或服务器,包括:

生成渠道数据;

在安卓安装包APK程序包中的目标位置,写入所述渠道数据,获得渠道包;

其中,所述目标位置是所述APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

根据本公开实施例的第二方面,提供一种渠道包生成装置,所述装置用于终端或服务器,包括:

渠道数据生成模块,用于生成渠道数据;

渠道包生成模块,用于在安卓安装包APK程序包中的目标位置,写入所述渠道数据,获得渠道包;

其中,所述目标位置是所述APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

根据本公开实施例的第三方面,提供一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面所述的渠道包生成方法。

根据本公开实施例的第四方面,提供一种终端,包括:

处理器;

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

其中,所述处理器,用于执行上述第一方面所述的渠道包生成方法。

根据本公开实施例的第五方面,提供一种服务器,包括:

处理器;

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

其中,所述处理器,用于执行上述第一方面所述的渠道包生成方法。

由以上技术方案可见,可以将生成的渠道数据写入APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置,即目标位置,从而获得渠道包。这样即使安卓系统的签名方案是对整个APK文件进行了保护,仍然可以生成渠道包。同时无需重新签名或重新打包,缩短了生成渠道包的时间,可以更加快捷、简单地得到渠道包。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1是本公开根据一示例性实施例示出的一种渠道包生成方法流程图;

图2是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图3是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图4是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图5是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图6是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图7是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图8是本公开根据一示例性实施例示出的另一种渠道包生成方法流程图;

图9是本公开根据一示例性实施例示出的一种渠道包生成装置框图;

图10是本公开根据一示例性实施例示出的另一种渠道包生成装置框图;

图11是本公开根据一示例性实施例示出的另一种渠道包生成装置框图;

图12是本公开根据一示例性实施例示出的另一种渠道包生成装置框图;

图13是本公开根据一示例性实施例示出的终端的结构示意图;

图14是本公开根据一示例性实施例示出的服务器的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

在本公开运行的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所运行的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中运行的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所运行的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

本公开实施例提供的渠道包生成方法可以用于终端或服务器。其中,所述服务器可以是应用超文本传输协议(HyperText Transfer Protocol,http)的服务器。图1是本申请一示例性实施例示出的一种渠道包生成方法,包括以下步骤:

在步骤101中,生成渠道数据;

在步骤102中,在安卓安装包APK程序包中的目标位置,写入所述渠道数据,获得渠道包;

其中,所述目标位置是所述APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

本公开实施例通过在APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置,即目标位置写入生成的渠道数据,从而可以获得渠道包。即使签名方案是对整个APK文件进行了保护,仍然可以采用本公开实施例提供的方法确保生成渠道包。另外,上述过程并不涉及重新签名或重新打包的过程,因此,可以解决通过重新签名或重新打包的方式生成渠道包时,过程缓慢且消耗时间长的问题。

相关技术中,渠道包指的是在各大应用市场发布的APK程序包,APK程序包中会带有标识该应用市场的信息。例如360发布的渠道包中携带标识360的信息;豌豆荚发布的渠道包中携带标识豌豆荚的信息。通过统计该值,可以统计出用户从哪个平台下载了相应的应用程序,从而更好的掌握用户的操作习惯。

在上述步骤101中,如图2所示,图2是在前述图1所示实施例的基础上示出的另一种渠道包生成方法,步骤101包括以下步骤:

在步骤101-1中,获取渠道编号;

终端或服务器可以按照相关技术获取预设的与每个应用市场对应的所述渠道编号。例如,360对应的预设的渠道编号为001,豌豆荚对应的预设的渠道编号为002等。

在步骤101-2中,根据所述渠道编号生成渠道数据。

可选地,如图3所示,图3是在前述图2所示实施例的基础上示出的另一种渠道包生成方法,步骤101-2包括以下步骤:

在步骤101-21中,在所述APK程序包中查找所述APK签名区;

本公开实施例中,APK签名区是APK程序包中进行APK签名的部分。如果需要生成渠道数据,则需要先在整个的APK程序包中定位到APK签名区所在位置,即需要先在所述APK程序包中查找所述APK签名区。

本步骤中,已经按照相关技术打开了所述APK程序包。进一步地,可以根据所述APK程序包的预设文件格式和所述APK签名区的预设数据格式,来查找所述APK签名区。

其中,所述APK程序包的预设文件格式为zip格式,目前公布的APK签名方案(APK Signature Scheme)V2中已经对所述APK签名区的数据格式进行了定义。因此,可以根据上述的APK程序包的预设文件格式和APK签名区的预设数据格式,在所述APK程序包中准确查找到所述APK签名区。

在步骤101-22中,在所述APK签名区中获取所述渠道数据标识所对应的预设数据格式;

本公开实施例中,数据格式是数据保存在文件或记录中的编排格式。可为数值、字符或二进制数等形式。由数据类型及数据长度来描述。每个数据都有相应的数据格式。

本步骤中,可以在所述APK签名区中获取渠道数据标识所对应的预设数据格式。在所述目标文件内容中,存在预先定义的用于表示渠道数据的标签,可选地,可以将该标签的名称作为渠道数据标识。

例如,预先定义的用于表示渠道数据的标签,名称是channel,则channel即为渠道数据标识。

由于每个数据都有相应的数据格式,则终端或服务器可以按照相关技术获取该渠道数据标识所对应的预设数据格式。

在步骤101-23中,根据所述渠道编号,生成符合所述预设数据格式的渠道数据。

本步骤中,终端或服务器可以按照相关技术,根据之前获取到的所述渠道编号来生成符合上述预设数据格式的渠道数据。

例如,所述预设数据格式是字符格式的,该渠道编号为2,即对应的渠道来源是豌豆荚,那么生成的渠道数据即为wandoujia。

在上述步骤102中,可以将生成的上述渠道数据写入所述APK签名区中对应于渠道数据标识的渠道数据所在位置,即目标位置。

本步骤中,在将上述渠道数据写入目标位置后,就得到了符合签名区的所述渠道数据标识所对应的格式的渠道数据。从而得到携带渠道数据的APK程序包,即渠道包。

上述实施例中,可以将生成的渠道数据写入APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置,即目标位置,从而获得渠道包。这样即使安卓系统的签名方案是对整个APK文件进行了保护,仍然可以生成渠道包。同时无需重新签名或重新打包,缩短了生成渠道包的时间,可以更加快捷、简单地得到渠道包。

在一实施例中,考虑到之前可能已经对渠道数据值进行过编辑,则渠道数据值可能不为空值。当所述渠道数据值不为空值时,无法将所述渠道数据写入所述目标位置,因此,上述渠道包生成方法如图4所示,图4是在前述图1所示实施例的基础上示出的另一种渠道包生成方法,在完成步骤101之后,还包括以下步骤:

在步骤201中,在所述APK签名区中确认渠道数据值是否为空值;

本步骤中,可以直接按照相关技术在所述APK签名区中确认所述渠道数据值是否为空值。

例如,所述渠道数据标识为channel,则需要查找channel对应的数据值,即渠道数据值是否为空值。则可以确定所述渠道数据值为空值,否则可以确定所述渠道数据值不为空值。

当所述渠道数据值不为空值时,继续执行步骤202;如果所述渠道数据值为空值,则直接执行步骤102,将生成的渠道数据写入上述目标位置即可。

在步骤202中,将所述渠道数据值置为空值。

本步骤中,可以在所述渠道数据值不为空值时,将其置为空值。

在完成步骤202之后,可以继续执行步骤102,将生成的渠道数据写入上述目标位置。

上述实施例中,可以避免之前对渠道数据进行过编辑导致无法将新生成的渠道数据写入目标位置的问题,同样缩短了生成渠道包的时间。

在另一实施例中,APK文件是zip格式的,由于写入了渠道数据,zip文件的内容发生改变,产生了数据偏移,就会导致整个的APK文件格式错误,无法正常安装的问题。为了避免上述问题,可选地,上述渠道包生成方法如图5所示,图5是在前述图1所示实施例的基础上示出的另一种渠道包生成方法,在完成步骤102之后,还包括以下步骤:

在步骤301中,比较所述渠道数据的数据长度值和写入所述渠道数据之前所述渠道数据值的长度值,获得所述APK签名区的数据长度变化值;

本步骤中,可以比较生成的所述渠道数据的数据长度值和在写入所述渠道数据之前所述渠道数据标识对应的渠道数据值的长度值,从而获得所述数据长度变化值。

例如,生成的所述渠道数据为wandoujia,每个字符占2个字节,则所述渠道数据的数据长度值为18个字节,而在写入所述渠道数据之前所述渠道数据标识对应的渠道数据值为360,则所述渠道数据值的长度值为6个字节。即所述数据长度变化值为增加了12个字节。当然,所述数据长度变化值也可能是减少了若干字节。

应当注意地是,如果所述渠道数据值不为空值,则需要统计的是将所述渠道数据值置为空值前的渠道数据值的长度值。

在步骤302中,将所述数据长度变化值作为所述APK程序包中目标数值的变化值,更新所述目标数值。

其中,所述目标数值是所述APK程序包中记录的中心目录起始位置偏移量的数值。

本公开实施例中,APK程序包是zip格式,每个zip文件中必须有且只有一个ZIP EOCD(End of central directory record),用于表示核心目录结束标识。EOCD中记录了中心目录起始位置偏移量(Offset of start of central directory)的具体数值。

本步骤中,可以根据所述数据长度变化值,来更新所述中心目录起始位置偏移量的数值。即将所述中心目录起始位置的数值增加或减少所述数据长度变化值。确保写入了所述渠道数据后的APK程序包的文件格式仍然是正确的zip格式。

例如,所述数据长度变化值为增加了12个字节,则所述中心目标起始位置偏移量的数值也相应增加12个字节。如果所述数据长度变化值减少了6个字符,则所述中心目标起始位置偏移量的数值也相应减少6个字节。

上述实施例中,在将所述渠道数据写入安卓安装包APK程序包中的目标位置后,确保APK程序包的文件格式仍然是正确的zip格式,从而可以正常安装,同时缩短了生成渠道包的时间。

在另一实施例中,当上述渠道包生成方法用于服务器时,上述方法如图6所示,图6是在前述图1所示实施例的基础上示出的另一种渠道包生成方法,在执行步骤101之前,还包括以下步骤:

在步骤100中,接收客户端发送的请求获取渠道包的获取请求;

本步骤中,客户端如果需要获取程序包,则客户端会按照相关技术向服务器发起所述获取请求。当所述服务器接收到所述获取请求后,可以开始执行步骤101。

当然,在获得渠道包之后,即完成步骤102之后,还包括以下步骤:

在步骤103中,在关闭所述渠道包之后,将所述渠道包发送给所述客户端。

本步骤中,所述服务器按照上述实施例提供的方式获得渠道包之后,关闭所述渠道包,进而按照相关技术将所述渠道包返回发起所述获取请求的客户端即可。此时,客户端就获取到了携带完整的渠道信息的APK程序包,即渠道包。

上述实施例中,服务器可以基于客户端的获取请求生成渠道包,进而将所述渠道包返回所述客户端,即使安卓系统的签名方案是对整个APK文件进行了保护,仍然可以生成渠道包。同时无需重新签名,缩短了服务器生成渠道包的时间,使得客户端可以更加快捷、简单地得到渠道包。

下面分别介绍一下在终端和服务器上生成渠道包的具体过程。

如图7所示,图7是根据一示例性实施例示出的另一种渠道包生成方法,所述方法用于终端,包括以下步骤:

在步骤401中,打开APK程序包。

在步骤402中,获取渠道编号。

本步骤中,所述终端可以按照相关技术获取预设的与每个应用市场对应的所述渠道编号。

在步骤403中,根据所述APK程序包的预设文件格式和所述APK签名区的预设数据格式,查找所述APK签名区。

本公开实施例中,可以根据上述的APK程序包的预设文件格式和APK签名区的预设数据格式,在所述APK文件中准确查找到所述APK签名区。

在步骤404中,在所述APK签名区中获取所述渠道数据标识所对应的预设数据格式。

在步骤405中,在所述APK签名区中确认渠道数据值是否为空值。

如果所述渠道数据值不为空值,则执行步骤406,否则执行步骤407。

在步骤406中,将所述渠道数据值置为空值。

在步骤407中,根据所述渠道编号,生成符合所述预设数据格式的渠道数据。

本步骤中,终端按照相关技术,根据之前获取到的所述渠道编号来生成符合上述预设数据格式的渠道数据。

在步骤408中,在APK程序包中的目标位置,写入所述渠道数据,获得渠道包。

其中,所述目标位置是APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

上述实施例中,即使安卓系统的签名方案是对整个APK文件进行了保护,终端仍然可以自动生成渠道包。同时无需重新签名,缩短了生成渠道包的时间,可以更加快捷、简单地得到渠道包。

如图8所示,图8是根据一示例性实施例示出的另一种渠道包生成方法,所述方法用于服务器,包括以下步骤:

在步骤501中,获取客户端发送的请求获取渠道包的获取请求。

在步骤502中,打开APK程序包。

在步骤503中,获取渠道编号。

本步骤中,所述服务器可以按照相关技术获取预设的与每个应用市场对应的所述渠道编号。

在步骤504中,根据所述APK程序包的预设文件格式和所述APK签名区的预设数据格式,查找所述APK签名区。

本公开实施例中,可以根据上述的APK程序包的预设文件格式和APK签名区的预设数据格式,在所述APK文件中准确查找到所述APK签名区。

在步骤505中,在所述APK签名区中获取所述渠道数据标识所对应的预设数据格式。

在步骤506中,在所述APK签名区中确认渠道数据值是否为空值。

如果所述渠道数据值不为空值,则执行步骤507,否则执行步骤508。

在步骤507中,将所述渠道数据值置为空值。

在步骤508中,根据所述渠道编号,生成符合所述预设数据格式的渠道数据。

本步骤中,所述服务器按照相关技术,根据之前获取到的所述渠道编号来生成符合上述预设数据格式的渠道数据。

在步骤509中,在APK程序包中的目标位置,写入所述渠道数据,获得渠道包。

其中,所述目标位置是APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

在步骤510中,在关闭所述渠道包之后,将所述渠道包发送给所述客户端。

上述实施例中,即使安卓系统的签名方案是对整个APK文件进行了保护,服务器仍然可以基于客户端的获取请求自动生成渠道包,并将所述渠道包返回所述客户端。同时无需重新签名,缩短了生成渠道包的时间,使得客户端可以更加快捷、简单地得到渠道包。

与前述方法的实施例相对应,本申请还提供了相应装置的实施例。

图9为根据本发明的一示例性实施例示出的一种渠道包生成装置的结构示意图;如图9所示,该渠道包生成装置可以包括:

渠道数据生成模块610,用于生成渠道数据;

渠道包生成模块620,用于在安卓安装包APK程序包中的目标位置,写入所述渠道数据,获得渠道包;

其中,所述目标位置是所述APK程序包的APK签名区中对应于渠道数据标识的渠道数据所在位置。

在一实施例中,所述渠道数据生成模块610具体用于:

获取渠道编号;

根据所述渠道编号生成渠道数据。

在一实施例中,所述渠道数据生成模块610具体还用于:

在所述APK程序包中查找到所述APK签名区;

在所述APK签名区中获取所述渠道数据标识所对应的预设数据格式;

根据所述渠道编号,生成符合所述预设数据格式的渠道数据。

在一实施例中,所述渠道数据生成模块610具体还用于:

根据所述APK程序包的预设文件格式和所述APK签名区的预设数据格式,查找所述APK签名区。

图10为根据本发明的图9示例性实施例示出的另一种渠道包生成装置的结构示意图;如图10所示,该渠道包生成装置还可以包括:

确认模块630,用于在所述APK签名区中确认渠道数据值是否为空值;

执行模块640,用于当所述APK程序包中所述渠道数据值不为空值时,将所述渠道数据值置为空值;

第一控制模块650,用于当所述执行模块6450将所述渠道数据值置为空值,或所述确认模块630查找到所述渠道数据值为空值时,控制所述渠道包生成模块在安卓安装包APK程序包中的目标位置,写入所述渠道数据,获得渠道包。

图11为根据本发明的图9示例性实施例示出的另一种渠道包生成装置的结构示意图;如图11所示,该渠道包生成装置还可以包括:

比较模块660,用于比较所述渠道数据的数据长度值和写入所述渠道数据之前所述渠道数据值的长度值,获得所述APK签名区的数据长度变化值;

更新模块670,用于将所述数据长度变化值作为所述APK程序包中目标数值的变化值,更新所述目标数值;

其中,所述目标数值是所述APK程序包中记录的中心目录起始位置偏移量的数值。

图12为根据本发明的图9示例性实施例示出的另一种渠道包生成装置的结构示意图;如图12所示,该渠道包生成装置用于服务器时,还可以包括:

接收模块680,用于接收客户端发送的请求获取渠道包的获取请求;

第二控制模块690,用于根据所述获取请求,控制所述渠道编号获取模块获取渠道编号;

发送模块710,用于在所述渠道包生成模块620获得渠道包之后,关闭所述渠道包,将所述渠道包发送给所述客户端。

本公开实施例还提供了另一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图8实施例提供的渠道包生成方法。

图13示出了根据本发明的一示例性实施例的终端的结构示意图;对应于上述的渠道包生成方法,本公开实施例还提出了图13所示的根据本发明的一示例性实施例的终端的示意结构图。请参考图13,在硬件层面,该计算设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成渠道包生成装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

图14示出了根据本发明的一示例性实施例的服务器的结构示意图;对应于上述的渠道包生成方法,本公开实施例还提出了图14所示的根据本发明的一示例性实施例的服务器的示意结构图。请参考图14,在硬件层面,该计算设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成渠道包生成装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。

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

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1