Android VersionName和VersionCode 打包自增

第一、在項(xiàng)目 app 創(chuàng)建文件version.properties


image.png

[version.properties]

第二、在version.properties中創(chuàng)建
VERSION_CODE = YOUR CODE (比如 110)
VERSION_NAME = YOUR NAME (比如 1.1.0)

image.png

第三、在app.build中android{ .... } 中寫入如下代碼:
def versionCode = getVersionCode()
def versionName = getVersionName()
這兩句不要在defaultConfig{ .. }中添加,接著在defaultConfig中
versionCode = versionCode
versionName = versionName

全部代碼:

apply plugin: 'com.android.application'
 
android {
 
    def versionCode = getVersionCode()
    def versionName = getVersionName()
 
    defaultConfig {
        ......
 
        versionCode versionCode
        versionName versionName
        ......
    }
 
    ......
}

//設(shè)置versionCode 自增長(zhǎng)
def getVersionCode() {
    def versionFile = file('version.properties')
    if (versionFile.canRead()) {
        Properties properties = new Properties()
        properties.load(new FileInputStream(versionFile))
        def versionCode = properties['VERSION_CODE'].toInteger()//讀取  version.properties文件存放的版本號(hào)。
        def runTasks = gradle.startParameter.taskNames
        def task = ':app:assembleICBC_APPRelease' //(此處一定要注意)
        if (task in runTasks) {  //僅在每次打正式包的時(shí)候是增加版本號(hào),普通運(yùn)行下無(wú)法自增長(zhǎng)
            properties['VERSION_CODE'] = (++versionCode).toString()
            properties.store(versionFile.newWriter(), null)
        }
 
        return versionCode
    } else {
        throw new GradleException("Could not find version.properties!")
    }
}

//獲取版本號(hào),設(shè)置版本號(hào)自增
def getVersionName(){
    def versionFile = file('version.properties')
    if(versionFile.canRead()){ //判斷文件讀取異常
        Properties versionProps = new Properties()
        versionProps.load(new FileInputStream(versionFile))
        def versionName = versionProps['VERSION_NAME'].toString() //讀取文件中的版本號(hào)
        def runTasks = gradle.startParameter.taskNames
        def task = ':app:assembleICBC_APPRelease' //此要注意 ***
        if(task in runTasks){ //僅在每次打正式包的時(shí)候是增加版本號(hào),普通運(yùn)行下無(wú)法自增長(zhǎng)
            // 版本號(hào)自增之后再寫入文件(此處是關(guān)鍵,版本號(hào)自增+1)
            versionProps['VERSION_NAME'] = ++versionName
            versionProps.store(versionFile.newWriter(),null)
            print('ICBC versionName : ' + versionName)
        }
        return versionName
    }else{
        throw new GradleException("Could not find version.properties!")
    }
}

第四 變量task定義容易出錯(cuò)
def task = ':app:assembleICBC_APPRelease'
在打包的時(shí)候能看到這個(gè)task的值


image.png

紅框的值就是task的值,一定要寫對(duì),要不然versionCode和versionName無(wú)法自增

OK完畢,再次總結(jié)一下。

后記:VERSION_NAME = YOUR NAME (比如 1.1.0)設(shè)置成這種格式,不適合自增加,還需手動(dòng)設(shè)置為好。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,932評(píng)論 0 13
  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,900評(píng)論 0 9
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請(qǐng)點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,371評(píng)論 8 72
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,683評(píng)論 1 32
  • 當(dāng)一個(gè)人已空白一片,當(dāng)一個(gè)人不在有感覺(jué),那些以往,就是一個(gè)故事,每一天的過(guò)去,就是在放電影,越來(lái)越不覺(jué)得那是真實(shí)的...
    林家長(zhǎng)生閱讀 270評(píng)論 0 0

友情鏈接更多精彩內(nèi)容