要实现以上命名规范只需要在 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 时就会打出相应的符合命名规范的包名
#!/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 .