Posso utilizzare lo stesso file di archivio chiavi per firmare due applicazioni diverse?


92

Devo caricare una nuova applicazione, è solo il design che è leggermente diverso. Ieri ho generato il file keystore per firmare l'applicazione. Posso usare lo stesso?


5
si puoi (anche, hai provato prima di chiedere?)
njzk2

Risposte:


98

Puoi usarlo keystoreper un numero qualsiasi di applicazioni.

Non è necessario generare un nuovo keystore.


6
E per "Alias" cosa dovrei scrivere?
Dr.jacky

14
Un keystore CONTIENE le coppie di chiavi pubbliche / private che costituiscono un certificato di firma. Un keystore può contenere molte coppie di chiavi. Un "alias" è un riferimento a una particolare coppia di chiavi nel keystore. Un keystore può contenere tutte le tue coppie di chiavi, ma dovresti avere una coppia di chiavi per app. Usa il nome dell'app che stai firmando come alias. Puoi avere password separate per il tuo keystore e per ogni coppia di chiavi al suo interno. È possibile modificare queste password e importare / esportare coppie di chiavi dal keystore o aggiungere nuove coppie di chiavi al proprio keystore. Tutto questo viene fatto con il comando "keytool" della riga di comando. Guarda in alto.
brycewjohnson

@brycewjohnson È possibile aggiungere nuove coppie al keystore tramite una GUI?
CinCout

44

Farò una controargomentazione alla risposta del consenso finora.

Sono d'accordo che per la maggior parte degli autori di app la maggior parte del tempo, la condivisione dello stesso keystore / certificato / password tra le app funzionerà correttamente. La cosa fondamentale è utilizzare " lo stesso certificato per tutta la durata prevista delle applicazioni " in modo che l'app possa aggiornarsi da sola.

Ma posso pensare a un ottimo motivo per avere keystore separati per app o famiglie di app separate. Se pensi di voler vendere un'app a qualcun altro affinché possa pubblicarla come aggiornamento dell'originale, dovrai condividere con loro il tuo unico keystore e la tua password per farlo. Probabilmente non è un grosso problema ma un po 'di preoccupazione per te e, forse, un problema di due diligence per un acquirente abbastanza grande.

Inoltre, non leggo davvero la stessa riga nella documentazione allo stesso modo di @ol_v_er. Penso che la linea attuale:

Dovresti firmare tutte le tue app con lo stesso certificato per tutta la durata prevista delle tue applicazioni.

(nota la mancanza di una virgola nella versione corrente) sta semplicemente sottolineando che la raccomandazione "a vita" si applica a tutte le app, non in realtà ti indirizza a utilizzare lo stesso certificato per tutte le tue app.


6
Mantenere keystore separati per ogni app dovrebbe essere la strada da percorrere!
Sufian

Il consiglio è di utilizzare un file diverso per ogni app, giusto? Ma cosa succede se utilizzi lo stesso file di archivio chiavi per più di un'app? Sembra causare alcuni problemi con i servizi Firebase / Google. Immagino sia impossibile usarne uno nuovo (uno diverso per ogni app) se è già fatto, giusto?
sviluppatore Android

42

La documentazione ufficiale ci dice:

In generale, la strategia consigliata per tutti gli sviluppatori è firmare tutte le applicazioni con lo stesso certificato, per tutta la durata prevista delle applicazioni. Ci sono diversi motivi per cui dovresti farlo ...

https://developer.android.com/studio/publish/app-signing.html#considerations

Quindi sì, prova a firmare tutte le tue applicazioni con lo stesso certificato.


8
E per "Alias" cosa dovrei scrivere?
Dr.jacky

6
Per semplificare, usa lo stesso anche per tutte le tue app.
ol_v_er

19

Voglio aggiungere qui qualche chiarimento, perché questa domanda e le risposte fornite mi creano confusione. È fondamentale capire cosa sia effettivamente un keystore.

Un keystore è solo un mezzo per archiviare in modo sicuro la coppia di chiavi pubblica / privata che viene utilizzata per firmare i tuoi apk Android. Quindi sì, puoi usare lo stesso keystore per firmare più apk, senza problemi. Puoi anche utilizzare lo stesso alias (ogni alias è un certificato) per firmare più apk e funzionerà. Tuttavia, ha implicazioni sulla sicurezza. Se il tuo singolo alias è compromesso, tutte le tue app saranno state compromesse.

Tuttavia, se un giorno intendi vendere i diritti sulle tue app, l'utilizzo dello stesso alias per tutte le tue app potrebbe non essere una buona idea. Tuttavia, l'utilizzo dello stesso keystore, a condizione di utilizzare un alias diverso per ogni apk, potrebbe non essere necessariamente una cattiva opzione. Sono sicuro che esiste un modo per spostare un certificato da un keystore a un altro, in modo da poter fornire in modo sicuro le chiavi necessarie solo per quel certificato all'acquirente.

Per essere molto chiaro, un keystore è proprio questo, un supporto di memorizzazione per le chiavi. Non svolge alcun ruolo effettivo nel processo di firma di un apk, ma serve solo a memorizzare le chiavi che vengono effettivamente utilizzate per firmare l'apk.

Riferimenti:

Comprensione keystore, certificati e alias

https://www.digitalocean.com/community/tutorials/java-keytool-essentials-working-with-java-keystores


1
Si prega di non pubblicare risposte identiche a più domande. Pubblica una buona risposta, quindi vota / contrassegna per chiudere le altre domande come duplicati. Se la domanda non è un duplicato, adatta le tue risposte alla domanda.
Paul Roub

Scuse. Sono un noob di SO.
Anthony Stivers

1
Non ho abbastanza rappresentanti per votare per un duplicato. Quindi, se desideri votare le seguenti domande come duplicati, ritengo che questa domanda sia la più appropriata per essere il non duplicato. È il primo posto in Google per le parole chiave pertinenti e ha le risposte più pertinenti. stackoverflow.com/questions/13023509/… stackoverflow.com/questions/14973205/… stackoverflow.com/questions/10514597/…
Anthony Stivers,

Aspettare! Come posso utilizzare lo stesso keystore ma con diversi alias per ogni app ?!
Ziad H.

5

Ovviamente! Puoi utilizzare lo stesso file keystore tutte le volte che vuoi. È sempre meglio utilizzare lo stesso file di archivio chiavi per tutte le applicazioni sviluppate. Ciò ti aiuterà se desideri aggiornare o modificare l'applicazione. A quel punto è necessario firmare la domanda con la stessa chiave.


2

Firmo tutte le mie app utilizzando lo stesso certificato (keystore). Ciò offre un vantaggio se cambio idea e voglio che le mie app condividano i loro dati.

Come forse saprai, Android identifica ogni app con un UID. Se tutte le tue app sono firmate dallo stesso certificato, puoi richiedere ad Android di assegnare lo stesso ID utente a più di un'app e poi farle funzionare in un unico processo e condividere i dati.

Da Android doc android: sharedUserId

android: sharedUserId

Il nome di un ID utente Linux che verrà condiviso con altre applicazioni. Per impostazione predefinita, Android assegna a ciascuna applicazione il proprio ID utente univoco. Tuttavia, se questo attributo è impostato sullo stesso valore per due o più applicazioni, condivideranno tutte lo stesso ID, a condizione che siano anche firmate dallo stesso certificato. Le applicazioni con lo stesso ID utente possono accedere ai dati reciproci e, se lo si desidera, possono essere eseguite nello stesso processo


1

Aggiornamento recente

Se vuoi iscriverti alla firma dell'app di Google devi usare una nuova chiave diversa per firmare il tuo apk o bundle altrimenti dopo il caricamento la console di Google ti darà un messaggio di errore che dice

Hai caricato un APK o un Android App Bundle firmato con una chiave che viene utilizzata anche per firmare gli APK forniti agli utenti. Poiché sei iscritto ad App Signing di Google Play, devi firmare il tuo APK o Android App Bundle con una nuova chiave prima di caricarlo


Sono stato in grado di generare una nuova chiave nella schermata di firma dell'apk di Android Studio. Genera nuovi keystore e alias e potrebbe funzionare. Ha funzionato per me.
Numan Karaaslan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.