Firmare il codice per Android

In questo articolo, apprenderai come firmare il codice per Android (APK). Devi firmare la tua app per Android se hai selezionato Android come una delle piattaforme mentre crei e costruisci il tuo progetto di wrapping.

Importante

Se invece desideri firmare un'app AAB per la distribuzione di Google Play, fai riferimento a Firmare l'app.

Preparare il PC

Per iniziare dovrai eseguire le seguenti operazioni:

Generare le chiavi

Nota

Salta alla firma del pacchetto APK se hai già generato chiavi e hash della firma durante la creazione della registrazione dell'app.

Useremo keytool.exe (disponibile dopo l'installazione di Android Studio, dal percorso della cartella "Unità:\Programmi\Android\Android Studio\jre\bin\keytool.exe") per creare un certificato per firmare il pacchetto dell'applicazione. Keytool viene utilizzato per gestire un keystore (database) di chiavi crittografiche, catene di certificati X.509 e certificati attendibili.

Per generare una chiave, apri un prompt dei comandi ed esegui il comando seguente:

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

Parametri:

  • genkey - comando per generare una chiave.
  • alias - indica l'alias da utilizzare in futuro per fare riferimento alla voce del keystore contenente le chiavi che verranno generate.
  • keyalg - nome dell'algoritmo chiave.
  • keystore - nome del keystore che stai utilizzando.
  • keysize - dimensione di ciascuna chiave da generare.
  • validity - validità della chiave in numero di giorni.

Esempio:

  • Se si prepara Key Vault, PATH_TO_KEYSTORE deve avere l'estensione .pfx.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • Se stai preparando la firma manuale, PATH_TO_KEYSTORE deve avere l'estensione .jks.

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

Screenshot con il comando keytool che utilizza i parametri nell'esempio sopra.

Generare l'hash di firma

Nota

Salta alla firma del pacchetto APK se hai già generato chiavi e hash della firma durante la creazione della registrazione dell'app.

Dopo aver generato la chiave, useremo il comando exportcert in keytool per esportare il certificato del keystore.

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

Parametri:

  • exportcert - legge dal keystore il certificato associato all'alias e lo memorizza nel file cert_file. Quando non viene specificato alcun file, il certificato viene inviato a stdout.
  • alias - l'alias utilizzato durante la generazione delle chiavi prima.
  • keystore - nome del keystore che stai utilizzando.
  • openssl - genera la chiave SHA1 per Android.

Aggiungi l'hash di firma generato nell'URI di Reindirizzamento mentre registri l'app.

Convertire manualmente l'esadecimale SHA1 in hash della firma con codifica Base64

È possibile che venga visualizzato il seguente errore se l'hash della firma non è codificato correttamente o non è accettabile nel portale di Azure:

"L'hash della firma deve essere SHA1 con codifica base64."

Quando viene visualizzato questo errore, prova a generare l'hash della firma utilizzando invece i seguenti passaggi:

  1. Esegui keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE per elencare le informazioni sul certificato in modalità dettagliata.
  2. Copia il valore SHA1 nella sezione Impronte digitali certificato dall'output. Assicurati di copiare solo il valore esadecimale.
    Ad esempio: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. Utilizza qualsiasi convertitore disponibile da "Esadecimale a Base64" per convertire il valore esadecimale dell'impronta digitale del certificato copiato in un valore codificato Base64.
    Esempio di valore codificato in Base64: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Copia il valore codificato Base64 generato come Hash della firma nel portale di Azure mentre registri l'app.

Firmare il pacchetto APK

Per firmare il pacchetto APK, utilizzeremo lo strumento apksigner. Questo strumento ti consente di firmare gli APK e assicurarti che la firma del pacchetto APK venga verificata correttamente su tutte le piattaforme Android supportate dagli APK.

Trovare gli apksigner

  1. Controlla il percorso Android SDK in Android Studio.

  2. Seleziona Strumento > Gestione SDK > Posizione Android SDK.

    Se utilizzi iOS, controlla il file apksigner nella directory buildTools Version:

    Vai a SDK directory > build-tools > buildToolsVersion > lib, e controlla il file apksigner.jar

Usare il file apksigner

Esegui il comando seguente per utilizzare apksigner e firmare il pacchetto:

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

Parametri:

  • ks - percorso del keystore.
  • ks-key-alias - percorso dell'alias di chiave del file APK.

Quando richiesto, immetti la password.

Maggiori informazioni: Strumenti della riga di comando Android Studio: apksigner

Distribuire l'app

Puoi anche ospitare il pacchetto in un servizio di distribuzione come App Center. Per distribuire tramite Microsoft Intune, vedi Aggiungere un'app line-of-business per Android a Microsoft Intune. Per informazioni su come concedere a un'app l'accesso al servizio Protezione app di Intune, vedi Concedere alla tua app l'accesso al servizio Protezione app di Intune.

Vedi anche