Condividi tramite


Firmare il codice per Android

Questo articolo spiega come firmare manualmente il codice Android dell'app (APK) per il wrapping di Power Apps. Firma la tua app per Android se hai selezionato Android come una delle piattaforme mentre crei e costruisci il tuo progetto di wrapping.

Importante

Per firmare un'app AAB per la distribuzione in Google Play, vedi Firma l'app.

Operazioni preliminari

Software richiesto

Prima di iniziare, installa e configura:

Prerequisiti

È necessario:

  • Nome dell'applicazione per creare la chiave hash.
  • Il file APK più recente per accedere.

Nota

Utilizzare l'estensione .jks per la firma manuale e l'estensione .pfx per la firma automatica.

Generare la chiave e l'hash di firma

Nota

Passa alla Firma manuale se hai già generato chiavi e hash della firma durante la creazione della registrazione dell'app.

Impostare variabili di ambiente

Se non imposti le variabili di ambiente:

  1. Scarica e installa Android Studio e OpenSSL.
  2. Aggiungi keytool e openssl alla tua variabile di ambiente PATH:
    • Aggiungi C:\Program Files\Android\Android Studio\jbr\bin alla tua variabile di ambiente PATH.
    • Aggiungi il percorso di openssl.exe (ad esempio, C:\Program Files\OpenSSL-Win64\bin) alla tua variabile di ambiente PATH.

Generare l'archivio chiavi e la chiave

Esegui questo comando per generare una chiave:

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

Alla richiesta:

  1. Inserisci una password per il tuo keystore.
  2. Inserisci il nome, l'organizzazione, la posizione e gli altri dettagli richiesti.
  3. Conferma le informazioni.

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

Generare l'hash di firma

Esegui questo comando per generare l'hash della firma:

keytool -exportcert -alias powerappswrap -keystore powerappswrap.jks | openssl sha1 -binary | openssl base64

Quando richiesto, immettere la password del keystore creata in precedenza.

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

Formato di comando alternativo

Se hai impostato le variabili di ambiente, puoi usare il formato generico:

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

Parametri spiegati:

Parametro Descrzione
genkey Comando per generare una chiave
alias Alias per la voce del keystore
keyalg nome dell'algoritmo chiave
keystore Nome del keystore
keysize Dimensione di ogni chiave
validità Validità della chiave in giorni

Esempi:

  • Per Insieme di credenziali delle chiavi (firma automatica), usa un'estensione .pfx:

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000
    
  • Per la firma manuale, utilizza un'estensione .jks:

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore \Users\name\Desktop\powerappswrap.jks -keysize 2048 -validity 10000
    

Esporta il certificato e genera l'hash della firma

Dopo aver generato la chiave, esporta il certificato del keystore usando il comando exportcert:

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

Quando richiesto, immetti la password del keystore.

Parametri spiegati:

Parametro Descrzione
exportcert Legge il certificato dall'archivio chiavi
alias Alias usato per la generazione delle chiavi
keystore Nome del keystore
openssl Genera la chiave SHA1 per Android

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

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

Se viene visualizzato l'errore "L'hash della firma deve essere SHA1 con codifica Base64" nel portale Azure, attenersi alla seguente procedura:

  1. Esegui questo comando. Sostituisci <SIGNATURE_ALIAS> e <PATH_TO_KEYSTORE> con i tuoi valori.

    keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE
    
  2. Quando richiesto, immetti la password del keystore.

  3. Copia il valore SHA1 dalla sezione Impronte digitali certificato.

    • Ad esempio: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  4. Usa un convertitore "Esadecimale in Base64" per convertire il valore SHA1 in Base64.

    • Ad esempio: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  5. Usa il valore Base64 come Hash della firma nel portale di Azure mentre registri l'app.

Firma manuale del pacchetto APK

Segui questi passaggi se non utilizzi l'accesso automatico durante il wrapping o se provi a caricare un file AAB per il Play Store. Per evitare di ripetere questo processo, usa l'accesso automatico quando possibile.

Individua lo strumento apksigner

  1. Android Studio aperti.
  2. Vai a Strumenti>Gestione SDK>Posizione SDK Android per trovare il percorso dell'SDK.
  3. Nella directory SDK, vai a:
    • build-tools>[numero di versione]> trova apksigner.bat (Windows) o apksigner (Mac/Linux)
    • Oppure: build-tools>[numero di versione]>lib> trova apksigner.jar

Uno screenshot con le informazioni sulla posizione di apksigner.

Firma il file APK

Esegui questo comando per firmare il tuo APK:

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

Parametri spiegati:

Parametro Descrzione
ks Percorso del file dell'archivio chiavi (ad esempio) C:\Users\name\Desktop\powerappswrap.jks
ks-key-alias L'alias utilizzato durante la generazione della chiave (ad esempio) powerappswrap
PATH_TO_APK Percorso completo del file APK (ad esempio, C:\Users\name\Downloads\MyApp.apk)

Quando richiesto, immetti la password del keystore.

Esempio:

apksigner.bat sign --ks C:\Users\name\Desktop\powerappswrap.jks --ks-key-alias powerappswrap C:\Users\name\Desktop\MyApp.apk

Verifica la firma

Dopo aver firmato, verifica la firma APK con:

apksigner.bat verify --verbose PATH_TO_APK

Una verifica riuscita conferma che il tuo APK è firmato correttamente e pronto per la distribuzione.

Per ulteriori informazioni, vedi Strumenti della riga di comando Android Studio: apksigner.

Distribuire l'app

Dopo aver firmato l'app, puoi distribuirla in diversi modi:

Opzioni di distribuzione

Vedi anche