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

标签 ant gradle android-studio android-gradle-plugin

Android Studio版本:1.0.2
Gradle 版本:2.2.1

我正在迁移到android studio,目前正在尝试抓紧gradle,以便将我的ant build.xml迁移到gradle或至少以某种方式设置build.gradle,以便可以使用我以前的ant任务 Gradle 。

有关当前问题的详细信息可以在my other question中找到。

现在根据gradle文档第6.5章here,我应该能够执行以下操作:

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

因此,我将以下内容添加到我的build.gradle文件中:
//noinspection GroovyAssignabilityCheck
task all(dependsOn: 'release-all') << {

}

如果我不加
//noinspection GroovyAssignabilityCheck

gradle会给我一个不同的错误:“无法推断参数类型”

“release-all”是在我的build.xml中定义的一个 Ant 任务,问题是,IDE(Android Studio)中的gradle编辑器将我的任务名称“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时,它实际上并没有引发任何错误。在解析build.gradle时,由于上述错误,IDE是否应该在技术上不会因IDE在编辑器中向我显示的错误而失败?

另外请注意-编辑器可以正常处理以下行:
//noinspection GroovyAssignabilityCheck
task all << {

}

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

最佳答案

IDE对Gradle的支持仍在不断发展。在仍然具有语法正确的脚本的同时让IDE报告错误和警告的情况并不少见。这是由于多种因素造成的,包括Groovy的动态特性以及Gradle的AST转换和元编程扩展。特别是,Gradle脚本中使用的任务声明语法是通过IDE无法识别的AST转换实现的。在大多数情况下,您可以忽略大多数“无法解析符号x”消息。

关于ant - Android Studio:无法声明自定义gradle任务,无法解决符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27902176/

相关文章:

android - 如何解决此错误 "Installation failed with message INSTALL_FAILED_OLDER_SDK"?

android - SDK 管理器是灰色的

tomcat - 将 context.xml 部署到 webapps/[webappname]/META-INF

java - 在gradle Android Studio中排除一个类文件

android - 无法解决错误属性 Alpha 未找到

android - 如何使用 kotlin-dsl Gradle 插件从 Kotlin 1.2 迁移到 1.3?

android - 如何自动删除 mockable-android-23.jar?

scala - 为scala配置ant

ant - Gradle等待ANT任务完成

java - 多 IDE 版本控制的 Java 项目 - 是否可以无缝地做到这一点?