Android VersionName和VersionCode 打包自增

第一、在項目 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
        ......
    }
 
    ......
}

//設置versionCode 自增長
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文件存放的版本號。
        def runTasks = gradle.startParameter.taskNames
        def task = ':app:assembleICBC_APPRelease' //(此處一定要注意)
        if (task in runTasks) {  //僅在每次打正式包的時候是增加版本號,普通運行下無法自增長
            properties['VERSION_CODE'] = (++versionCode).toString()
            properties.store(versionFile.newWriter(), null)
        }
 
        return versionCode
    } else {
        throw new GradleException("Could not find version.properties!")
    }
}

//獲取版本號,設置版本號自增
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() //讀取文件中的版本號
        def runTasks = gradle.startParameter.taskNames
        def task = ':app:assembleICBC_APPRelease' //此要注意 ***
        if(task in runTasks){ //僅在每次打正式包的時候是增加版本號,普通運行下無法自增長
            // 版本號自增之后再寫入文件(此處是關鍵,版本號自增+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定義容易出錯
def task = ':app:assembleICBC_APPRelease'
在打包的時候能看到這個task的值


image.png

紅框的值就是task的值,一定要寫對,要不然versionCode和versionName無法自增

OK完畢,再次總結一下。

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

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

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

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,889評論 0 13
  • 原文鏈接:https://docs.spring.io/spring-boot/docs/1.4.x/refere...
    pseudo_niaonao閱讀 4,881評論 0 9
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項,請點擊這里進行查閱:DSL參考 1.1新構建系統(tǒng)...
    Chuckiefan閱讀 12,355評論 8 72
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,619評論 1 32
  • 當一個人已空白一片,當一個人不在有感覺,那些以往,就是一個故事,每一天的過去,就是在放電影,越來越不覺得那是真實的...
    林家長生閱讀 252評論 0 0

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