Android编译时自动获取Svn版本号,设置应用版本号和版本名称


1. 现在project的build.gralde中的dependencies中添加svnkit这个依赖

dependencies {

        classpath 'com.android.tools.build:gradle:3.0.0'

        classpath group: 'org.tmatesoft.svnkit', name: 'svnkit', version: '1.8.11'

}

2. 获取svn版本信息

在module的buil.gradle上方添加

import org.tmatesoft.svn.core.wc.*

apply plugin: 'com.android.application'

获取版本号

def getSvnRevision() {

        ISVNOptions options = SVNWCUtil.createDefaultOptions(true)

        SVNClientManager clientManager = SVNClientManager.newInstance(options)

        SVNStatusClient statusClient = clientManager.getStatusClient()

        SVNStatus status = statusClient.doStatus(projectDir, false)

        SVNRevision revision = status.getCommittedRevision()

        return revision.getNumber()

}

3. 配置你的应用版本信息

defaultConfig {

        applicationId "XXX"

        minSdkVersion 17

        targetSdkVersion 21

        versionCode getSvnRevision().toInteger()

        versionName "V1.1." + getSvnRevision() + "-" + getCurTime()

}

4. 配置apk输出名称

gradle3.0以下配置

android.applicationVariants.all { variant ->

        variant.outputs.each { output ->

        def outputFile = output.outputFile

                if (outputFile != null && outputFile.name.endsWith('.apk')) {

                        //这里修改apk文件名

                        def fileName = "应用名称-${defaultConfig.versionName}.apk"

                        output.outputFile = new File(outputFile.parent, fileName)

                }

    }

}

gradle3.0以上配置

android.applicationVariants.all { variant ->

        variant.outputs.all {

        outputFileName = "4KBarIPTV-Netty-${defaultConfig.versionName}.apk"

        }

}

获取当前时间日期函数

def getCurTime(){

        return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))

}

>在编译时记得更新svn

你可能感兴趣的:(Android编译时自动获取Svn版本号,设置应用版本号和版本名称)