1. 程式人生 > >利用gradle新增構建版本號

利用gradle新增構建版本號

在java的程式中,貌似都沒有這個構建版本號的概念,用的諸如eclipse, idea和android studio的IDE也沒有直接提供構建版本號的選項。不過我卻想在android程式的版本號當中新增一個構建版本號,當然,這個只是個人的蛋疼需求。雖然在stackoverflow上看到其他人也有這種需求,但相信人不多。

這裡分享一下我的解決方法。

首先在app的build.gradle中的android方法裡面,把defaultConfig的程式碼替換成以下程式碼:

    def verName = "1.0.0"
    def suffix = "(RC)"

    defaultConfig {
        applicationId "cn.irains.access.v2"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 5
        versionName verName + suffix
    }

    def versionPropsFile = file('version.properties')

    if (versionPropsFile.canRead()) {
        def Properties versionProps = new Properties()

        versionProps.load(new FileInputStream(versionPropsFile))

        def name = versionProps['VERSION_NAME'].toInteger()

        def runTasks = gradle.startParameter.taskNames
        if ('b' in runTasks || 'build' in runTasks ) {
            name++
        }

        versionProps['VERSION_NAME']=name.toString()
        versionProps.store(versionPropsFile.newWriter(), null)
        defaultConfig {
            versionName verName + "." + name + suffix
        }
    }

    android.applicationVariants.all { variant ->
        def file = variant.outputFile
        variant.outputFile = new File(file.parent, file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
    }

上面的android.applicationVariant.all就是指定了新的apk的檔名。前面的一大堆程式碼都是構建版本號的邏輯。因為是構建版本號,所以先讀取任務,僅在任務為b(build的縮寫)或build的情況下,版本號才加一。

然後我們還需要在build.gradle的同級目錄下建立一個叫version.properties的檔案,用於儲存構建版本號。

完成之後,構建一下試試吧。