Android Gradle:签名配置名称不能为空。

3

将Gradle Wrapper更新到5.6.4并将Gradle插件更新为3.6.0后,我遇到了以下错误:

Caused by: java.lang.IllegalStateException: signingConfig.name must not be null

我的配置如下:

根目录:

ext {
    Properties localProps = new Properties()
    localProps.load(rootProject.file('local.properties').newDataInputStream())

    mySigningConfigs = [
            debug  : SigningConfig.newInstance([
                    keyAlias     : "${localProps['keyAlias']}",
                    keyPassword  : "${localProps['keyPassword']}",
                    storeFile    : file('carrierKeystore.jks'),
                    storePassword: "${localProps['storePassword']}"
            ]),
            release: SigningConfig.newInstance([
                    keyAlias     : "${localProps['keyAlias']}",
                    keyPassword  : "${localProps['keyPassword']}",
                    storeFile    : file('carrierKeystore.jks'),
                    storePassword: "${localProps['storePassword']}"
            ])
    ]
}

模块:

buildTypes {
        debug {
            signingConfig mySigningConfigs.debug
        }
        release {
            signingConfig mySigningConfigs.release
        }
    }

以前工作得很好,但现在总是提示 name 为空。你有什么想法吗?谢谢。


你有任何进展吗?我也遇到了完全相同的问题。 - Lena Bru
3个回答

1
在我的情况下,其他答案没有帮助。但是将signingConfigsext部分(可能是您的根gradle文件)移动到模块gradle的android块中可以解决问题。因此,请尝试以下操作: android块内添加:
signingConfigs {
        // optional read your properties with the signingConfig data
        // but keep in mind that you may have to adapt your file paths
        release {
            keyAlias "<keyAliasValue>"
            keyPassword "<keyPasswordValue>"
            storeFile file('<keyStoreFileName>')
            storePassword "<keyStorePasswordValue>"
        }
    .
    .
    .
    }

buildTypes -> release部分中,您可以保留对具体signingConfig的分配。
buildTypes {

        release {
            signingConfig signingConfigs.release
        }
    .
    .
    .

那么您可能需要调整本地属性和存储文件的路径

rootProject.file('local.properties')
storeFile file('carrierKeystore.jks')

to

// adapt to new path of the files 
rootProject.file('../local.properties')
storeFile file('../carrierKeystore.jks')

1

我找到了问题

将这些行移动

buildTypes {
        debug {
            signingConfig mySigningConfigs.debug
        }
        release {
            signingConfig mySigningConfigs.release
        }
    }

to

signingConfigs {
        debug {
            mySigningConfigs.debug
        }
        release {
            mySigningConfigs.release
        }
    }

将签名配置块放在android块的顶部。

i.e

android {
  signingConfigs {
    ...
  }

  defaultConfigs {
    ...
  }

  buildTypes {
    ...
  }
}

0

在你的android块中必须有一个signingConfigs块,就像这样

 signingConfigs {
    release {
        appSigningConfigs.release
    }
}

defaultConfig {
    ...
    signingConfig signingConfigs.release

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接