"Конфигурация подписи должна быть указана в сценариях сборки Gradle"... Я сделал это

У меня есть большая проблема, когда я пришел, чтобы подписать мое приложение: я установил конфигурацию подписи в соответствии с документом:

signingConfigs {
    release {
        storeFile file("lomapnew.keystore")
        storePassword "myPassword"
        keyAlias "myAlias"
        keyPassword "Something...."
    }
}

Но я все еще получаю это сообщение об ошибке: "Конфигурация подписи должна быть указана в сценариях сборки Gradle

enter image description here

Ответ 1

Я собираюсь выйти на конечность и предположить, что вы не установили конфигурацию подписи для типа сборки выпуска. Тип сборки отладки является автоматическим, поэтому не очевидно, что это необходимый шаг для всех других типов сборки, включая выпуск.

Вы можете применить конфигурацию подписи так:

android {
    signingConfigs {
        // It not necessary to specify, but I like to keep the debug keystore
        // in SCM so all our debug builds (on all workstations) use the same
        // key for convenience
        debug {
            storeFile file("debug.keystore")
        }
        release {
            storeFile file("release.keystore")
            storePassword "myPassword"
            keyAlias "myAlias"
            keyPassword "Something...."
        }
    }

    buildTypes {
        /* This one happens automatically
        debug {
            signingConfig signingConfigs.debug
        }
        */
        release {
            signingConfig signingConfigs.release
        }
    }
}

Ответ 2

Ответ уже дан, но я хотел бы также выделить другие способы, Мы можем указать информацию вручную, как показано ниже, где мы должны указать полный путь к нашему местоположению хранилища ключей, подобному этому

signingConfigs {
    release {
        storeFile file('O:/Android/Projects/yourKeyStore.jks')
        storePassword "qwerty"
        keyAlias "yourProjectKeyAlias"
        keyPassword "ProjectKeyPassword"
    }
}

Это также можно указать в отчете о подписании, если вы входите в

Файл → Структура проекта

Выберите модуль приложения проекта и выберите отчет подписи, в котором вы можете заполнить эту информацию, и автоматически добавит предыдущую информацию о выпуске в файл gradle.

Наконец, вам просто нужно добавить

signingConfig android.signingConfigs.release

в разделе buildTypes {...}. Это завершит процедуру подписания.

Ответ 3

Мне нравится сохранять пароли из моего файла сборки. Поэтому я создаю файл свойств, который я загружаю с помощью

def keystorePropertiesFile = rootProject.file("./local.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

Затем я определяю signConfigs так:

   signingConfigs {
    releaseSigning {
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['keystore.live.storepassword']
        keyAlias = keystoreProperties['keystore.live.keyalias']
        keyPassword = keystoreProperties['keystore.live.keypassword']
    }
    debugSigning {
        storeFile file(keystoreProperties['storeFile'])
        storePassword keystoreProperties['keystore.debug.storepassword']
        keyAlias = keystoreProperties['keystore.debug.keyalias']
        keyPassword = keystoreProperties['keystore.debug.keypassword']
    }
}

Это не работает с опцией меню "create Signed apk", поэтому я создаю ароматы:

    productFlavors {
    mydebug {
        signingConfig signingConfigs.debugSigning
    }
    myrelease {
        signingConfig signingConfigs.releaseSigning
    }
}

и теперь параметры signconfigs работают с кнопкой запуска на панели инструментов. Для хранилища ключей по умолчанию local.properties выглядит как

ndk.dir=/opt/sdk/ndk-bundle
sdk.dir=/opt/sdk
storeFile=/home/christine/.android/debug.keystore
keystore.debug.storepasswd=android
keystore.debug.keyalias=androiddebugkey
keystore.debug.keypassword=android
keystore.live.storepasswd=android
keystore.live.keyalias=androiddebugkey
keystore.livetest.keypassword=android

В вашей сборке Jenkins script вам нужно создать символическую ссылку из local.properties, где файл свойств находится на вашем сервере сборки.