设置Android版本code摇篮任务完成后,摇篮、任务、版本、完成后

由网友(太过于爱你)分享简介:我有更新我的应用程序的版本code,称为任务的 changeVersion code 的。此任务之前,我的Andr​​oid构建任务运行( assembleRelease 的),但显然它的安卓{} 结束后发生的。这似乎意味着该版本code设置,不能甚至改变时的 changeVersion code 的运行。I hav...

我有更新我的应用程序的版本code,称为任务的 changeVersion code 的。此任务之前,我的Andr​​oid构建任务运行( assembleRelease 的),但显然它的安卓{} 结束后发生的。这似乎意味着该版本code设置,不能甚至改变时的 changeVersion code 的运行。

I have a task that updates my app's version code, called changeVersionCode. This task runs before my Android build tasks (assembleRelease), but obviously it happens after the android { } closure. This seems to mean that versionCode is set and cannot be changed even when changeVersionCode runs.

下面是一个演示如何我试图解决这个问题简化构建脚本:

Here's a simplified build script that demonstrates how I have tried to approach this problem:

// .version is a file that starts at "1" the first time I call this

def loadVersionCode() {
    // fetch version code from a file, '.version'
    return loadVersionCodeFromFile('.version')
}

def incrementVersionCode() {
    // fetch version code, update it, and save it back to a file
    def newVersion = loadVersionCode() + 1
    saveVersionCodeToFile('.version', newVersion)
}

apply plugin: 'com.android.application'

android {
    // ... snip ...
    defaultConfig {
        // Set the version code to contents of .version (eg. 1)
        versionCode loadVersionCode()
        // ...
    }
}

task incrementVersionCode << {
    println "Old version code: " + android.defaultConfig.versionCode // prints 1

    incrementVersionCode()
    def newVersion = loadVersion() // this now returns 2

    android.defaultConfig.versionCode = loadVersionCode()
    // Also tried:
    // android.defaultConfig.versionCode loadVersionCode()

    println "New version code: " + android.defaultConfig.versionCode // prints 2
    // android.defaultConfig.versionCode is now 2, but APK still has version 1 (until next time I run gradle)
}

然后:

# Build an APK with versionCode 1
$ ./gradlew assembleRelease

# This seems to change versionCode to 2, but still builds an APK with versionCode 1
#
# Prints:
#     Old version code: 1
#     New version code: 2
$ ./gradlew incrementVersionCode assembleRelease

我使用的:

摇篮2.5 Groovy的2.3.10 蚂蚁1.9.3 的Java 1.8.0_45 的Mac OS X 10.10.5 Android编译工具22.0.1

有什么办法,我可以从一个任务调用Android编译任务前更改我的版本code?

Is there any way I can change my version code from a task before invoking Android build tasks?

推荐答案

如何配置版本code前的任务启动

您可以使用DSL tasks.whenTaskAdded 。您可以阅读href="https://docs.gradle.org/current/userguide/build_lifecycle.html" rel="nofollow">官方文档,章58.6.2的

阅读全文

相关推荐

最新文章