Configurazione della firma del codice Android in App Center

Importante

Visual Studio App Center è pianificato per il ritiro il 31 marzo 2025. Anche se è possibile continuare a usare Visual Studio App Center fino a quando non viene completamente ritirato, esistono diverse alternative consigliate a cui è possibile prendere in considerazione la migrazione.

Altre informazioni sulle sequenze temporali di supporto e sulle alternative.

Suggerimento

Per gli utenti di Xamarin.Android, il processo è leggermente diverso. Per informazioni dettagliate, vedere la guida alla firma del codice Xamarin.Android .

La firma di un'app è un requisito per eseguire un'app su dispositivi reali durante il processo di sviluppo o per distribuirla tramite un programma beta o in Play Store. Senza firma del codice, l'app può essere eseguita solo in un emulatore.

Quando App Center compila un'applicazione Android con un tipo di compilazione di debug, non è necessario un archivio chiavi per uno sviluppatore, ma può essere caricato. Queste compilazioni verranno firmate automaticamente con una chiave di debug. Per una build di versione che verrà distribuita, caricare un archivio chiavi in App Center.

Generazione di un archivio chiavi

Se attualmente non si ha un archivio chiavi, è possibile generarne uno in Android Studio. È possibile trovare istruzioni sulla generazione di un archivio chiavi per firmare le API nella Guida dell'utente ufficiale di Android Studio.

Configurazione della firma del codice

App Center supporta tre modi diversi per configurare la firma del codice per le app Android. Per tutti e tre i metodi, è prima necessario passare alla configurazione della compilazione e abilitare la firma del codice:

  1. Passare all'app in App Center.
  2. Passare a Compila.
  3. Passare al ramo che si vuole configurare scegliendolo dall'elenco.
  4. Usare il menu "Impostazioni" nell'angolo in alto a destra oppure scegliere Configura se il ramo non è ancora configurato per la compilazione.
  5. Abilitare Compilazioni firma.
  6. Scegliere Salva.

Quindi, a seconda dello scenario, usare le tre opzioni più adatte nelle sezioni seguenti. La prima opzione prevede l'archiviazione delle credenziali nel repository, mentre le altre due usano App Center per gestire le credenziali.

A partire da Android 11, è obbligatorio usare il firmatario APK (se si usa il livello API 30) perché imposterà alcuni schemi aggiuntivi "APK Signature Scheme v2 now required". App Center ora (dal 17 dicembre 2020) firma le applicazioni Android usando il firmatario APK internamente, anziché il firmatario JAR usato in precedenza. Come parte della funzionalità per abilitare l'accesso APK in App Center, è stata implementata l'attività di firma Android V3 e i requisiti per la nuova attività di firma sono stati modificare la modalità di salvataggio del file dell'archivio chiavi per archiviare il file dell'archivio chiavi in un file sicuro AzDO (attività di compilazione e rilascio di firma Android - Azure Pipelines | Microsoft Docs).

Avviso

Tutte le configurazioni di compilazione con i file dell'archivio chiavi caricati prima del 17 dicembre 2020 usano ancora il metodo di firma APK Signature Scheme v2 (jarsigner). Per usare il flusso di firma APK Signature Scheme v3, gli utenti devono semplicemente ricaricare i file dell'archivio chiavi e salvare la configurazione del ramo.

Nota

L'utilizzo del plug-in Android Gradle versione 4.1.x non è completamente supportato. Per usare questa versione, è necessario aggiungere l'impostazione dell'opzione successiva nel gradle.properties file:

 android.useNewApkCreator = false

A. Archiviazione di tutti gli elementi nella configurazione di Gradle

È possibile specificare i dettagli di firma nel build.gradle file (a livello di app). I dettagli di firma, insieme a tutte le credenziali e alle informazioni dell'archivio chiavi, saranno visibili nel repository. Prima di tutto, aggiungere tutti gli elementi necessari al codice e archiviarli nel repository. Quindi, nella configurazione della compilazione in App Center, abilitare Le impostazioni My Gradle sono completamente impostate per gestire automaticamente la firma.

B. Caricamento di tutti gli elementi in App Center

È possibile caricare l'archivio chiavi e configurare le credenziali di firma tramite App Center. In questo caso, App Center compilerà prima l'app Android e quindi eseguirà un passaggio di firma dopo la compilazione completata.

Nota

Una compilazione può essere firmata una sola volta. Assicurarsi di non avere conflitti con le configurazioni di firma nella configurazione gradle per la variante di compilazione scelta. Se sono presenti impostazioni di firma sia in App Center che nel file Gradle, la compilazione potrebbe terminare due volte e ciò comporta conflitti.

Configurare la configurazione della compilazione in App Center come indicato di seguito:

  1. Disabilitare Le impostazioni Gradle sono completamente impostate per gestire automaticamente la firma.
  2. Caricare il file dell'archivio chiavi nell'elenco a discesa del file di caricamento del file dell'archivio chiavi . È possibile trascinare il file nella casella o fare clic su di esso e cercare il file. I file dell'archivio chiavi hanno l'estensione .keystore o .jks.
  3. Immettere la password dell'archivio chiavi, l'alias della chiave e la password della chiave nei campi corrispondenti. Questi valori sono gli stessi che si immette in Android Studio quando si firma una compilazione.

C. Archiviazione dei dettagli di firma nel repository con variabili di ambiente

Usare questo metodo se il repository contiene già l'archivio chiavi, ma non si vogliono archiviare le credenziali. In fase di compilazione, le credenziali verranno fornite come proprietà di sistema per la compilazione Gradle. Vedere l'esempio di codice seguente su come usarli:

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
        }
    }
}

Nel codice precedente, la protezione dei valori dietro le proprietà di sistema inserite nella compilazione mantiene sicure le credenziali di firma: i valori vengono crittografati e disponibili solo per gli agenti di compilazione in fase di compilazione. È possibile specificare i valori tramite App Center. È anche possibile impostare come hardcoded uno qualsiasi dei valori e archiviarli nel repository. Per usare App Center per proteggere i valori:

  1. Passare alla configurazione della compilazione.
  2. Assicurarsi che la casella di controllo denominata My Gradle settings (Impostazioni personali gradle) sia impostata interamente per gestire la firma automaticamente non selezionata.
  3. Immettere la password dell'archivio chiavi, l'alias della chiave e la password della chiave nei campi corrispondenti. Questi valori sono gli stessi che si immette in Android Studio quando si firma una compilazione.

Se si usano versioni del prodotto, potrebbe essere necessario modificare il codice precedente, in modo che tutte le configurazioni di versione usino la configurazione di firma corretta.

Nota

Se si usa l'opzione signingConfig all'interno della sezione nel build.gradle file (a livello di app), è possibile che si verifichino errori di firma del codice durante la buildTypes compilazione di App Center. Ciò è particolarmente rilevante per le app che usano React Native per Android versione 0.60.x e successive:

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

Per risolvere questo problema, è necessario eseguire il push di un archivio chiavi appropriato usato per accedere al repository e abilitare le impostazioni My Gradle sono completamente impostate per gestire l'accesso automaticamente nella configurazione di compilazione nel portale di App Center.

Nel caso in cui sia stato caricato un archivio chiavi nella configurazione della compilazione nel portale di App Center, tenere presente che questo approccio richiederà di eliminare l'opzione signingConfig dalla buildTypes sezione del file (a livello di build.gradleapp) se non è stata aggiornata dallo stato predefinito del modello di progetto React Native.