subiste - Android Gradle: carga la configuración de firma desde un archivo externo
programa de firma de apps (2)
Puede mover sus datos confidenciales a un archivo de firma separado y tener gradle cargarlos.
En Gradle para Android, parece ser práctica común definir tu configuración de firma para la versión de lanzamiento de esta manera:
android {
signingConfigs {
debug {
storeFile file("debug.keystore")
}
myConfig {
storeFile file("other.keystore")
storePassword "android"
keyAlias "androiddebugkey"
keyPassword "android"
}
}
buildTypes {
foo {
debuggable true
jniDebugBuild true
signingConfig signingConfigs.myConfig
}
}
}
La cosa es que quiero mantener mi archivo build.gradle en control de versiones y no tengo la sensación de tener la contraseña para mi keystore (que es la misma que uso para otras cosas, estúpido, lo sé) en algún servidor de git.
¿Hay alguna forma de cargar el signingConfig desde un archivo externo desde algún lugar de mi disco duro?
Yo uso algo como esto.
Tengo un signing.properties
en la carpeta raíz de mi aplicación.
STORE_FILE=xxxx
STORE_PASSWORD=xxx
KEY_ALIAS=xxx
KEY_PASSWORD=xxx
Este archivo no está bajo control de versión. Por supuesto, puedes cambiar la carpeta.
Luego, en su build.gradle
puede usar algo como esto:
android {
signingConfigs {
release
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
def Properties props = new Properties()
def propFile = file(''../signing.properties'')
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 {
android.buildTypes.release.signingConfig = null
}
}else {
android.buildTypes.release.signingConfig = null
}
Si cambia la carpeta, debe cambiar esta línea:
def propFile = file(''../signing.properties'')