Android发版、备份自动化之路
2016-01-20 小文字
前言
- 自动化脚本在项目开发和管理中非常重要,不但可以简化工作也更加安全,不会像人工操作遗漏步骤
- 在日常管理项目和版本迭代中,为了方便,根据公司项目的现状,笔者陆续建立和完善了相应的打包备份脚本,经过历次迭代,效果还不错;
通过脚本解决了什么问题?
- 首先自然是打包,生成发行用的apk文件;
- 签名验证,确认生成的包是符合发行的签名;
- 资源压缩,如css,js文件;
- 记录发版日志,比如当前打包的git摘要,时间,作者,版本信息;
- 自动安装,根据有无设备连接,自动安装至设备;
逐一实现目标
过去打包,很多时候用的ant,自gradle在android领域内兴起的这两年,脚本也慢慢都转向了支持gradle;
./gradlew clean assemble"$flavor"Release
这里根据输入的flavor进行release;
得到签名文件后,可以对其做签名验证
signature=`unzip -p build/outputs/apk/android-$flavor-armeabi-release.apk META-INF/CERT.RSA | keytool -printcert | grep MD5`
checkfail "Release failed: flavor=$flavor"
解压安装包,读取签名摘要,和正式签名文件的MD5值作比较;
接下来将验证通过的apk和mapping信息备份;
echoInfo "Copy file to backup"
folderName="v$version"
mkdir release/$folderName
cp -rf build/outputs/apk/android-$flavor-armeabi-release.apk release/$folderName/
cp -rf build/outputs/mapping release/$folderName/
echoShipLog $flavor $version
最后可以适当清理一下打包过程中产生的垃圾文件,部署apk至android设备
cleanTemp(){
echoInfo "Cleaning temporary files..."
git checkout assets/md/* tools/geek.keystore tools/geek.properties
}
launchApp(){
adb shell am start -n $LAUNCH_PAGE -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
}
效果
各个目标点都实现后,整体串联起来;加上细节判断,下面完整的脚本代码;