- Primero creamos la clave privada que utilizaremos para firmar la aplicación.
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 20000 -alias key
-
Guardamos el fichero key.jks en directorio_aplicación/app/key.jks
-
Creamos el fichero directorio_aplicación/key.properties que contentrá las referencias a nuestra keystore:
storePassword=<Palabra de paso que hemos introducido en el paso anterior>
keyPassword=<Palabra de paso que hemos introducido en el paso anterior>
keyAlias=key
storeFile=<localización del fichero key.jks generado en el paso anterior>
- Para configurar la firma en gradle modificamos el fichero directorio_aplicación/app/build.gradle
- Reemplazamos :
android {
Por la información del fichero key.properties
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
- Reemplazamos:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now,
// so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}
Con la información de firma:
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
-
Cuando hemos realizado estos pasos el apk en el directorio release se firma automáticamente.
-
Si queremos comprobar la firma de la aplicación nos dirigiremos a directorio_aplicación/app/build/outputs/apk/pro/release y ejecutamos:
jarsigner -verify -verbose -certs <nombre_aplicación>.apk
- Esto nos mostrará la información del certificado de la apk.