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" 条消息。
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" 条消息。