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

Posted

技术标签:

【中文标题】升级到 v22 后,signingConfigs 标记在 build.gradle 中给我一个 Lint 错误【英文标题】:signingConfigs tag giving me a Lint error in build.gradle after upgrading to v22 【发布时间】:2015-05-24 01:25:24 【问题描述】:

一段时间以来,我的 build.gradle (app) 文件中有以下代码:

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>)'

我需要了解 v22 的变化吗?我找不到文档。

【问题讨论】:

【参考方案1】:

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

android 
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

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

【讨论】:

这对我很有帮助,但你能解释一下原因吗? @GDanger 仅供参考:我刚刚解释了原因。【参考方案2】:

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

我很确定 OP 已经在 buildType 配置下定义了 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>

但是当你这样定义它时:

def B = "I am test."
def A = B;

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

【讨论】:

这有帮助,但是defaultConfig minSdkVersion 12 ... 中的什么指的是signingConfigs releaseSigning ... 定义的东西?它是不可见的,它曾经工作过。 @Jerry101 你到底是什么意思? defaultConfig 具有通用属性,将用于每种风格。而 SigningConfigs 仅包含特定于发布和调试风格的属性。 我的 build.gradle 有 compileSdkVersion 24; buildToolsVersion '24.0.0'; defaultConfig minSdkVersion 12; targetSdkVersion 24; versionCode 14; versionName "2.4"; ...; signingConfigs releaseSigning storeFile ... 。切换到 SDK+tools 24 导致 'signingConfigs' cannot be applied to ...Closure 错误。在 defaultConfig 之前移动 signingConfigs 修复了错误(谢谢你们)!我不会猜到这个错误意味着“使用前参考”,并且两个部分之间没有共同的标识符。所以问题已解决,但我不明白如何解决。

以上是关于升级到 v22 后,signingConfigs 标记在 build.gradle 中给我一个 Lint 错误的主要内容,如果未能解决你的问题,请参考以下文章

Android Gradle:signingConfig.name 不能为空

Gradle build:找不到参数的方法signingConfig()

AndroidStudio4.0.1版本无法快速新建Activity解决办法

Android Gradle 插件SigningConfig 签名配置 ① ( SigningConfig 签名配置位置 | storeFile 配置 | storePassword 配置 )

SigningConfig“发布”缺少必需的属性“keyPassword”

Android Gradle 插件SigningConfig 签名配置 ② ( keyAlias 配置 | keyPassword 配置 )