环境
- Android打包工具:packer-ng (v2.0.1)
packer-ng 项目介绍
packer-ng-plugin 是Android渠道打包工具Gradle插件,支持极速打包,可方便的用于CI系统集成,同时提供命令行打包脚本,渠道读取提供Python和C语言的实现。
修改项目配置
// build.gradle
buildscript {
dependencies{
classpath 'com.mcxiaoke.packer-ng:plugin:2.0.1'
}
}
修改模块配置
apply plugin: 'packer'
// build.gradle
dependencies {
implementation 'com.mcxiaoke.packer-ng:helper:2.0.1'
}
插件配置示例
packer {
archiveNameFormat = '${buildType}-v${versionName}-${channel}'
archiveOutput = new File(project.rootProject.buildDir, "apks")
channelList = ['Channel1', 'Channel2', 'Channel3']
// channelFile = new File(project.rootDir, "markets.txt")
// channelMap = [
// "Cat" : project.rootProject.file("channels/cat.txt"),
// "Dog" : project.rootProject.file("channels/dog.txt"),
// "Fish": project.rootProject.file("channels/channels.txt")
// ]
}
- archiveNameFormat - 指定最终输出的渠道包文件名的格式模版,详细说明见后面,默认值是
${appPkg}-${channel}-${buildType}-v${versionName}-${versionCode}
(可选) - archiveOutput - 指定最终输出的渠道包的存储位置,默认值是
${project.buildDir}/archives
(可选) - channelList - 指定渠道列表,List类型,见示例
- channelMap - 根据productFlavor指定不同的渠道列表文件,见示例
- channelFile - 指定渠道列表文件,File类型,见示例
注意:channelList
/ channelMap
/ channelFile
不能同时使用,根据实际情况选择一种即可,三个属性同时存在时优先级为: channelList
> channelMap
> channelFile
,另外,这三个属性会被命令行参数 -Pchannels
覆盖。
通过母包构建渠道包
- 格式
java -jar tools/packer-ng-2.0.1.jar generate --channels=<渠道1>,<渠道2>,<渠道3> --output=<输出路径><空格><母包apk完整路径>
- 示例
java -jar tools/packer-ng-2.0.1.jar generate --channels=Huawei,Xiaomi,Ali --output=/Users/cary/Documents/test/apk/build/archives /Users/cary/Documents/test/apk/app-release.apk
app通过代码获取渠道名
String channel = PackerNg.getChannel(<Context>);
校验apk签名
- 格式
jarsigner -verify -verbose -certs <apk完整路径>
- 示例
jarsigner -verify -verbose -certs /Users/cary/Documents/test/apk/build/archives/app-release-Ali.apk
网友评论