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).
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:
Fig. 1 - Android - versioneCode nell'AndroidManifest.xmlLe 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.
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?
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.
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.
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.
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
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?
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?
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.
*-* 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!!!
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 :)
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.
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.
Va bene grazie mille di nuovo, ci proverò
Ciao Michele, che dio ti benedica !!!!
Sono giorni che stavo impazzendo !!!
GRAZIEEEEEEEEE !!!!
Nunzio
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 :(
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