最近在给测试打包的过程中, 总是感觉略显麻烦,
需要以下步骤:
1. 执行 ./gradlew clean assembleGoogleRelease 打包名
2. 本地备份 相应的Apk 以及相应的mapping 文件
3. 发送给测试
1 2 步骤感觉很是麻烦, 需要把打好的包 以及mapping文件手动copy 一份到自己的磁盘中, 同时还要修改相应的文件名称很是麻烦,想说能不通过一些 脚本, 把这两步合并起来
对了需要说明的是我们打出来的APK 是已经符
合我们公司制定命名规范 如下:
ZUILocker_v1.8.8_10_27_19_30.apk
ZUILocker 是英语名称
v1.8.8 表示版本号
10_27_19_30 表示 10月27日19时30分打的包
要实现以上命名规范只需要在 build.gradle 中加入如下配置
buildTypes {
release {
debuggable false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('release.apk')) {
def timeStamp = new Date().format('MM_dd_HH_mm');
def fileName = "ZUILocker_v${defaultConfig.versionName}"+"_" + timeStamp + ".apk";
output.outputFile = file("${outputFile.parent}/${fileName}")
}
}
}
}
debug {
debuggable true
versionNameSuffix ".dev"
}
}
入如上的配置 在执行./gradlew assembleGoogleRelease 时就会打出相应的符合命名规范的包名
ok 接下来说 上面1,2 步骤 通过脚本合并的问题 我写的脚本文件如下
#!/bin/sh
echo "hello shell"
appName="ZUILocker"
./gradlew clean assembleGoogleRelease
# 获取当前达到的包 ,应为安装命名规范来, 所以最新的达到的包是在最后面
for file in `ls -d app/build/outputs/apk/${appName}*`;
do
echo $file
done
# 获取Apk 的名字 这里是ZUILocker
echo ${file}
apkName=${file%%_*}
apkName=${apkName##*/}
echo "apkName = "${apkName}
# 更名名称解析处版本号
version=${file#*_}
version=${version%%_*}
echo "version = "${version}
# 获取mapping对应的文件名
cpMappingName=${file##*/}
cpMappingName=${cpMappingName%.*}
echo "cpMappingName = "${cpMappingName}
# 这里写死了 mapping文件的路径
mapping="app/build/outputs/mapping/google/release/mapping.txt"
echo "mapping = "${mapping}
# 备份apk mapping文件的地址
cpDir="/Users/${USER}/Documents/ZuiPackage/"${apkName}"/"${version}
# 创建备份地址
if [ -d ${cpDir} ]
then
echo have dir
else
mkdir -p ${cpDir}
fi
# 复制 apk 以及mapping文件
echo "cpDir = "${cpDir}
cp ${file} ${cpDir}
cp ${mapping} ${cpDir}"/"${cpMappingName}"_"mapping.txt
# 打开finder 方便把apk 发给测试
cd app/build/outputs/apk/
open .
使用以上脚本确实方便了很多在这里分享给大家.
shell 不是很熟悉 所以以上脚本有些地方还有待改善