Concetti di Android (per sviluppatori web)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Se sei uno sviluppatore web e non hai mai utilizzato Android e Google Play, dovresti trovare alcuni dettagli di cui tenere conto. Esistono già molte risorse e documentazione a riguardo (grazie al di formazione) ma di seguito tratteremo alcuni concetti importanti e la loro relazione con il bubble wrap.

Chiave di caricamento e chiave di firma

Se prevedi di utilizzare Bubblewrap per generare un Android App Bundle (AAB) (nota: a partire da agosto) 2021, Google Play richiederà che tutte le nuove app utilizzino il formato Android App Bundle) o un APK per caricarlo e pubblicarlo su Google Play, dovrai firmare la tua app con una chiave di firma. Google Google Play offre due opzioni per gestire questa situazione:

  • Firma dell'app di Google Play (vivamente consigliata): Google gestirà e proteggerà la chiave di firma della tua app. per te. che utilizza per firmare gli APK da distribuire. La firma dell'app di Google Play utilizza due chiavi. L'app " chiave di firma" che Google gestirà per te e la "chiave di caricamento" che conservi e che devi mantenere privato per te. Puoi usare la chiave di caricamento per firmare l'app per il caricamento su Play Console. Questo consente di reimpostare la chiave di caricamento in caso di smarrimento o compromissione. contattando il team di assistenza di Google Play. Attualmente, Google Play ti consente di caricare la tua app come AAB o APK:
    • Android App Bundle (AAB): quando carichi un AAB in Play Console, rinviare la creazione e la generazione di APK al Google Play Store. Quando un utente scarica e installa la tua app, Google Play la distribuisce sotto forma di APK firmato. Pertanto, anche la firma degli APK dovrà essere effettuata su Google Play. Pertanto, per impostazione predefinita, se carichi la tua app come AAB in Play Console, richiedono l'uso della firma dell'app di Google Play.
    • APK: con gli APK, puoi scegliere di attivare la firma dell'app di Google Play. Attivazione dell'app Play in corso... La firma è vivamente consigliata perché aumenta la sicurezza della chiave di firma. Come indicato in precedenza, a breve Google Play richiederà di caricare tutte le nuove app in formato AAB, quindi consigliamo di farlo invece di caricare gli APK.
  • Gestisci la tua chiave di firma: se scegli di gestire la tua chiave e di non attivare l'app Google Play. Firma, sei completamente responsabile della chiave di firma della tua app. A differenza della firma dell'app di Google Play, non è possibile reimpostarla se perdi la chiave. Di conseguenza, se perdi la chiave di firma dell'app non potranno più aggiornare l'app.

Durante la configurazione di bubblewrap init, quando arrivi alla sezione "Informazioni sulla chiave di firma (5/5)", ti verrà chiesto di inserire i valori "Posizione archivio chiavi" e "Nome chiave" oppure utilizzare i valori predefiniti. La La posizione predefinita dell'archivio chiavi è il file android.keystore nella directory del progetto e la posizione predefinita il nome della chiave è android. Se Bubblewrap non trova un archivio chiavi esistente con quel nome di chiave nella automaticamente, ne creerà una per te e ti chiederà anche le password. Prendi nota delle password inserito perché ti serviranno durante il processo di compilazione (bubblewrap build), durante il quale verrà utilizzato per firmare l'app. Se attivi la firma dell'app di Google Play, viene utilizzata la chiave di firma generata e utilizzata per firmare la tua app diventa la "chiave di caricamento". Sia che tu scelga di utilizzare La chiave generata dal wrapping è stata generata come chiave di firma o caricamento. Devi proteggerla e mantenerla privata. Sconsigliamo di eseguirne il commit nel controllo della versione. Limita invece il numero di individui con per accedervi.

I link agli asset digitali sono necessari per dichiarare la relazione tra il tuo sito web e il tuo account Android dell'app. Per assicurarti che l'app per Android generata da Bubblewrap sia verificata e venga lanciata come Attività web attendibile (anziché una scheda personalizzata di Chrome), dovrai aggiungere la chiave appropriata per il tuo file assetlinks.json. Quindi caricalo sul tuo sito web all'indirizzo .well-known/assetlinks.json (relativa alla radice). Il file assetlinks.json deve avere questo formato:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

Recuperare l'impronta digitale del certificato SHA256

Per creare il file assetlinks.json, devi avere l'impronta digitale del certificato SHA 256 associata con la chiave di firma dell'app. È importante notare che le impronte associate le chiavi di firma e di caricamento saranno diverse. È importante tenere questa distinzione, soprattutto se noti che la tua app viene avviata come scheda personalizzata di Chrome (con la barra del browser visibile). È probabile che il file assetlinks.json non contenga corrispondente alla chiave appropriata.

È utile disporre dell'impronta digitale del certificato di firma e di caricamento nel file assetlinks.json per eseguire più facilmente il debug locale dell'app. Per ulteriori informazioni, consulta la sezione Aggiungere altre chiavi di seguito. informazioni su come inserire entrambe le chiavi nel file assetlinks.json.

Esistono due modi diversi per recuperare l'impronta, descritti in dettaglio nelle sezioni successive. Tutti dovrebbero darti le stesse impronte, quindi scegli pure il metodo più adatto pratico.

Tramite Play Console

A seconda che attivi o meno la firma dell'app di Google Play, potresti avere uno o due token. Per recuperare l'impronta SHA256 appropriata per ogni chiave:

  1. Vai a Play Console.
  2. Seleziona l'app che ti interessa
  3. Nel menu di navigazione a sinistra, in Release, vai a Configurazione -> Integrità dell'app.
  4. Copia il codice SHA256 per la chiave appropriata:

Recupera l'impronta digitale del certificato SHA256 appropriata per la tua chiave di firma o caricamento

  • Chiave di firma: copia l'impronta SHA256 nel campo "Certificato chiave di firma dell'app". Questo l'impronta corrisponderà alla tua app se la scarichi dal Google Play Store, Google Play distribuisce la tua app firmata con la chiave di firma.

  • Chiave di caricamento: copia l'impronta SHA256 in "Upload key certificate" (Certificato della chiave di caricamento). Questo l'impronta digitale corrisponderà all'app se la installi localmente (tramite ADB tramite USB per esempio). L'APK (sul tuo computer locale) è stato creato da Bubblewrap, pertanto è stato firmato da anche la chiave che ha creato per te (durante la configurazione di init). Ricorda che potrebbe essere per l'app installata in locale, che però diventa in realtà la "chiave di caricamento" una volta pubblichi l'app tramite Google Play.

Via keytool

keytool è una chiave di gestione dei certificati. Puoi usare keytool per estrarre l'impronta SHA 256 associata l'APK o il Bubblewrap AAB generato. Tieni presente che questa fingerprint è per la chiave di firma locale e se Se carichi l'app su Google Play e attivi la firma dell'app di Google Play, questa chiave diventa la "chiave di caricamento".

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

Un altro modo per recuperare il file Digital Asset Links corretto per la tua app è utilizzare lo strumento Asset Link:

  1. Installa lo strumento Asset Link dal Play Store.
  2. Sullo stesso dispositivo, scarica la tua app dal Google Play Store o installala localmente.
  3. Apri l'app Asset Link Tool e ti verrà fornito un elenco di tutte le applicazioni installate sul tuo dispositivo in base al nome del pacchetto. Filtra l'elenco in base all'ID applicazione scelto in precedenza durante bubblewrap init e fai clic sulla voce.
  4. Vedrai una pagina con la firma della tua app e un Digital Asset Link generato. Fai clic sul Copia o condividi i pulsanti in basso per esportarlo come preferisci (ad es. salvando in Google Keep, inviala per email a te stesso).

Vale la stessa cosa di prima per le chiavi di firma o di caricamento. Se hai installato l'app da Google Play Store, lo strumento Asset Link ti fornirà l'impronta per la chiave di firma dell'app. Se hai installato l'app direttamente dal computer locale, l'impronta è per la chiave Bubble wrap generato.

Dopo averlo caricato, assicurati di poter accedere al file del link agli asset in un browser. Verifica che https://example.com/.well-known/assetlinks.json sia stato risolto nel file che hai appena caricato.

Siti web basati su Jekyll

Se il tuo sito web è generato da Jekyll (ad esempio Pagine GitHub), dovrai aggiungere una riga di in modo che la directory .well-known sia inclusa nell'output. La guida di GitHub contiene ulteriori informazioni su questo argomento. Crea un file denominato _config.yml nella directory principale del tuo sito (o aggiungilo se esiste già) e inserisci:

# Folders with dotfiles are ignored by default.
include: [.well-known]

Aggiunta di altre chiavi

Un file Digital Asset Link può contenere più di un'app e, per ogni app, può contenere più di una chiave. Ad esempio, per aggiungere una seconda chiave è sufficiente utilizzare il metodo Strumento Link asset per determinare la chiave e aggiungerla come seconda voce. Il codice in Chrome che analizza questo JSON è abbastanza rigoroso, quindi assicurati di non aggiungere accidentalmente un una virgola aggiuntiva alla fine dell'elenco.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

Risoluzione dei problemi

Chrome registra il motivo per cui la verifica di Digital Asset Links non va a buon fine e puoi visualizzare i log su un Dispositivo Android con adb logcat. Se stai sviluppando su Linux/Mac, puoi visualizzare i log pertinenti da un dispositivo connesso con:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

Ad esempio, se vedi il messaggio Statement failure matching fingerprint., devi utilizzare la classe Lo strumento Link asset per vedere la firma della tua app e assicurarti che corrisponda a quella indicata nel tuo assetlinks.json .