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

具有 gradle 額外屬性的自動增量版本代碼

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

問題描述

我正在使用 gradle 構建一個 Android 應用.到目前為止,我使用 Manifest 文件來增加 versionCode,但我想從外部文件中讀取 versionCode,并根據它是發布風格還是調試風格來增加 versionCode.我嘗試了額外的屬性,但你無法保存它們,這意味著下次我構建它時,我會得到相同的 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

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

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
}

此代碼需要一個現有的 version.properties 文件,您將在第一次構建之前手動創建該文件以具有 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.

此代碼只是在每次構建時增加版本代碼 - 您需要擴展該技術以處理每個風味的版本代碼.

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

您可以看到 版本控制示例項目代碼.

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

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

相關文檔推薦

IncompatibleClassChangeError after updating to Android Build Tools 25.1.6 GCM / FCM(更新到 Android Build Tools 25.1.6 GCM/FCM 后出現 IncompatibleClassChangeError)
How to get current flavor in gradle(如何在 gradle 中獲取當前風味)
How to fix quot;unexpected element lt;queriesgt; found in lt;manifestgt;quot; error?(如何修復“意外元素lt;查詢gt;在“清單中找到錯誤?)
Multi flavor app based on multi flavor library in Android Gradle(基于 Android Gradle 中多風味庫的多風味應用)
Android dependency has different version for the compile and runtime(Android 依賴在編譯和運行時有不同的版本)
Transitive dependencies for local aar library(本地 aar 庫的傳遞依賴)
主站蜘蛛池模板: 国产精品a久久久久 | 欧美成人在线免费 | 日韩国产精品一区二区三区 | 韩国理论电影在线 | 欧美精品一区二区三区在线四季 | 亚洲久久久 | 夜夜骚视频 | 午夜tv免费观看 | 日韩亚洲一区二区 | 久在线 | 欧美日韩不卡 | 日韩在线播放第一页 | 国产精品久久久久久久久久久免费看 | 91网站在线播放 | 99精品在线免费观看 | 亚洲aⅴ| 中文字幕视频在线 | 不卡视频一区 | 亚洲成人精品 | 8x国产精品视频一区二区 | 亚洲九色 | 欧美日韩在线一区二区三区 | 欧美一级片在线 | 亚洲精品一区二区在线观看 | 国产成人在线视频免费观看 | 久久国| 激情 一区 | 日韩一区精品 | 亚洲夜射 | 国产又色又爽又黄又免费 | 精品国产欧美一区二区 | 在线天堂免费中文字幕视频 | 成人在线免费网站 | 97色在线视频 | 亚洲va国产日韩欧美精品色婷婷 | 久久国产精品72免费观看 | 亚洲在线日韩 | 午夜影院在线免费观看视频 | 久久久免费毛片 | 午夜在线| 日韩精品一区二区三区中文在线 |