一、配置androidGitVersion,通过它可以自动生成versionCode和versionName(注:需要通过git tag 的方式提交才会生成)
1、在项目build.gradle文件中引入androidGitVersion
需要先把maven { url "https://plugins.gradle.org/m2/" } 加入repositories中
然后导入 classpath "gradle.plugin.com.gladed.gradle.androidgitversion:gradle-android-git-version:4.0.7
2、在主module中添加
apply plugin: 'com.gladed.androidgitversion'
二、.gitlab-ci.yml文件配置(配置脚本运行的环境,主要在指定目录生成apk包,并配置build和deploy的运行条件,此处只有在tag push的时候才进行huild和deploy操作)
variables: ANDROID_HOME: /home/runner/opt/android_sdk ANDROID_NDK_HOME: /home/runner/opt/android_ndk stages: - build - deploy assembleRelease: stage: build script: ./gradlew assembleRelease artifacts: paths: - app/build/outputs/apk/a/release/* only: - tags deploy: stage: deploy script: ./script/deploy.sh only: - tags
三、deploy.sh文件配置(在指定地址生成版本更新信息的json串,apk通过获取它来判断是否有新的更新)
#!/bin/bash ./gradlew --quiet androidGitVersion | sed 's/androidGitVersion.name/version/' \ | sed 's/androidGitVersion.code/versionCode/' \ | awk 'BEGIN{print "{"} {printf "%s\"%s\":\"%s\"",sep,$1,$2; sep=",\n"} END{print "\n}"}' > update.json scp app/build/outputs/apk/a/release/*.apk ubuntu@192.168.1.1:/var/www/html/b/apk/ scp update.json ubuntu@192.168.1.1:/var/www/html/b/apk/