devtool.sh 脚本:
#!/usr/local/bin/bash -e
#########################################
# Main
#########################################
function doBuildApk (){
echo "========================================"
echo "Build apk begin ..."
echo "========================================"
cd ..
fastlane do_pack_apk
echo "========================================"
echo "Build apk OK."
echo "========================================"
}
#########################################
# LEGU Reinforce
#########################################
function doLegu (){
echo "========================================"
echo "LEGU Reinforce Begin ..."
echo "========================================"
cd libs
java -jar leguapi.jar skey sid ../build/outputs/apk/xxx.apk ../build/outputs/apk
}
#########################################
# Rename apk
#########################################
function doRename (){
echo "========================================"
echo "Rename Apk Begin ..."
echo "========================================"
cd build/outputs/apk
mv xxx_legu.apk xxx.apk
cd ../../../..
echo "========================================"
echo "Rename Apk OK."
echo "========================================"
}
#########################################
# Sign Again
#########################################
function doSign (){
echo "========================================"
echo "Sign Begin ..."
echo "========================================"
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keypass {密码} -storepass {密码} -keystore {签名文件}(keystore.jks) build/outputs/apk/xxx.apk keystore
echo "========================================"
echo "Sign OK."
echo "========================================"
}
#########################################
# Login beta fir.im
#########################################java
function doLoginBetaFirim(){
echo "========================================"
echo "Login beta fir.im begin ..."
echo "========================================"
fir login {API token}
echo "========================================"
echo "Login beta fir.im OK."
echo "========================================"
}
#########################################
# Login stag fir.im
#########################################java
function doLoginStagFirim(){
echo "========================================"
echo "Login stag fir.im begin ..."
echo "========================================"
fir login {API token}
echo "========================================"
echo "Login stag fir.im OK."
echo "========================================"
}
#########################################
# Login release fir.im
#########################################
function doLoginReleaseFirim(){
echo "========================================"
echo "Login release fir.im begin ..."
echo "========================================"
fir login {API token}
echo "========================================"
echo "Login release fir.im OK."
echo "========================================"
}
#########################################
# Upload apk to fir.im
#########################################
function doUploadApk2Firim(){
echo "========================================"
echo "UpLoad apk to fir.im begin ..."
echo "========================================"
fir publish --changelog='changelog' build/outputs/apk/xxx.apk
echo "========================================"
echo "UpLoad apk to fir.im OK."
echo "========================================"
}
#########################################
# Process Args
#########################################
COMMAND=$1
echo "Ready Go !"
shift 1 || true
case "${COMMAND}" in
build)
doBuildApk
;;
reinforce)
doLegu
;;
rename)
doRename
;;
sign)
doSign
;;
beta:login)
doLoginBetaFirim
;;
stag:login)
doLoginStagFirim
;;
release:login)
doLoginReleaseFirim
;;
upload)
doUploadApk2Firim
;;
esac
其中,build 是用 fastlane 实现的,Fastfile 中
desc "Do pack an apk to common flavor"
lane :do_pack_apk do |options|
gradle(task: "clean")
gradle(task: "assemble")
gradle(build_type: "Release")
end
,上传 fir.im 是用 fir-cli 插件实现的。
发布版本时,执行脚本自动化命令:
1、流程:
自动化构建(fastlane)、腾讯乐固加固、重命名 apk、重新签名、登录 fir.im 、上传 apk:
进入 devtool 的根目录下(devtool.sh 文件右下方必须为 LF)
cd xxx
./devtool.sh build
./devtool.sh reinforce
./devtool.sh rename
./devtool.sh sign
./devtool.sh beta:login 或 ./devtool.sh release:login 或 ./devtool.sh stag:login
./devtool.sh upload