тег signingConfigs дает мне ошибку Lint в сборке.gradle после обновления до v22

у меня был следующий код в моей сборке.gradle (app) файл на некоторое время:

signingConfigs {
    release {
        storeFile file("D:AndroidkeystoremyApp.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, о котором мне нужно знать? Я не могу найти документацию.

2 ответов


пожалуйста, попробуйте переместить раздел 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 определил signingConfigs ниже buildType config. И из-за этого он получает предупреждение.

давайте сделаем эксперимент, чтобы понять; напишите ниже код в вашем скрипте gradle:

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

вы увидите эту ошибку, когда вы syn с 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. Надеюсь, это поможет. :)