MICHELEPISANI.IT
 

Hai già caricato un APK con lo stesso codice di versione

Devi utilizzare un altro codice di versione per il tuo APK

Devi utilizzare un altro codice di versione per il tuo APK
October 04
07:472014

Al caricamento di un nuovo APK tramite la console per gli sviluppatori Android è possibile che venga restituito il messaggio di errore "Caricamento non riuscito. Devi utilizzare un altro codice di versione per il tuo APK perchè ne hai già uno con il codice di versione [codice]", Fig. 1, o in inglese "You need to use a different version code for your APK because you already have one with version code [codice]" (dove al posto di [codice] c'è il numero assegnato come versionCode all'APK che si sta tentando di caricare).

Android - Devi utilizzare un altro codice di versione per il tuo APK perchè ne hai già uno con il codice di versione...

Fig. 1 - Android - Devi utilizzare un altro codice di versione per il tuo APK perchè ne hai già uno con il codice di versione...

Si capisce immediatamente dove sta il problema, l'incriminato è il versionCode che si trova definito nel file AndroidManifest.xml (Fig. 2) e che, solitamente per dimenticanza, non è stato incrementato prima della compilazione del nuovo apk per la pubblicazione su Google Play.
Le specifiche dal sito ufficiale per gli sviluppatori Android, developer.android.com, definiscono il versionCode in questo modo:

An integer value that represents the version of the application code, relative to other versions.


Che tradotto significa "Un valore intero che rappresenta la versione del codice dell'applicazione per distinguerla dalle altre versioni".

Nel caso specifico il valore del versionCode per l'apk che si sta tentando di pubblicare è pari a 12 e l'errore della console ci informa che abbiamo già pubblicato un apk con versionCode 12 pertanto, basandoci sulla sua stessa definizione, basterà incrementare il suo valore di 1 e ricompilare di nuovo l'apk.
L'immagine seguente (Fig. 2) mostra dove è necessario effettuare il cambiamento:

Android - versioneCode nell'AndroidManifest.xml

Fig. 1 - Android - versioneCode nell'AndroidManifest.xml

Le specifiche non impongono una restrizione particolare su come distribuire i valori del versionCode tuttavia suggerisce, ed è buona norma farlo anche per una maggiore gestione e per evitare incomprensioni relative ad aggiornamenti successivi, iniziare con un valore pari ad 1 per la prima release ed incrementare tale numero di 1 per ogni pubblicazione successiva dell'apk.


Il valore del versionCode non ha niente a che vedere con il numero di versione dell'applicazione e non risulta visibile all'utente finale nella scheda del prodotto (a differenza del versionName che, al contrario, rappresenta la versione dell'applicazione che sarà visibile all'utente finale) pertanto non deve preoccuparci quante versioni dell'applicazione pubblichiamo, siano esse dovute a piccoli accorgimenti che a modifiche importanti ciò che importa, e che è obbligatorio, è distinguere ciascuna pubblicazione con un nuovo valore di versionCode.


Tags

Autore

Michele Pisani

Michele Pisani

Ho uno spiccato orientamento al problem-solving, se è troppo facile non mi diverto :)
Credo nella volontà e nel cambiamento perchè hanno fatto della mia passione il mio pane quotidiano.
Se devo descrivermi con una sola parola direi... "Concretezza", la mia stretta di mano è una garanzia.

16 Commenti

  1. alessio Saturday, August 29, 2015 alle ore 19:01

    ciao, io ho avuto un problema, quando ho pubblicato l'app nel minifest ho fatto un errore scrivendo "revisionCode" invece che "versionCode" ora voglio aggiornare la mia app ho cancellato "reviosionCode" e ho messo "versionCode 2" ma mi compare sempre quel messaggio di errore. che posso fare?

    Rispondi a questo commento
    • Michele PisaniAutore Saturday, August 29, 2015 alle ore 21:01

      Ciao alessio,
      sinceramente trovo strano che l'IDE ti abbia fatto compilare il file.
      Questo articolo lo scrissi per Eclipse, ma ho effettuato una prova con Android Studio, che probabilmente credo di dedurre sia quello che utilizzi anche te, e non appena scrivo revisionCode al posto di versionCode mi viene restituito l'errore 'Could not find method revisionCode()...'.
      Nel tuo caso mi assicurerei oltre che ad aver aumentato il valore di versionCode, di aver modificato anche quello di versionName.

      Rispondi a questo commento
  2. Alessio Sunday, August 30, 2015 alle ore 02:12

    Sisi modificò tutto sono arrivato all'esaurimento... Comunque io nella mia app attualmente pubblicata non avevo inserito nel manifest il versionCode... Ma ho inserito il revisionCode come avrai già capito, ed e questo quello che mi sembra strano, xk non avendo inserito il versionCode non doveva neanche farmi pubblicare l'app... Al contrario di adesso che anche se metto versionCode 3458 non mi fa aggiornare l'app, mi esce sempre quell'errore . spero che lei mi sappia aiutare perché seno credo sia stato tutto tempo sprecato.

    Rispondi a questo commento
    • Michele PisaniAutore Sunday, August 30, 2015 alle ore 11:15

      La questione è molto strana, tuttavia l'unica cosa che mi sento di consigliarti è di provare ad utilizzare nella tua app il metodo getPackageInfo(java.lang.String, int) di PackageManager e risalire così all'eventuale valore di versionCode che ha l'app ed impostare eventualmente i valori di conseguenza.

      Rispondi a questo commento
  3. Alessio Sunday, August 30, 2015 alle ore 13:12

    Dove devo inserirlo? Comunque quando mi compare il messaggio di errore mi comunica che ho gia utilizzato una versione 1 e quindi devo cambiarla ma mettendo versionCode 2 mi da sempre lo stesso errore

    Rispondi a questo commento
    • Michele PisaniAutore Sunday, August 30, 2015 alle ore 15:32

      Ho creato un articolo dedicato al metodo getPackageInfo:

      Determinare il versionCode ed il versionName a runtime da codice.

      Utilizzando quello script il Toast ti visualizzerà il valore di versionCode e quello di versionName. Il codice è testato e funzionante.
      Fammi sapere cosa ti viene restituito.
      Ti volevo chiedere una cosa, stai usando Eclipse o Android Studio?
      Inoltre, dove stai inserendo il versionCode?

      Rispondi a questo commento
      • alessio Sunday, August 30, 2015 alle ore 16:07

        si utilizzo android studio, comunque il version code lo inserisco nell'androidmanifest dentro comunque il codice da lei fornito dove lo devo inseire? in che layout?

      • Michele PisaniAutore Sunday, August 30, 2015 alle ore 16:21

        Allora mi è venuto un altro dubbio...
        Con il progetto aperto su Android Studio dovresti avere nella parte sinistra la lista delle cartelle e file del progetto.
        Con la tendina impostata su "Android" dovresti vedere almeno due elementi principali: uno è app, che contiene appunto la cartella "manifest" con dentro AndroidManifest.xml, la cartella java, quella delle risorse ed altre eventuali. L'altro è Gradle Scripts. Espandi quest'ultimo e fai doppio clic su build.gradle (Module: app). Lì dentro dovresti trovare quelle informazioni che non avevi sul Manifest e questo spiegherebbe il motivo per cui l'app è stata pubblicata la prima volta ed il perchè ti dà sempre l'errore sul versionCode 1 anche se inserisci un altro valore.
        A quel punto togli il versionCode e le altre modifiche che hai apportato al Manifest e modifica i valori di versionCode e di versionName in quel file che hai aperto. Sincronizza, compila, crea l'apk con firma e prova a ricaricarlo sul Google Play.

      • alessio Sunday, August 30, 2015 alle ore 16:33

        *-* non so come ringraziarti, ho fatto come mi ha detto ed andato tutto liscio come l'olio, allora ogni volta che devo aggiornare l'app invece di modificare dal manifest devo andare li? grazie di nuovo e se vuole dare un occhio alla mia app si chiama "hits del momento (the moment)" magari può lasciare una sua opinione :) di nuovo grazie mille!!!

      • Michele PisaniAutore Sunday, August 30, 2015 alle ore 16:52

        Di niente, suonava troppo strano il fatto di aver pubblicato l'app senza versionCode, doveva pur esserci un altro motivo.
        Comunque sì, con il gradle su Android Studio le modifiche di tipo defaultConfig tra le quali appunto il versionCode vanno effettuate sul build.gradle (Module: app).
        Un saluto per il momento e a questo punto proverò senz'altro l'app :)

  4. alessio Sunday, August 30, 2015 alle ore 16:58

    volevo chiederti un altra cosa, se non è un problema, sai inserire la pubblicità nelle app? io ho provato in qualche modo e nell'anteprima di android studio mi compare la stringa dedicata alla pubblicità ma quando faccio play per testare l'app li non compare niente.

    Rispondi a questo commento
    • Michele PisaniAutore Monday, August 31, 2015 alle ore 01:03

      E' una domanda che esula dall'argomento dell'articolo ma non essendocene uno dedicato trovo giusto risponderti qui per il momento.

      Per la pubblicità AdMob l'unica cosa che posso suggerirti è fare come ho fatto io, ovvero seguire alla lettera l'articolo ufficiale presente su Google Developer che trovi qui.
      Seguendo quella guida ho inserito senza problemi il banner pubblicitario nella mia app Fontanelle a Livorno (link all'app infondo all'articolo).
      Su alcuni dispositivi ho notato che non compare mentre su altri sì e sinceramente non ho ancora ben capito se si tratta di una mancanza di disponibilità momentanea di adv da mostrare o dipenda da qualche fattore di compatibilità.
      Di sicuro quando fai le prove sul tuo dispositivo devi crearti una chiave di test e quella ti farà comparire di sicuro un banner fittizio nella posizione in cui lo hai inserito.
      Meglio di quella guida non saprei che suggerirti, è chiara e lineare.

      Rispondi a questo commento
  5. Alessio Monday, August 31, 2015 alle ore 08:06

    Va bene grazie mille di nuovo, ci proverò

    Rispondi a questo commento
  6. Nunzio Thursday, October 8, 2015 alle ore 00:33

    Ciao Michele, che dio ti benedica !!!!
    Sono giorni che stavo impazzendo !!!
    GRAZIEEEEEEEEE !!!!

    Nunzio

    Rispondi a questo commento
  7. Fabio Monday, September 7, 2020 alle ore 01:29

    ciao, il mio errore invece è questo:

    APK completamente messo in ombra

    Problema:

    L'APK non verrà pubblicato per nessun utente poiché è completamente messo in ombra da uno o più APK con codici di versione più recenti.

    Risoluzione:

    Rimuovi l'APK dalla release o verifica i codici versione e il targeting degli APK che vuoi includere in questa release.


    ho provato a cambiare versione nell'android manifest usando visual studio piu volte, ma nulla...
    spero che mi aiuterai :(

    Rispondi a questo commento
    • Michele PisaniAutore Tuesday, September 8, 2020 alle ore 01:02

      Ciao Fabio,
      non riesco a riprodurre quel particolare errore, ad ogni modo i valori da aggiornare sono versionCode e versionName. Hai provato ad apportare il loro adeguamento a livello di gradle? Di seguito il link alla documentazione: https://developer.android.com/studio/publish/versioning

      Rispondi a questo commento

Scrivi un Commento

Il tuo indirizzo email non sarà pubblicato.
I campi contrassegnati da un * sono obbligatori

Articoli e Argomenti correlati

Il Canale YouTube in ITALIANO

1 VIDEO GRATIS ogni 2 settimane! ISCRIVITI!

Entra a far parte della community su Facebook

Categorie popolari

Iscriviti alla mia newsletter

La tua e-mail con me sarà al sicuro.
Non fornirò mai le tue informazioni a nessuno!

Ultimi commenti

Michele Pisani

Hai verificato se succede per tutte le pagine da un certo periodo di tempo in poi o solo su alcune?

Tecnowiz

Sono amministratore di un blog pure io... Intanto ti faccio i complimenti per questo articolo. …

Michele Pisani

Ciao Antonio, grazie per la fiducia :) In caso di più fogli è necessario inserire il codice del …

Antonio

Ciao Michele, ho acquistato il tuo libro che unitamente ai tuoi video sta diventando il mio corso …