Принятый ответ использует файл для управления тем, какое хранилище ключей использовать для подписи APK, который находится в той же корневой папке проекта. Когда мы используем vcs, такие как Git , может быть плохо, когда мы забываем добавить файл свойств, чтобы игнорировать список. Потому что мы раскроем наш пароль миру. Проблемы все еще сохраняются.
Вместо создания файла свойств в том же каталоге в нашем проекте, мы должны сделать это снаружи. Мы делаем это снаружи, используя файл gradle.properties.
Вот шаги:
1. Измените или создайте gradle.properties в своем корневом проекте и добавьте следующий код, не забудьте отредактировать путь самостоятельно:
AndroidProject.signing=/your/path/androidproject.properties
2. Создайте androidproject.properties в / your / path / и добавьте в него следующий код, не забудьте изменить /your/path/to/android.keystore на путь вашего хранилища ключей:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3.В своем модуле приложения build.gradle (не в корневом каталоге проекта build.gradle) добавьте следующий код, если он не существует, или настройте его:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4. Добавьте следующий код под кодом в шаге 3:
if (project.hasProperty("AndroidProject.signing")
&& new File(project.property("AndroidProject.signing").toString()).exists()) {
def Properties props = new Properties()
def propFile = new File(project.property("AndroidProject.signing").toString())
if(propFile.canRead()) {
props.load(new FileInputStream(propFile))
if (props!=null && 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 'androidproject.properties found but some entries are missing'
android.buildTypes.release.signingConfig = null
}
} else {
println 'androidproject.properties file not found'
android.buildTypes.release.signingConfig = null
}
}
Этот код будет искать свойство AndroidProject.signing в gradle.properties, начиная с шага 1 . Если свойство найдено, оно будет переводить значение свойства как путь к файлу, который указывает на androidproject.properties, который мы создаем на шаге 2 . Тогда все значение свойства из него будет использоваться в качестве конфигурации подписи для нашего build.gradle.
Теперь нам не нужно снова беспокоиться о риске раскрытия пароля нашего хранилища ключей.
Читайте больше на Подписи apk Android, не помещая информацию о хранилище ключей в build.gradle
build.gradle
, вы будете иметь что - то другое , чемbuild.gradle
, будь то это корректировка переменных среды (для одного ответа), файла свойств (для другого ответа) или некоторых других средств. Если вы не хотите, чтобы что-то находилось за пределамиbuild.gradle
, тогда по определению вся информация для подписи должна быть внутриbuid.gradle
.