gradle脚本定义versionCode及versionName

versionCode以及VersionName用来对应用做版本控制

versionCode

一个正整数,用作内部版本号。此数字仅用于确定某个版本是否比另一个版本更新:数字越大表示版本越新。这不是向用户显示的版本号;

Android 系统使用 versionCode 值来防止降级,方法是阻止用户安装 versionCode 低于设备上当前所安装版本的 APK

应用和发布服务不应向用户显示此版本值。

VerionName

一个字符串,用作向用户显示的版本号。您可以将此设置指定为原始字符串或对字符串资源的引用。

除了向用户显示之外,versionName 没有其他用途。

定义versionName以及versionCode

android {
  ...
  defaultConfig {
    ...
    versionCode 2
    versionName "1.1"
  }
}

查询版本信息

apk查询

aapt dump badging xxxxx.apk

Android 框架提供了一个 API,可让您向系统查询有关应用的版本信息。如需获取版本信息,packageManager的getPackageInfo(String, int)方法

自动更新版本信息脚本

策略:通过commit次数定义

#common.gradle
gradle.allprojects{
    ext {
        master_version = 1
        versionCount = getCommitCount()
        voiceSupport_versionCode = getVersionCode()
        voiceSupport_versionName = getVersionName()
    }
}

def getCommitCount(){
    println("---------- getCommitCount start ----------")
    String resultStr = null;
    Process p = Runtime.getRuntime().exec('git rev-list --count HEAD');
    InputStream fis=p.getInputStream();
    BufferedReader br=new BufferedReader( new InputStreamReader(fis,"GB2312"));
    String line=null;
    if((line=br.readLine())!=null) {
        resultStr = line;
    }
    println("----------" +  resultStr + "----------");
    return Integer.parseInt(resultStr)
}

def getVersionCode(){
    return master_version * 100000 + versionCount
}

def getVersionName(){
    return master_version.toString() + "." + versionCount.toString()
}
#build.gradle
android {

    defaultConfig {
        ...
        versionCode voiceSupport_versionCode
        versionName voiceSupport_versionName
      ...
      
    }
}

你可能感兴趣的:(gradle脚本定义versionCode及versionName)