2015-05-05 6 views
5

Quando eseguo l'app ogni volta, versionName viene incrementato nel file manifest. significa che è il nome della versione precedente, 20390 è il numero incrementato.gradle android Percorso locale inesistente

enter image description here

progetto è costruito con successo come BUILD SUCCESSFUL. Ma la domanda è questa: perché Android Studio memorizza nella cache la precedente versione di apk. Ecco ciò che è errore:

Target device: lge-nexus_5-061642fd00511249 Uploading file local path: H:\customFolder\app\build\outputs\apk\MyAppName-0.6.200_20383-debug.apk remote path: /data/local/tmp/com.example.app Local path doesn't exist.

Come si presta attenzione quando app funziona su un dispositivo, Android Studio tenta di installare versione di apk. È sbagliato. Qualcuno può aiutarmi? Ho googeled e ho visto questo link.

Ecco come posso cambiare file manifesto con lo script Gradle:

def updateRevisionNumber() {//autoIncrement Version Name 
    def currentVersion = getVersionName(); 
    def currentRevisionInManifest =   currentVersion.substring(currentVersion.indexOf("_")+1); 
    def lastRevision = Integer.parseInt(currentRevisionInManifest) + 1; 
    println("currentRevisionInManifest: " + currentRevisionInManifest); 
    println("lastRevision: " + lastRevision); 

    def oldText = manifestFile.getText(); 
    def changedText =  oldText.replace(currentRevisionInManifest,lastRevision+""); 
    manifestFile.setText(changedText);} 
+0

Qualcuno ha qualche idea? – nAkhmedov

risposta

3

Invece di modificare il file manifesto durante la compilazione, è possibile ignorare il nome della versione nella sezione Android del vostro manifesto:

android { 
    ... 
    defaultConfig { 
     versionName someScriptToComputeVersionName() 
     ... 

E c'è almeno 2 buone ragioni per farlo in questo modo:

  • l'accumulo p il processo non cambierà il codice sorgente (ad es. AndroidManifest.xml non verrà modificato: almeno il file AndroidManifest.xml nelle tue fonti modificabili non sarà modificato)
  • ci sono buone probabilità che Android Studio sia felice.

Ora il tuo problema è quello di definire correttamente la funzione someScriptToComputeVersionName(), dipende da te.

IMO, semplicemente incrementare un numero non è probabilmente la scelta migliore e probabilmente dovresti cercare una soluzione in cui crei il nome della versione basato sul numero di revisione VCS.

+0

AndroidManifest.xml sta cambiando senza dubbio. Ecco _android: versionName = "0.6.200_20390" _ – nAkhmedov

+0

Non ho detto che il tuo AndroidManifest.xml non è cambiato ... ma guarda in \ build \ intermediates \ manifests \ ... vedrai che Android Studio sta usando un altro AndroidManifest.xml per creare l'apk (il risultato di un'unione in un progetto multi-modulo, o il risultato dell'iniezione di alcune configurazioni da build.gradle). Non so quando viene eseguito 'updateRevisionNumber()', ma suppongo che sia troppo tardi (ad esempio AndroidStudio non vede la modifica) – ben75

+0

Tutti loro sono cambiati, ma un po 'strano per me è che l'apk è essere installato quando eseguo _installDebug_ tramite Gradle Task. – nAkhmedov