简介
使用该工具打包速度超快。
使用最新的美团多渠道打包框架, 支持V1 V2签名.支持多Flavors。
最新的美团打包框架已经解决了v1 v2签名适配的问题。
多渠道打包步骤
应用场景: 多Flavors 多渠道. 应用包需要加固.
备注:根据上面的应用场景,应用包需要加固,并且拥有多个Flavors和多个渠道.我们需要选择脚本打包,而不是gradle命令打包.因为涉及到加固,加固过程中会导致gradle生成的多渠道包获取不到渠道名信息,为了保证能够正确获取渠道信息,生成多渠道包的操作必须在最后一步操作,所以选择使用脚本打包。
多渠道打包步骤可分五步:
1)依赖美团多渠道打包工具,使用该工具的API获取渠道信息(代码设置友盟框架获取渠道信息)。
2)使用studio生成一个release包。
3)加固包
4)手动对加固的包进行v1 v2签名
5)使用美团多渠道 脚本 打包工具生成多渠道包
1)依赖美团多渠道打包库
1.1 在项目中添加如下配置
// build.gradle
buildscript {
dependencies{
classpath 'com.mcxiaoke.packer-ng:plugin:2.0.1'
}
}
1.2 在模块中添加如下配置
apply plugin: 'packer'
// build.gradle
dependencies {
compile 'com.mcxiaoke.packer-ng:helper:2.0.1'
}
备注:使用脚本打包,不需要再有其它配置;如果需要使用Gradle来生成多渠道包,就需要配置插件,在模块gradle中指定渠道文件等
1.3代码中读取渠道
// 如果没有找到渠道信息或遇到错误,默认返回的是""
// com.mcxiaoke.packer.helper.PackerNg
String channel = PackerNg.getChannel(Context)
备注: 我们可以根据渠道名来获取对应的渠道号等信息。
1.4设置友盟框架获取渠道信息
由于友盟框架一般是在清单文件中获取渠道信息,但更改了打包方式后,我们不会在gradle文件和 清单文件中设置渠道信息,所以我们需要通过上述代码获取渠道信息后PackerNg.getChannel(Context),再手动设置给友盟框架。
(不同版本的友盟框架API不一样)
示例如下:
手动设置渠道名 渠道号
MobclickAgent.startWithConfigure(new MobclickAgent.UMAnalyticsConfig(
上下文, “友盟KEY”,“渠道名”));
2)使用studio生成一个release包。
使用studio生成一个线上包,如果有多个Flovers,就生成多少个。每个Flovers生成一个即可。
3)加固包
使用加固工具对其进行加固
4)手动对加固的包进行v1 v2签名
v1 v2签名资料一
v1 v2签名资料二
示例:
4.1找到签名工具apksigner.jar
使用搜索工具Everything轻松搜索apksigner.jar的所在位置。它存在于sdk\build-tools\的子目录下
4.2运行cmd,进入到该目录。如下图:
4.2 使用apksigner.jar工具对加固包进行v1 v2签名
示例:
java -jar apksigner.jar sign --ks key.jks --ks-key-alias releasekey --ks-pass pass:pp123456 --key-pass pass:pp123456 --out output.apk input.apk
下面都是根据我自己的文件路径写的,使用者只需替换成自己的路径即可。
备注:
1)第三步加固后的包文件名与被签名的apk文件名一致,如下就的文件名就是"input.apk".
2)在签名前,需要将加固包复制一份放在输出路径上,并更名为对应的输出包文件名。如下输出文件名就是app.apk。如果不复制一份在该路径,会导致签名时报错:找不到输出包文件app.apk。
apksigner sign --ks D:\SVN\app.keystore --ks-key-alias bieming --ks-pass pass:"123" --key-pass pass:"123" --out D:\github_\packer-ng-reinforce-master\out\app.apk D:\github_\packer-ng-reinforce-master\input\input.apk
4.3检测签名是否成功
apksigner verify -v 签名包绝对路径
示例:
查看V1 v2签名是否成功。
备注:较多开发者之前使用了V1签名,而没有使用v2签名,同时关于360加固等加固工具造成的签名问题,可以如下解决:
在加固后使用apksigner工具签名v1 v2签名,这样就可解决v1 v2签名的兼容性问题,正常获取渠道包信息,而且也满足加固要求。
apksigner verify -v D:\Android\nice\out_apk\app.apk
5)使用美团多渠道 脚本 打包工具生成多渠道包
5.1下载美团脚本打包工具
将美团多渠道打包库中该文件夹复制出来,放至任一位置(根据自己需求)
5.2将上述加固后进行v1 v2签名的包放在该文件夹下。我将该包命名为“app.apk”(根据自己需要,可以随便命名)
5.3设置渠道信息
创建一个channels.txt文件,并将渠道信息如下格式写入该文本
5.4生成多渠道包
cmd 进入到项目的tools文件夹下. 并将上面已经签名的apk放到tools文件夹下面. 然后执行下面的命令
packer-ng-2.0.1.jar generate --channels=@channels.txt --output=build/archives app.apk
执行命令后会自动生成\tools\build\archives文件夹,并在其文件夹下生成对应的多渠道包。渠道包的名字和数量是由channels.txt文件来决定的。
备注:生成文件名的规则是 原包文件名+“-”+“渠道名”.apk