返回
Android V2 签名下多渠道快速打包方案
Android
2023-10-10 10:38:03
欢迎阅读这篇文章,我将分享在 Android V2 签名下快速高效进行多渠道打包的方案,希望对您有所帮助。
背景
本人作为小米系统应用组的一员,之前发布应用时只通过应用商店这一渠道,因此仅需提供一个 APK。但随着应用外发版本的开发,该版本包含广告、推送等功能,需要面向多个下载渠道进行发布。为统计各渠道的日活、转化率等数据,我们需要进行多渠道打包。
方案探索
传统的多渠道打包方案依赖于手动修改清单文件,这不仅繁琐且容易出错。因此,我们需要一种自动化、高效的解决方案。
1. VasDolly
VasDolly 是腾讯开源的多渠道打包工具,具备强大的功能和丰富的渠道支持。但是,VasDolly 需要进行签名,可能会带来额外的安全风险。
2. Wall
Wall 是美团开源的多渠道打包工具,支持 V2 签名,无需额外签名。但 Wall 的渠道支持较少,且需要修改工程结构,不利于维护。
3. 自研脚本
为了满足我们的具体需求,我们决定自研一套多渠道打包脚本,充分发挥 V2 签名免签名的优势。
自研脚本方案
我们的自研脚本方案基于 V2 签名机制,不需要对 APK 额外签名。具体实现步骤如下:
- 修改 Gradle 配置,添加 V2 签名信息:
signingConfigs {
release {
v2SigningEnabled true
storeFile file('...')
storePassword '...'
keyAlias '...'
keyPassword '...'
}
}
- 创建渠道文件,配置渠道信息:
channel.properties
name=channel1
versionCode=1
versionName=1.0.0
- 编写打包脚本,读取渠道文件,生成渠道 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
使用说明
- 修改
channel.properties
文件,配置各渠道信息。 - 执行打包脚本:
./pack.sh channel.properties
。
优势
该方案具有以下优势:
- 无需额外签名,安全可靠。
- 支持 V2 签名,兼容 Android 12+。
- 自动化打包,提高效率。
- 渠道信息配置灵活,易于维护。
总结
通过自研脚本方案,我们实现了 Android V2 签名下的多渠道快速打包,既满足了我们的需求,又提升了打包效率。希望这篇文章对您有所启发。