在Gradle中使用'git describe --tags'的奇怪行为

时间:2019-02-19 13:48:17

标签: git gradle

在重命名期间尝试将'git describe'字符串插入我的APK时遇到麻烦。 我创建了一个自定义任务,以将生成的APK重命名并将其复制到目录中。 当返回的字符串显示“ v1.0-1-g49a9eaa-dirty”时,我的APK在“ MyApp-v1.0-dirty.apk”中重命名,而不是“ MyApp-v1.0-1-g49a9eaa-dirty.apk”

这是我在Android Studio中的gradle文件的代码:

项目build.gradle:

def getGitVersionName = { ->
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            commandLine 'git', 'describe', '--tags', '--dirty'
            standardOutput = stdout
        }
        return stdout.toString().trim()
    }
    catch (ignored) {
        return null
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }

    ext {
        gitVersionName = getGitVersionName()
        printf "ROOT VersionName ${project.gitVersionName}\n"
    }
}

应用程序build.gradle:

....

task('deployApk', type: Copy, dependsOn: [':app:clean',':app:build']) {
    description 'Copies the resource directory to the target directory.'
    from('build/outputs/apk/debug/')
    include('app-debug.apk')
    into('../buildAssets/apk')
    rename('app-debug.apk', "MyApp-${project.gitVersionName}.apk")
    printf "MyApp-${project.gitVersionName}.apk\n"
}

我为两个'printf'获得的结果是:

ROOT VersionName v1.0-1-g49a9eaa-dirty

> Configure project :app
MyApp-v1.0-1-g49a9eaa-dirty.apk

但是apk名称与我之前说的

MyApp-v1.0-dirty.apk

有什么想法吗?

0 个答案:

没有答案