gradle实验插件无法识别android.applicationVariants.all

时间:2016-05-20 14:15:57

标签: android gradle

我最近将一个项目从gradle 2.1.0迁移到了gradle实验插件0.7.0

在我的2.1.0脚本中,我有根据特定命名约定重命名APK的脚本。项目名称,后跟版本,日期时间。

新的gradle实验插件似乎不再能识别这个脚本了。有人可以帮忙吗?

gradle实验插件无法识别的

脚本如下所示。

android.applicationVariants.all { variant ->
    def appName
    //Check if an applicationName property is supplied; if not use the name of the parent project.
    if (project.hasProperty("applicationName")) {
        appName = applicationName
    } else {
        appName = parent.name
    }

    variant.outputs.each { output ->
        def newApkName
        //If there's no ZipAlign task it means that our artifact will be unaligned and we need to mark it as such.
        if (output.zipAlign) {
            newApkName = "${appName}-${variant.versionName}.apk"
        } else {
            newApkName = "${appName}-${variant.versionName}-unaligned.apk"
        }
        output.outputFile = new File(output.outputFile.parent, newApkName.replace(".apk", "-" + getDateTime() + ".apk"))
    }
}

import java.text.DateFormat
import java.text.SimpleDateFormat

def getDateTime() {
    DateFormat df = new SimpleDateFormat("YYYY-MM-dd");

    return df.format(new Date());
}

错误是

Error:FAILURE: Build failed with an exception.

* Where:
Script '/Users/vp/newconstruction/android-vpn/artifacts.gradle' line: 1

* What went wrong:
A problem occurred evaluating script.
> Could not find property 'android' on project ':main'.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

2 个答案:

答案 0 :(得分:1)

经过多次努力,我想在没有多少选择的情况下回答我自己的问题。

从gradle实验插件的官方文档中可以清楚地看到,该插件仍处于早期开发阶段。实验性插件的许多功能都不起作用。

http://tools.android.com/tech-docs/new-build-system/gradle-experimental

答案 1 :(得分:0)

@ developer1011,感谢您回答自己的问题。我也在重命名我的APK和AAR,并且遇到了访问变体的问题。我更加具体地注意到它现在谈论的变体功能非常非常有限。

http://tools.android.com/tech-docs/new-build-system/gradle-experimental

  

用于修改变体及其任务的DSL现在非常非常有限。