La respuesta aceptada utiliza un archivo para controlar qué almacén de claves usar para firmar el APK que reside en la misma carpeta raíz del proyecto. Cuando usamos vcs como Git , podría ser algo malo cuando olvidamos agregar el archivo de propiedades para ignorar la lista. Porque revelaremos nuestra contraseña al mundo. Los problemas aún persisten.
En lugar de hacer el archivo de propiedades en el mismo directorio dentro de nuestro proyecto, deberíamos hacerlo fuera. Lo hacemos afuera usando el archivo gradle.properties.
Aquí los pasos:
1.Edite o cree gradle.properties en su proyecto raíz y agregue el siguiente código, recuerde editar la ruta con la suya:
AndroidProject.signing=/your/path/androidproject.properties
2.Cree androidproject.properties en / your / path / y agregue el siguiente código, no olvide cambiar /your/path/to/android.keystore a su ruta de almacén de claves:
STORE_FILE=/your/path/to/android.keystore
STORE_PASSWORD=yourstorepassword
KEY_ALIAS=yourkeyalias
KEY_PASSWORD=yourkeypassword
3.En el módulo de su aplicación build.gradle (no en la raíz del proyecto build.gradle) agregue el siguiente código si no existe o ajústelo:
signingConfigs {
release
}
buildTypes {
debug {
debuggable true
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
4. Agregue el siguiente código debajo del código en el paso 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
}
}
Este código buscará la propiedad AndroidProject.signing en gradle.properties desde el paso 1 . Si se encuentra la propiedad, traducirá el valor de la propiedad como la ruta del archivo que apunta a androidproject.properties que creamos en el paso 2 . Luego, todo el valor de la propiedad se utilizará como configuración de firma para nuestro build.gradle.
Ahora no debemos preocuparnos nuevamente por el riesgo de exponer nuestra contraseña del almacén de claves.
Obtenga más información en Signing Android apk sin poner la información del almacén de claves en build.gradle
build.gradle
, tendrá que tener algo más quebuild.gradle
, si eso es un ajuste a las variables de entorno (por una respuesta), un archivo de propiedades (por otra respuesta) o algún otro medio. Si no está dispuesto a tener cosas fuerabuild.gradle
, entonces, por definición, toda la información de firma debe estar dentrobuid.gradle
.