返回

Android V2 签名下多渠道快速打包方案

Android

欢迎阅读这篇文章,我将分享在 Android V2 签名下快速高效进行多渠道打包的方案,希望对您有所帮助。

背景

本人作为小米系统应用组的一员,之前发布应用时只通过应用商店这一渠道,因此仅需提供一个 APK。但随着应用外发版本的开发,该版本包含广告、推送等功能,需要面向多个下载渠道进行发布。为统计各渠道的日活、转化率等数据,我们需要进行多渠道打包。

方案探索

传统的多渠道打包方案依赖于手动修改清单文件,这不仅繁琐且容易出错。因此,我们需要一种自动化、高效的解决方案。

1. VasDolly

VasDolly 是腾讯开源的多渠道打包工具,具备强大的功能和丰富的渠道支持。但是,VasDolly 需要进行签名,可能会带来额外的安全风险。

2. Wall

Wall 是美团开源的多渠道打包工具,支持 V2 签名,无需额外签名。但 Wall 的渠道支持较少,且需要修改工程结构,不利于维护。

3. 自研脚本

为了满足我们的具体需求,我们决定自研一套多渠道打包脚本,充分发挥 V2 签名免签名的优势。

自研脚本方案

我们的自研脚本方案基于 V2 签名机制,不需要对 APK 额外签名。具体实现步骤如下:

  1. 修改 Gradle 配置,添加 V2 签名信息:
signingConfigs {
    release {
        v2SigningEnabled true
        storeFile file('...')
        storePassword '...'
        keyAlias '...'
        keyPassword '...'
    }
}
  1. 创建渠道文件,配置渠道信息:
channel.properties
name=channel1
versionCode=1
versionName=1.0.0
  1. 编写打包脚本,读取渠道文件,生成渠道 APK:
#!/bin/bash

channel_file=$1
while read line
do
    channel=$(echo $line | cut -d'=' -f1)
    value=$(echo $line | cut -d'=' -f2)
    echo "打包渠道:$channel"

    # 修改清单文件,更新渠道信息
    sed -i "s/channel/$channel/g" ./src/main/AndroidManifest.xml

    # 打包 APK
    ./gradlew clean assemble${value}Release

    # 恢复清单文件
    git checkout ./src/main/AndroidManifest.xml
done < $channel_file

使用说明

  1. 修改 channel.properties 文件,配置各渠道信息。
  2. 执行打包脚本:./pack.sh channel.properties

优势

该方案具有以下优势:

  • 无需额外签名,安全可靠。
  • 支持 V2 签名,兼容 Android 12+。
  • 自动化打包,提高效率。
  • 渠道信息配置灵活,易于维护。

总结

通过自研脚本方案,我们实现了 Android V2 签名下的多渠道快速打包,既满足了我们的需求,又提升了打包效率。希望这篇文章对您有所启发。