Autore Topic: Keystore e JDK - Un pacchetto con stesso nome e diversa firma è già installato  (Letto 1981 volte)

Offline Revenge

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
Ciao a tutti,

ho la necessità di effettuare un aggiornamento ad una app sviluppata tempo fa.
Una volta completata la modifica genero l'apk (IntelliJ - Generate Signed APK) utilizzando il keystore che avevo messo da parte.

Vado a provare l'apk sul dispositivo (ho già la precedente versione installata) ma al momento dell'installazione mi esce la seguente dicitura:

Un pacchetto con stesso nome e diversa firma è già installato

Fermo restando che il keystore è quello corretto (era da parte e non ne ho altri), fermo restando che la password è corretta (altrimenti se la scrivo male mi da errore)....
l'unica spiegazione valida al problema sembrerebbe essere l'utilizzo di una diversa versione della JDK.

Ho il sospetto che "al tempo" avevo utilizzato una JDK 1.7 (so che in effetti non è dichiarata come completamente supportata da Android).
Al momento ho provato a ribuildare l'app e rigenerare l'apk sia usando la JDK 1.7.x che la 1.6.xx ma il risultato è sempre lo stesso.

Sapreste darmi una mano a capire come fare per identificare la JDK corretta da utilizzare? (se esiste un modo)... sempre che il problema sia realmente questo... o a capire come posso fare a rigenerare un apk corretto senza dover ripiegare nel cambio nome package che comporta comunque la necessità di una reinstallazione senza poter "aggiornare" direttamente dal playstore nel momento in cui la pubblicherò?

Grazie,   
  Revenge

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
0
Secondo me la JDK è irrilevante.

Sicuro che non stai cercando di installare direttamente (sideload) un'app di cui hai la versione precedente installata da Play store?
Oppure stai cercando di installare direttamente un'app compilata in debug con una firma di debug diversa da quella con cui hai firmato la versione precedente sempre di debug?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Revenge

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
0
Sulla questione della JDK, gironzolando un po' in rete, ho letto che viene utilizzato un algoritmo differente a seconda che si usi la 1.6 o la 1.7 (SHA-1, MD5) quindi immagino che sarebbe ipotizzabile un problema del genere... ed in effetti ci sono persone che hanno avuto lo stesso problema

Per quanto riguarda il keystore.... usando il Generate Signed APK di IntelliJ mi chiede espressamente di selezionare il mio keystore inserendo poi key, alias e password (e se sbaglio a scrivere qualcosa mi va in errore la generazione ad es. per password errata)

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
0
Per quanto riguarda il keystore.... usando il Generate Signed APK di IntelliJ mi chiede espressamente di selezionare il mio keystore inserendo poi key, alias e password (e se sbaglio a scrivere qualcosa mi va in errore la generazione ad es. per password errata)

Ma poi il signed APK lo installi copiandolo sul telefono, oppure passando dal PlayStore?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline Revenge

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
0
Ho provato sia direttamente sullo smartphone con apk.....

sia a caricare l'apk (in versione alpha così da non impattare sull'esistente in caso di problemi) sul play store ed il risultato è il seguente:
Citazione
Caricamento non riuscito
Hai caricato un APK che è firmato con un certificato diverso da quello dei tuoi APK precedenti. Devi utilizzare lo stesso certificato. Gli APK esistenti sono firmati tramite certificati con queste fingerprint:

[ SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ]
. I certificati utilizzati per firmare l'APK che hai caricato hanno queste fingerprint:
[ SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX ]

ovviamente ho messo le XX:XX sulle fingerprint qui sul messaggio per sostituire quelle reali
e le fingerprint sono differenti

effettivamente così mi dice almeno che si tratta di SHA1

Aggiornamento: qualcosa di simile era successo qui: SHA1 errata in play-store - Android Developers Italia ma in questo caso il keystore è il mio e non he ho mai creati altri.

eseguendo un
Codice (Java): [Seleziona]
keytool.exe -v -list -keystore C:\android\mykeystore sia da java1.6 che da java1.7 lo SHA risulta essere lo stesso... ma differente da quello già presente sul playstore
« Ultima modifica: 11 Febbraio 2014, 17:01:06 CET da Revenge »

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
0
ItelliJIdea non genera nessuna chiave è un IDE, richiama semplicemente il programma del JDK di Oracle per creare la chiave. Devi usare esattamente lo stesso file della chiave usata per firmare app installata, rigenerarla è inutile, contiene informazioni univoche non riproducibili generate nell'istante in cui crea la chiave e la salva sul file.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline Revenge

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
0
si, chiaro che intellij sfrutta gli strumenti di java collegati per generare il tutto.

comunque a giudicare dal fatto che le fingerprint SHA1 sono differenti e che provando a verificare il keystore le due JDK mi restituiscono lo stesso risultato....
inizio seriamente a pensare di aver perso il keystore corretto (non avendone prodotti altri... l'unica possibilità è che questo sia stato una prova) o, spero, di averlo conservato da qualche altra parte (mi farò un check dei vari hdd esterni)

speriamo bene...