Android Gradle: signatureConfig.name не должно быть нулевым - PullRequest
3 голосов
/ 25 февраля 2020

После обновления Gradle Wrapper до 5.6.4 и Gradle Plugin до 3.6.0 я получаю следующую ошибку:

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

Моя конфигурация выглядит так:

root:

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']}"
            ])
    ]
}

module:

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

Раньше он работал отлично, но не всегда говорит, что name - ноль. Есть ли у вас какие-либо идеи? Спасибо.

Ответы [ 3 ]

1 голос
/ 11 марта 2020

в моем случае другие ответы не помогли. Но перемещение signingConfigs из секции ext (вероятно, из вашего файла root gradle) непосредственно в блок android модуля gradle сработало. Попробуйте следующее:

В блоке 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
        }
    .
    .
    .

Тогда вам, возможно, придется адаптировать свои пути (localProps и файл хранилища) с

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

до

// adapt to new path of the files 
rootProject.file('../local.properties')
storeFile file('../carrierKeystore.jks')
1 голос
/ 27 февраля 2020

Я выяснил проблему

переместите строки

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

в

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

и поместите блок signatureConfigs вверху блока android

т.е.

android {
  signingConfigs {
    ...
  }

  defaultConfigs {
    ...
  }

  buildTypes {
    ...
  }
}
0 голосов
/ 02 марта 2020

В вашем блоке andorid должен быть блок signatureConfigs. как это

 signingConfigs {
    release {
        appSigningConfigs.release
    }
}

defaultConfig {
    ...
    signingConfig signingConfigs.release
...