Отказ приложения для подписи Android, когда хранилище ключей или свойство не существует - PullRequest
0 голосов
/ 04 июля 2018

Мое приложение имеет signingConfigs, и я сохранил файл хранилища ключей и keystore.properties на app/.signing, который имеет gitignored. Поэтому, когда мои товарищи по команде клонируют репозиторий, возникает ошибка, поскольку keystore.properties не существует.
Это настройки уровня моего приложения.

File keystorePropertyFile = project.file('.signing/keystore.properties')
boolean useSigning = keystorePropertyFile.exists()
...
android {
    ...
    signingConfigs {
        release {
            if (useSigning) {
                Properties properties = new Properties()
                properties.load(keystorePropertyFile.newDataInputStream())

                keyAlias properties['keyAlias']
                keyPassword properties['keyPassword']
                storeFile file(properties['storeFile'])
                storePassword properties['storePassword']
            }
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }
    ...
}

Градл-синхронизация в порядке, но при сборке APK возникает ошибка: Файл хранилища ключей не настроен для подписания выпуска конфигурации

Я хочу подписать приложение с помощью ключа отладки Android по умолчанию, когда хранилище ключей или файл свойств не существует.

1 Ответ

0 голосов
/ 19 июля 2018

Это мой обходной путь. Это было все о заводной.

Properties properties = new Properties()
File propertyFile = project.file('.signing/keystore.properties')
def keyAliasProp, keyPasswordProp, storeFileProp, storePasswordProp
def hasKeyInfo = propertyFile.exists()

if (hasKeyInfo) {
    properties.load(propertyFile.newDataInputStream())

    def keystoreFile = file(properties['storeFile'])
    hasKeyInfo = keystoreFile.exists()

    if (hasKeyInfo) {
        keyAliasProp = properties['keyAlias']
        keyPasswordProp = properties['keyPassword']
        storeFileProp = keystoreFile
        storePasswordProp = properties['storePassword']
    }
}
...
android {
    ...
    signingConfigs {
        if (hasKeyInfo) { // key part
            release {
                keyAlias keyAliasProp
                keyPassword keyPasswordProp
                storeFile storeFileProp
                storePassword storePasswordProp
            }
        }
    }

    buildTypes {
        debug {
            if (hasKeyInfo) { // key part
                signingConfig signingConfigs.release
            }
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            if (hasKeyInfo) { // key part
                signingConfig signingConfigs.release
            }
        }
    }
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...