shell 脚本自动发布 APP

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

猜你喜欢

转载自blog.csdn.net/CHITTY1993/article/details/78600084