Android Studio:无法声明自定义 gradle 任务,无法解决符号错误

Android Studio: Can't declare custom gradle tasks, Cannot resolve symbol error

Android工作室版本:1.0.2 Gradle版本:2.2.1

我要搬到 android 工作室,我目前正在努力掌握 gradle 以便将我的蚂蚁 build.xml 迁移到 gradle 或至少以某种方式设置 build.gradle,我可以使用 gradle.

中的旧 ant 任务

有关当前问题的详细信息,请参阅

现在根据 gradle 文档,第 6.5 章 here 我应该可以这样做:

task intro(dependsOn: hello) << {
    println "I'm Gradle"
}

因此我将以下内容添加到我的 build.gradle 文件中:

//noinspection GroovyAssignabilityCheck
task all(dependsOn: 'release-all') << {

}

如果我不加

//noinspection GroovyAssignabilityCheck

gradle 会给我一个不同的错误:"Cannot infer argument types".

"release-all" 是在我的 build.xml 中定义的一个 ant-task 问题是 IDE 中的 gradle 编辑器(Android Studio)将我的任务名称 "all" 标记为错误并声明:无法解析符号 "all"。 我还尝试在下面 build.gradle 文件的 "android" 部分的大括号内添加上面的代码片段,但出现相同的错误消息。

这是我的特定项目的完整 gradle.build 文件,即不是顶级 build.gradle:

apply plugin: 'com.android.application'

    android {
        compileSdkVersion 19
        buildToolsVersion "21.1.2"

        signingConfigs {

            release {
                storeFile file('android.keystore')
                storePassword "pwd"
                keyAlias "alias"
                keyPassword "pwd"
            }
        }

        defaultConfig {
            applicationId "myapp"
            minSdkVersion 14
            targetSdkVersion 14

            testApplicationId "myapp.test"
            testInstrumentationRunner "android.test.InstrumentationTestRunner"
        }

        buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
                signingConfig signingConfigs.release
            }

        }
    }

    //noinspection GroovyAssignabilityCheck
    task all(dependsOn: 'release-all') << {

    }

    dependencies {
        compile project(':myapplibrary')
        compile 'com.android.support:support-v4:19.1.0'
        compile 'com.android.support:appcompat-v7:19.1.0'
        compile files('libs/android-support-v13.jar')
        compile files('libs/ormlite-android-4.38.jar')
        compile files('libs/ormlite-core-4.38.jar')
        compile files('libs/osmdroid-android-3.0.10-javadoc.jar')
        compile files('libs/osmdroid-android-3.0.10.jar')
        compile files('libs/slf4j-android-1.5.8.jar')
        compile files('libs/xmltask.jar')
    }

奇怪的是:当我从命令行 运行 gradlew 它实际上并没有抛出任何错误。由于上述错误 IDE 在编辑器中显示我,所以在解析 build.gradle 时技术上不应该失败吗?

补充说明 - 以下行由编辑器处理得很好:

//noinspection GroovyAssignabilityCheck
task all << {

}

但不幸的是,这不是我需要的。

IDE 对 Gradle 的支持仍在发展中。您的 IDE 报告错误和警告,同时仍具有语法正确的脚本的情况并不少见。这是由几个因素造成的,包括 Groovy 的动态特性,以及 Gradle 的 AST 转换和元编程扩展。具体来说,Gradle 脚本中使用的任务声明语法是通过 IDE 不知道的 AST 转换实现的。在大多数情况下,您可以忽略大多数 "Cannot resolve symbol x" 条消息。