Gradle signature.properties больше не может быть найден - PullRequest
0 голосов
/ 01 июня 2018

Я использовал следующий код в build.gradle моего приложения, чтобы загрузить свойства подписи для подписи приложения.Мой signature.properties находился в корневой папке проекта (не в приложении)

При обновлении до последней версии Gradle / Android Gradle плагин теперь сообщает о подписании. Свойства не найдены, и я должен переместить свои свойства подписи в корневую папку модуля.

Как открыть файл из корня проекта, как раньше?Я делюсь своими подписывающими свойствами между мобильными приложениями и приложениями для одежды.

...
def Properties props = new Properties()
def propFile = new File('signing.properties')
if (propFile.canRead()) {
    props.load(new FileInputStream(propFile))

    if (props.containsKey('STORE_FILE') && props.containsKey('STORE_PASSWORD') &&
            props.containsKey('KEY_ALIAS') && props.containsKey('KEY_PASSWORD')) {
        android.signingConfigs.release.storeFile = file(props['STORE_FILE'])
        android.signingConfigs.release.storePassword = props['STORE_PASSWORD']
        android.signingConfigs.release.keyAlias = props['KEY_ALIAS']
        android.signingConfigs.release.keyPassword = props['KEY_PASSWORD']
    } else {
        println 'signing.properties found but some entries are missing'
        android.buildTypes.release.signingConfig = null
    }
} else {
    println 'signing.properties not found'
    android.buildTypes.release.signingConfig = null
}
...

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Вы должны ввести путь в подпроекты.Я не проверял следующее, но, надеюсь, он даст вам основную идею.

В файле корневого проекта build.gradle добавьте:

subprojects {
    ext.signingPropsFile = rootProject.file('signing.properties')
}

Затем, когда подпроекту необходимо прочитать файл, он может использовать в своем сценарии сборки следующее:

if (signingPropsFile.canRead()) {
    def props = new Properties()
    props.load(signingPropsFile.newReader('UTF-8'))
    ...
}

Я настоятельно рекомендую указывать кодировку при загрузке текстового файла.Если ваш файл свойств не использует UTF-8, измените вышеприведенное значение с «UTF-8» на «ISO8859_1» (которое является кодировкой символов, которую предполагает ваш пример).

Примечание На самом деле вы можете использовать rootProject.file() непосредственно в ваших подпроектах, но если вы переместите файл, вам также придется обновить файлы сборки всех ваших подпроектов.Следовательно, внедрение конфигурации - лучший подход.

0 голосов
/ 01 июня 2018

new File('signing.properties') ищет файл 'signature.properties' относительно местоположения файла Gradle, в котором он объявлен.В вашем случае этот файл Gradle является «app / build.gradle».

Таким образом, укажите путь к файлу «signature.properties» относительно расположения файла «app / build.gradle».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...