前言
作为Android开发经常需要打包提交测试,多数情况我们都是通过Android studio手动点点进行,后来项目由于环境较多(开发,测试,预发布,发布等),手动打包就容易出错,所以后边就引起通过脚本打包提升效率和准确的需求。
内容部分
-
编写脚本前,需要在app目录下的build.gradle中进行相关证书配置。
注意signingConfigs需要在用它之前声明
// storeFile 文件放到app目录下直接写文件名即可 signingConfigs{ debug { keyAlias '别名' keyPassword '密码' storeFile file('签名文件路径') storePassword '密码' } release { keyAlias '别名' keyPassword '密码' storeFile file('签名文件路径') storePassword '密码' } }
-
声明完成签名信息后,在构建配置中引用,如下:
buildTypes { release { ...省略 signingConfig signingConfigs.release } debug { ...省略 signingConfig signingConfigs.debug } }
-
然后就是配置多渠道打包的维度了,我简单配置几个,代码如下:
//先定义变种维度 defaultConfig{ flavorDimensions "versionCode" } productFlavors{ dev{ dimension "version" // 服务端接口地址 buildConfigField "String", "API_BASE_URL", '"http://test.com/"' } sit{ dimension "version" // 服务端接口地址 buildConfigField "String", "API_BASE_URL", '"http://test.com/"' } pub{ dimension "version" // 服务端接口地址 buildConfigField "String", "API_BASE_URL", '"http://test.com/"' } }
配置完成后就可以build variants 中找到你设置的多渠道打包命令了,如下图:
配置中使用不同的host,代码可以直接引用,通过BuildConfig.API_BASE_URL实现切换不同的host。
配置到这里就可以实现版本区分打包了,通过Android studio进行不同的操作,打包出不同host的包了。
shell脚本编写
脚本的时间其实就是自动化了打包的步骤,代替我们一步一步点的操作。这里使用shell脚本,贴出核心代码吧。
#通过不同的表示标识来确定执行不同的打包命令
echo "开始执行build======================"
echo "flavor ${flavor}"
# 开始构建apk
flavor="dev"
if [[ ${runEnvNumber} == 1 ]];then
flavor="dev"
gradlew clean assembleDevRelease
elif [[ ${runEnvNumber} == 2 ]];then
flavor="sit"
gradlew clean assembleSitRelease
elif [[ ${runEnvNumber} == 3 ]];then
flavor="pub"
gradlew clean assemblePubRelease
else
flavor="dev"
gradlew clean assembleDevRelease
fi
后续就是把apk包移动到指定的目录:
# 最终的apk文件
# 拷贝文件到指定目录
buildSourcePath="app/build/outputs/apk/$flavor"
apkSourcePath=$(find ${buildSourcePath} -name "*.apk")
echo "apk source path========"
echo "$apkSourcePath"
echo "apk source path========"
# 构建目录,并拷贝
rm -rf $buildPath
mkdir $buildPath
echo "====copy apk source path===="
cp $apkSourcePath $buildPath
apkPath=$(find ${buildPath} -name "*.apk")
finalPath=${apkPath}
echo "finalPath ====="
echo "$finalPath"
再后来就是上传蒲公英/fir啥的啦,这里就不赘述了。具体可以看官方的文档了。
还是贴个fir的代码吧,API比较简单:文章来源:https://www.toymoban.com/news/detail-698624.html
#!/usr/bin/env bash
echo "清除登录信息"
rm -f $HOME/.fir-cli
path=$1
desc=$2
echo "上传path $path "
echo "上传描述 ${desc} "
upload() {
echo "开始上传"
fir publish "${path}" -c "${desc}" --force-pin-history
}
me=$(fir me|grep 'ERROR')
if [[ $me ]];then
echo "登录"
fir login '你的fir token'
upload
else
upload
fi
结尾
脚本的合理使用能够给我们节省很多时间,并且产生错误的概率很低。就这些,谢谢观看!文章来源地址https://www.toymoban.com/news/detail-698624.html
到了这里,关于Android打包脚本和上传apk托管平台的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!