本发明涉及计算机技术领域,特别是涉及一种安装包的打包方法和装置。
背景技术
现如今手机游戏已经应用产品爆炸,大批量的游戏应用程序不断地上架各类平台,甚至于对于某个产品,用户会寻找大批量的分发平台,记录不同的渠道号进行应用分发。因此,用户经常面临需要打出很多的功能或者逻辑模块重复的包体。
现有的技术往往使用ant或者gradle的android系统自带带包方式,快捷一些的使用这两种打包方式的脚本。相较于ant的及其复杂的脚本书写方式,gradle的脚本书写方式稍微简单一些,但是这两中打包方的打包效率低下,打包容错率低,经常会出现渠道号误打或者漏打,导致平台用户损失。
技术实现要素:
基于此,有必要针对目前安装包的打包效率低下的问题,提供一种安装包的打包方法和装置。
一种安装包的打包方法,所述方法包括:
获取安装包的空白包体;
当所述空白包体为合法的安装包字段时,对所述空白包体进行反编辑生成对应的空白文件夹;
将预设的安装包资源写入所述空白文件夹生成对应的资源文件夹;
基于所述资源文件夹对所述空白包体进行重新打包生成所述安装包。
优先的,所述方法还包括:
对生成的所述安装包进行重新签名。
优先的,所述对所述空白包体进行反编辑生成对应的空白文件夹,包括:
通过apktool工具对所述空白包体进行反编辑生成对应的空白文件夹。
优先的所述空白文件夹包括assets文件、smail文件、mipmap文件和mainfest文件;
所述将预设的安装包资源写入所述空白文件夹生成对应的资源文件夹,包括:
将所述安装包的原生资源写入所述assets文件;
将所述安装包的功能代码写入所述smail文件;
将所述安装包的图片资源写入所述mipmap文件;
将所述安装包的渠道号写入所述mainfest文件。
优先的,所述将所述安装包的渠道号写入所述mainfest文件,包括:
通过io流读取所述mainfest文件中用于写入所述渠道号的标记位置的字符内容;
基于所述渠道号,对所述字符内容进行编译将所述渠道号写入所述标记位置。
一种安装包的打包装置,所述装置包括:
获取模块,用于获取安装包的空白包体;
生成模块,用于当所述空白包体为合法的安装包字段时,对所述空白包体进行反编辑生成对应的空白文件夹;
写入模块,用于将预设的安装包资源写入所述空白文件夹生成对应的资源文件夹;
打包模块,用于基于所述资源文件夹对所述空白包体进行重新打包生成所述安装包。
优先的,所述装置还包括:
签名模块,用于对生成的所述安装包进行重新签名。
优先的,所述生成模块用于:
通过apktool工具对所述空白包体进行反编辑生成对应的空白文件夹。
优先的所述空白文件夹包括assets文件、smail文件、mipmap文件和mainfest文件;
所述写入模块用于:
将所述安装包的原生资源写入所述assets文件;
将所述安装包的功能代码写入所述smail文件;
将所述安装包的图片资源写入所述mipmap文件;
将所述安装包的渠道号写入所述mainfest文件。
优先的,所述写入模块用于:
通过io流读取所述mainfest文件中用于写入所述渠道号的标记位置的字符内容;
基于所述渠道号,对所述字符内容进行编译将所述渠道号写入所述标记位置。
本发明实施例中,对于安装包的空白包体,当其为合法的安装包字段时,可以首先对其进行反编辑生成空白文件夹,然后将对应的安装包的资源写入这些空白文件夹形成对应的资源文件夹,基于这些资源文件夹对空白包体重新打包即可生成对应的安装包;由此,本实施例可以实现安装包打包的自动化,而不用人工书写代码的方式对安装包进行打包,从而提高打包的效率,并避免打包错误的发生。
附图说明
图1为一实施例的安装包的打包方法的流程图;
图2为一实施例的安装包的打包装置的结构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1为一实施例的安装包的打包方法的流程图。如图1所示,该方法包括:
步骤120,获取安装包的空白包体。
空白包体可以是没有安装包的资源的包体。但是,在一些情况下,空白包体也可以是输入包含多成品包的交集部分的包体。
步骤140,当所述空白包体为合法的安装包字段时,对所述空白包体进行反编辑生成对应的空白文件夹。
安装包可以是apk形式的安装包。可以检测空白包体的字段是否为合法的apk字段,如果是合法的apk字段,则可以对空白包体进行反编辑。
在这里,可以理解的是,对于安卓安装文件,符合后缀名为″.apk″格式的文件二进制要求时,即为合法的安装包字段。
其中,可以通过apktool工具对所述空白包体进行反编辑生成对应的空白文件夹。
步骤160,将预设的安装包资源写入所述空白文件夹生成对应的资源文件夹。
空白文件夹通常具有多个,不同的空白文件夹写入的安装包资源不同。通常而言,不同类型的安装包资源可以写入对应类型的空白文件夹中。
步骤180,基于所述资源文件夹对所述空白包体进行重新打包生成所述安装包。
其中,可以采用apktool对空白包体进行重新打包。对空白包体进行重新打包后,生成的安装包包含有对应的资源文件夹,这些安装包即可在终端设备上打开并安装运行。
本发明实施例中,对于安装包的空白包体,当其为合法的安装包字段时,可以首先对其进行反编辑生成空白文件夹,然后将对应的安装包的资源写入这些空白文件夹形成对应的资源文件夹,基于这些资源文件夹对空白包体重新打包即可生成对应的安装包;由此,本实施例可以实现安装包打包的自动化,而不用人工书写代码的方式对安装包进行打包,从而提高打包的效率,并避免打包错误的发生。
其中,基于所述资源文件夹对所述空白包体进行重新打包生成所述安装包后,可以对生成的所述安装包进行重新签名。具体的,可以使用jarsinge对apk安装包进行重新签名。
本实施例中,所述空白文件夹可以包括assets文件、smail文件、mipmap文件和mainfest文件等。其中,步骤160可以具体实现为:
将所述安装包的原生资源写入所述assets文件;
将所述安装包的功能代码写入所述smail文件;
将所述安装包的图片资源写入所述mipmap文件;
将所述安装包的渠道号写入所述mainfest文件。
在应用于安卓系统中的安装包中,assets目录下通常存放的安装包的原生资源文件,安装包的功能代码通常存放于smail文件,安装包的图片资源通常存放于mipmap文件。
对于用户的安装包,通常需要在下放在不同的平台上,为了便于统计该安装包在不同平台中的下载量,通常会在安装包中加入对应的渠道号,用于记录从对应平台的下载该安装包的下载量。
mainfest文件是注册清单文件,可以用于填写渠道号。但是mainfest文件通常是只读文件,因此,将所述安装包的渠道号写入所述mainfest文件时,可以通过io流读取所述mainfest文件中用于写入所述渠道号的标记位置的字符内容;然后基于所述渠道号,对所述字符内容进行编译将所述渠道号写入所述标记位置。
图2为一实施例的安装包的打包装置的结构图。如图2所示,该装置包括:
获取模块220,用于获取安装包的空白包体。
空白包体可以是没有安装包的资源的包体。但是,在一些情况下,空白包体也可以是输入包含多成品包的交集部分的包体。
生成模块240,用于当所述空白包体为合法的安装包字段时,对所述空白包体进行反编辑生成对应的空白文件夹。
安装包可以是apk形式的安装包。可以检测空白包体的字段是否为合法的apk字段,如果是合法的apk字段,则可以对空白包体进行反编辑。
在这里,可以理解的是,对于安卓安装文件,符合后缀名为″.apk″格式的文件二进制要求时,即为合法的安装包字段。
其中,可以通过apktool工具对所述空白包体进行反编辑生成对应的空白文件夹。
写入模块260,用于将预设的安装包资源写入所述空白文件夹生成对应的资源文件夹。
空白文件夹通常具有多个,不同的空白文件夹写入的安装包资源不同。通常而言,不同类型的安装包资源可以写入对应类型的空白文件夹中。
打包模块280,用于基于所述资源文件夹对所述空白包体进行重新打包生成所述安装包。
其中,可以采用apktool对空白包体进行重新打包。对空白包体进行重新打包后,生成的安装包包含有对应的资源文件夹,这些安装包即可在终端设备上打开并安装运行。
本发明实施例中,对于安装包的空白包体,当其为合法的安装包字段时,可以首先对其进行反编辑生成空白文件夹,然后将对应的安装包的资源写入这些空白文件夹形成对应的资源文件夹,基于这些资源文件夹对空白包体重新打包即可生成对应的安装包;由此,本实施例可以实现安装包打包的自动化,而不用人工书写代码的方式对安装包进行打包,从而提高打包的效率,并避免打包错误的发生。
可选的,作为一个实施例,所述装置还包括:
签名模块,用于对生成的所述安装包进行重新签名。
可选的,作为一个实施例,所述生成模块240用于:
通过apktool工具对所述空白包体进行反编辑生成对应的空白文件夹。
可选的,作为一个实施例,所述空白文件夹包括assets文件、smail文件、mipmap文件和mainfest文件;
所述写入模块260用于:
将所述安装包的原生资源写入所述assets文件;
将所述安装包的功能代码写入所述smail文件;
将所述安装包的图片资源写入所述mipmap文件;
将所述安装包的渠道号写入所述mainfest文件。
可选的,作为一个实施例,所述写入模块260用于:
通过io流读取所述mainfest文件中用于写入所述渠道号的标记位置的字符内容;
基于所述渠道号,对所述字符内容进行编译将所述渠道号写入所述标记位置。
以上所述安装包的打包装置可以实现以上方法实施例的具体过程,具体可以参照以上方法实施例中的具体内容。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。