久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

具有 gradle 額外屬性的自動(dòng)增量版本代碼

Autoincrement VersionCode with gradle extra properties(具有 gradle 額外屬性的自動(dòng)增量版本代碼)
本文介紹了具有 gradle 額外屬性的自動(dòng)增量版本代碼的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!

問題描述

我正在使用 gradle 構(gòu)建一個(gè) Android 應(yīng)用.到目前為止,我使用 Manifest 文件來增加 versionCode,但我想從外部文件中讀取 versionCode,并根據(jù)它是發(fā)布風(fēng)格還是調(diào)試風(fēng)格來增加 versionCode.我嘗試了額外的屬性,但你無法保存它們,這意味著下次我構(gòu)建它時(shí),我會(huì)得到相同的 versionCode.任何幫助將不勝感激!

I'm building an Android app with gradle. Until now I used the Manifest file to increase the versionCode, but I would like to read the versionCode from an external file and depending if it is the release flavor or the debug flavor increase the versionCode. I tried the extra properties, but you can't save them, which means that next time I build it I'm getting the same versionCode. Any help would be very much appreciated!

project.ext{
    devVersionCode = 13
    releaseVersionCode = 1
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile project(':Cropper')
    compile "com.android.support:appcompat-v7:18.0.+"
    compile "com.android.support:support-v4:18.0.+"
    compile fileTree(dir: 'libs', include: '*.jar')
}

def getReleaseVersionCode() {
    def version = project.releaseVersionCode + 1
    project.releaseVersionCode = version
    println sprintf("Returning version %d", version)
    return version
}

def getDevVersionCode() {
    def version = project.devVersionCode + 1
    project.devVersionCode = version
    println sprintf("Returning version %d", version)
    return version
}


def getLastVersioName(versionCode) {
    return "0.0." + versionCode
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }
    }

    buildTypes {
        release {
            runProguard true
            proguardFile getDefaultProguardFile('proguard-android-optimize.txt')
            proguardFile 'proguard.cfg'
            debuggable false
            signingConfig null
            zipAlign false
        }
        debug {
            versionNameSuffix "-DEBUG"
        }
    }
    productFlavors {
        dev {
            packageName = 'com.swisscom.docsafe.debug'
            versionCode getDevVersionCode()
            versionName getLastVersioName(project.devVersionCode)
        }
        prod {
            packageName = 'com.swisscom.docsafe'
            versionCode getReleaseVersionCode()
            versionName getLastVersioName(project.releaseVersionCode)
        }
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.8'
}

推薦答案

我想從外部文件中讀取版本代碼

I would like to read the versionCode from an external file

我確信有許多可能的解決方案;這是一個(gè):

I am sure that there are any number of possible solutions; here is one:

android {
    compileSdkVersion 18
    buildToolsVersion "18.1.0"

    def versionPropsFile = file('version.properties')

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

        versionProps.load(new FileInputStream(versionPropsFile))

        def code = versionProps['VERSION_CODE'].toInteger() + 1

        versionProps['VERSION_CODE']=code.toString()
        versionProps.store(versionPropsFile.newWriter(), null)

        defaultConfig {
            versionCode code
            versionName "1.1"
            minSdkVersion 14
            targetSdkVersion 18
        }
    }
    else {
        throw new GradleException("Could not read version.properties!")
    }

    // rest of android block goes here
}

此代碼需要一個(gè)現(xiàn)有的 version.properties 文件,您將在第一次構(gòu)建之前手動(dòng)創(chuàng)建該文件以具有 VERSION_CODE=8.

This code expects an existing version.properties file, which you would create by hand before the first build to have VERSION_CODE=8.

此代碼只是在每次構(gòu)建時(shí)增加版本代碼 - 您需要擴(kuò)展該技術(shù)以處理每個(gè)風(fēng)味的版本代碼.

This code simply bumps the version code on each build -- you would need to extend the technique to handle your per-flavor version code.

您可以看到 版本控制示例項(xiàng)目代碼.

這篇關(guān)于具有 gradle 額外屬性的自動(dòng)增量版本代碼的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內(nèi)容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內(nèi)容侵犯了您的權(quán)益,請聯(lián)系我們刪除處理,感謝您的支持!

相關(guān)文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現(xiàn) IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當(dāng)前風(fēng)味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復(fù)“意外元素lt;查詢gt;在“清單中找到錯(cuò)誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風(fēng)味庫的多風(fēng)味應(yīng)用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運(yùn)行時(shí)有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 久久69精品久久久久久国产越南 | 人人擦人人 | 国产亚洲一区二区精品 | 久久久婷 | 亚洲一区二区三区免费在线观看 | 91色综合 | 91精品国产欧美一区二区成人 | 视频一区中文字幕 | 综合久 | 国产精品不卡 | 国产在线精品一区二区三区 | 国产乱一区二区三区视频 | 国产精品亚洲一区二区三区在线观看 | 日韩欧美在线播放 | 91精品久久久久久久 | 欧美中文一区 | 羞羞色网站 | 久久久精品高清 | 欧美vide | av一级久久 | 精品久久九 | 国产精品久久久久久久久免费软件 | 欧美专区在线观看 | 久久国产精品久久 | 亚洲精品区 | 国产精品视频久久久 | 欧美一级黑人aaaaaaa做受 | 欧美日韩亚洲二区 | www日韩欧美 | 精品国产欧美一区二区 | 一区日韩 | 日韩成人在线观看 | 欧美99| 国产成人一区二区三区 | 日韩中文字幕在线观看视频 | 久久99精品久久久久久国产越南 | 欧美黄视频 | 免费一区二区在线观看 | 日韩黄| 亚洲精品一区二区网址 | 欧美在线综合 |