一种用环境变量配置android build的方案

发布时间:2019-06-16 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了一种用环境变量配置android build的方案脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目标

  • 能方便地在CI服务器配置每个build的版本和签名信息

  • 不需要在commIT中包含keyStore, key密码等东西

  • 每个release build有一致且单调递增的版本号

  • 以上设定都是可选的,其他人仍然可以clone代码后立刻在IDE运行

设计

  • 用CI服务器的build script生成版本号

  • 签名信息只写在build script

  • 用环境变量传递版本号和签名信息

  • 没有环境变量时使用默认设置

代码

build.gradle

// 从环境变量中读取字符串或整数
def env = { System.getenv it }
def envInt = { Integer.parseint(env(it)) }

andROId {
    defaultconfig {
        if (env("ANDROID_VERSION_CODE")) {
            versionCode envInt("ANDROID_VERSION_CODE")
            versionName env("ANDROID_VERSION_NAME")
        } else {
            // 没有环境变量时的默认设置
            versionCode 1
            versionName "1.0"
        }
    }
}

if (env("ANDROID_SIGN_APK"))
// 有环境变量时 才设置apk签名信息
android {
    signingConfigs {
        releaseSigning {
            storeFile file(env("ANDROID_KEYSTORE_PATH"))
            storePassword env("ANDROID_KEYSTORE_PASS")
            keyAlias env("ANDROID_KEY_ALIAS")
            keyPassword env("ANDROID_KEY_PASS")
        }
    }

    buildTyPEs {
        release {
            signingConfig signingConfigs.releaseSigning
        }
    }
}

Jenkins的build script

#!/bin/bash

# JDK/SDK路径
export ANDROID_HOME=/somewhere/android-sdk-linux
export JAVA_HOME=/somewhere/jdk1.8.0_65

# 签名信息
export ANDROID_KEYSTORE_PATH=/somewhere/keys.jks
export ANDROID_SIGN_APK=yes
export ANDROID_KEYSTORE_PASS=secret
export ANDROID_KEY_ALIAS=secret
export ANDROID_KEY_PASS=secret

# versionCode: 从当前commit可到达的commit数量 === 祖先commit数量+1
# 如果release build都在一个固定分支, versionCode会单调增加 (但是未必是连续整数)
export ANDROID_VERSION_CODE="$(git rev-list HEAD --count)"
# versionName: 当前commit的sha1的开头8字符
export ANDROID_VERSION_NAME="${GIT_COMMIT:0:8}"

exec sh gradlew clean aR

脚本宝典总结

以上是脚本宝典为你收集整理的一种用环境变量配置android build的方案全部内容,希望文章能够帮你解决一种用环境变量配置android build的方案所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。