Share via


Configuración de la firma de código de Android en App Center

Importante

Visual Studio App Center está programado para retirarse el 31 de marzo de 2025. Aunque puede seguir usando Visual Studio App Center hasta que se retire por completo, hay varias alternativas recomendadas a las que puede considerar la posibilidad de migrar.

Obtenga más información sobre las escalas de tiempo y las alternativas de soporte técnico.

Sugerencia

Para los usuarios de Xamarin.Android, el proceso es ligeramente diferente. Consulte nuestra guía de firma de código de Xamarin.Android para obtener más información.

Firmar una aplicación es un requisito para ejecutar una aplicación en dispositivos reales durante el proceso de desarrollo o distribuirla a través de un programa beta o en Play Store. Sin firma de código, la aplicación solo se puede ejecutar en un emulador.

Cuando App Center compila una aplicación Android con un tipo de compilación de depuración, no es necesario un almacén de claves para un desarrollador, pero se puede cargar. Estas compilaciones se firmarán automáticamente con una clave de depuración. Para una compilación de versión que se implementará, cargue un almacén de claves en App Center.

Generación de un almacén de claves

Si actualmente no tiene un almacén de claves, puede generar uno en Android Studio. Puede encontrar instrucciones sobre cómo generar un almacén de claves para firmar las API en la Guía de usuario oficial de Android Studio.

Configuración de la firma de código

App Center admite tres formas diferentes de configurar la firma de código para aplicaciones Android. Para los tres métodos, primero debe ir a la configuración de compilación y habilitar la firma de código:

  1. Vaya a la aplicación en App Center.
  2. Vaya a Compilar.
  3. Vaya a la rama que desea configurar eligiendo en la lista.
  4. Use el menú "Configuración" en la esquina superior derecha o elija Configurar si la rama aún no está configurada para la compilación.
  5. Habilite Las compilaciones de sign.
  6. Elija Guardar.

A continuación, en función de su escenario, use las tres opciones más adecuadas en las secciones siguientes. La primera opción implica proteger las credenciales en el repositorio, mientras que las otras dos usan App Center para controlar las credenciales en su lugar.

A partir de Android 11, es obligatorio usar el firmante de APK (si usa el nivel de API 30), ya que establecerá algunos esquemas adicionales "Esquema de firma apk v2 ahora requerido". App Center ahora (desde el 17 de dic, 2020) firma aplicaciones Android mediante el firmante apk internamente, en lugar del firmante JAR que se usó anteriormente. Como parte de la característica para habilitar el firmante de APK en App Center, se implementó la tarea de firma de Android V3, y los requisitos de la nueva tarea de firma cambiaron cómo se guarda el archivo de almacén de claves: para almacenar el archivo de almacén de claves en un archivo seguro de AzDO (tarea de compilación y versión de firma de Android: Azure Pipelines | Microsoft Docs).

Advertencia

Las configuraciones de compilación que tenían sus archivos de almacén de claves cargados antes del 17 de dic, 2020 siguen usando el método de firma apk Signature Scheme v2 (jarsigner). Para usar el flujo de firma del esquema de firma de APK v3, los usuarios solo tienen que volver a cargar sus archivos de almacén de claves y guardar su configuración de rama.

Nota

El uso de la versión 4.1.x del complemento Gradle para Android no es totalmente compatible. Para poder usar esta versión, debe agregar el siguiente valor de opción en el gradle.properties archivo:

 android.useNewApkCreator = false

A. Almacenar todo en la configuración de Gradle

Puede especificar los detalles de firma en el build.gradle archivo (nivel de aplicación). Los detalles de firma, junto con todas las credenciales y la información del almacén de claves, estarán visibles en el repositorio. En primer lugar, agregue todos los elementos que necesita al código y compruébalos en el repositorio. A continuación, en la configuración de compilación de App Center, habilite la configuración de My Gradle completamente establecida para controlar la firma automáticamente.

B. Carga de todo en App Center

Puede cargar el almacén de claves y configurar las credenciales de firma a través de App Center. En este caso, App Center compilará primero la aplicación android y, después, ejecutará un paso de firma después de la compilación correcta.

Nota

Una compilación solo se puede firmar una vez. Asegúrese de que no tiene conflictos con las configuraciones de firma en la configuración de Gradle para la variante de compilación elegida. Si hay configuraciones de firma tanto en App Center como en el archivo Gradle, la compilación puede terminar firmada dos veces y esto provoca conflictos.

Configure la configuración de compilación en App Center de la siguiente manera:

  1. Deshabilitar la configuración de My Gradle se establece completamente para controlar la firma automáticamente.
  2. Cargue el archivo de almacén de claves en la eliminación del archivo de carga de archivos de almacén de claves . Puede arrastrar el archivo al cuadro o hacer clic en él y buscar el archivo. Los archivos de almacén de claves tienen la extensión .keystore o .jks.
  3. Escriba la contraseña del almacén de claves, el alias de clave y la contraseña de clave en los campos correspondientes. Estos valores son los mismos que escribiría en Android Studio al firmar una compilación.

C. Almacenar los detalles de firma en el repositorio con variables de entorno

Use este método si el repositorio ya contiene el almacén de claves, pero no desea almacenar las credenciales allí. En tiempo de compilación, las credenciales se proporcionarán como propiedades del sistema a la compilación de Gradle. Consulte el ejemplo de código siguiente sobre cómo usarlos:

android {
    signingConfigs {
        releaseSigningConfig {
            storeFile rootProject.file("app/testapp.jks")
            storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
            keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
            keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.releaseSigningConfig
        }
    }
}

En el código anterior, la protección de valores detrás de las propiedades del sistema insertadas en la compilación mantiene seguras las credenciales de firma: los valores se cifran y solo están disponibles para los agentes de compilación en tiempo de compilación. Puede proporcionar los valores a través de App Center. También puede codificar de forma rígida cualquiera de los valores y protegerlos en el repositorio. Para usar App Center para proteger los valores:

  1. Vaya a la configuración de compilación.
  2. Asegúrese de que la casilla denominada My Gradle settings (Configuración de My Gradle) está completamente establecida para controlar la firma automáticamente que no está activada.
  3. Escriba la contraseña del almacén de claves, el alias de clave y la contraseña de clave en los campos correspondientes. Estos valores son los mismos que escribiría en Android Studio al firmar una compilación.

Si usa sabores de productos, es posible que tenga que ajustar el código anterior para que todas las configuraciones de versión usen la configuración de firma correcta.

Nota

Si usa la signingConfig opción dentro de la sección del build.gradle archivo (nivel de aplicación), es posible que se produzcan errores de firma de código durante la buildTypes compilación de App Center. Esto es especialmente relevante para las aplicaciones que usan React Native para Android versión 0.60.x y posteriores:

 Execution failed for task ':app:validateSigningRelease'.
 Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'

Para corregir este problema, debe insertar un almacén de claves adecuado que se usa para firmar en el repositorio y habilitar la configuración de My Gradle se establece completamente para controlar la firma automáticamente en la configuración de compilación en el portal de App Center.

En caso de que haya cargado un almacén de claves en la configuración de compilación en el portal de App Center, tenga en cuenta que este enfoque requerirá eliminar la signingConfig opción de la buildTypes sección del build.gradle archivo (nivel de aplicación) si no la actualizó desde el estado predeterminado de la plantilla de proyecto de React Native.