Android 升级到v22后,signingConfigs标记在build.gradle中给我一个Lint错误

Android 升级到v22后,signingConfigs标记在build.gradle中给我一个Lint错误,android,groovy,android-studio,gradle,lint,Android,Groovy,Android Studio,Gradle,Lint,我的build.gradle(应用程序)文件中有以下代码已经有一段时间了: signingConfigs { release { storeFile file("D:\\Android\\keystore\\myApp.jks") storePassword "myStorePw" keyAlias "myKeyAlias" keyPassword "MyKeyPw" } } 我刚刚升级到targetSdkVers

我的build.gradle(应用程序)文件中有以下代码已经有一段时间了:

signingConfigs {
    release {
        storeFile file("D:\\Android\\keystore\\myApp.jks")
        storePassword "myStorePw"
        keyAlias "myKeyAlias"
        keyPassword "MyKeyPw"
    }
}
我刚刚升级到targetSdkVersion=22,这意味着将SDK和构建工具也升级到22。现在,整个部分在Android Studio(141.1793788)中以黄色突出显示,并显示以下消息:

'signingConfigs' cannot be applied to '(groovy.land.Closure<com.android.build.gradle.internal.dsl.SigningConfig>)'
“signingConfigs”不能应用于“(groovy.land.Closure)”

v22中是否有我需要了解的变化?我找不到文档。

请尝试将signingConfigs部分移到更高的位置,就在下面:compileSdkVersion和buildToolsVersion。示例如下:

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    signingConfigs {
        release {
            storeFile file("D:\\Android\\keystore\\myApp.jks")
            storePassword "myStorePw"
            keyAlias "myKeyAlias"
            keyPassword "MyKeyPw"
       }
    }
}

正如@GDanger所问的原因;所以原因很简单。在gradle脚本中定义变量时,请记住,在定义之前不应使用该变量

我非常确定OP已经在
buildType
config下面定义了
signingConfigs
。正因为如此,他得到了警告信息

让我们做一个实验来理解;在gradle脚本中编写以下代码:

def A = B;
def B = "I am test."
当您与gradle同步时,您将看到此错误:

Error:(3, 0) Could not find property 'B' on project ':app'.
<a href="openFile">Open File</a>

你不会得到任何错误。因此,我相信尝试这个小实验会让您了解在gradle脚本中编译是如何工作的。希望这会有所帮助。:)

这对我很有帮助,但你能解释一下原因吗?@GDanger-fyi:我刚才解释了原因。这很有帮助,但在
defaultConfig{minSdkVersion 12…}
中,什么是指由
signingConfigs{releaseSigning{…}}
定义的?它是看不见的,而且以前也有用。@Jerry101你到底是什么意思?defaultConfig具有通用属性,将用于每种口味。而SigningConfigs只包含特定于发行版和调试风格的属性;buildToolsVersion'24.0.0';defaultConfig{minSdkVersion 12;targetSdkVersion 24;versionCode 14;versionName“2.4”;…};signingConfigs{releaseSigning{storeFile…}}。切换到SDK+tools 24导致无法将“signingConfigs”应用于…关闭错误。在defaultConfig之前移动signingConfigs修复了错误(谢谢大家)!我猜这个错误并不意味着“使用前引用”,而且这两个部分之间没有共同的标识符。所以问题已经解决了,但我不明白怎么解决。
def B = "I am test."
def A = B;