Android通过母包构建渠道包

环境

  • 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();

校验apk签名

  • 格式
jarsigner -verify -verbose -certs 
  • 示例
jarsigner -verify -verbose -certs /Users/cary/Documents/test/apk/build/archives/app-release-Ali.apk

你可能感兴趣的:(Android通过母包构建渠道包)