Il file APK non esiste sul disco


224

Quando sto provando l'applicazione di debug su Android Studio dà questo output di registro:

Il file APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk non esiste sul disco.

Ho riavviato Android Studio, ma non riesco a risolvere questo problema. Come posso risolverlo ? Grazie


9
Come posso risolverlo ? compila un apk
Tim

1
@TimCastelijns In realtà mi chiedo se Android Studio non sia abbastanza intelligente da includere l'attività di creazione dell'apk di debug nell'attività dell'applicazione deb. Gradle dovrebbe essere fatto per questo.
Trilarion

1
@Trilarion Per impostazione predefinita, AS esegue l'attività assembleDebug di Gradle che compila un apk di debug. Qualcosa sembra sbagliato qui, che richiede la compilazione manuale
Tim

2
L'aggiunta di Gradle Make-Aware ha risolto questo problema per me. stackoverflow.com/a/25871525/1712417
Iammesol

2
Prova ad aggiungere "Gradle Make-Aware" stackoverflow.com/questions/18256177/…
Andy Cheng

Risposte:


463

Fare clic su questa opzione per risolvere l'errore:

Esegui: Visualizza> Strumenti Windows> Gradle> [progetto]> Attività> build> build


6
Anche i caratteri speciali nel nome della directory del progetto genereranno questo errore.
NP

50
Questo non ha funzionato affatto per me. Consiglierei le risposte che spiegano perché dovrebbero funzionare piuttosto che dire semplicemente al lettore cosa fare, in modo che possano capire / evitare / risolvere quegli errori in seguito.
persona27

3
Spiegheresti cosa fa esattamente questo e perché si è verificato questo problema?
Hamidreza Sahraei,

tra i "caratteri speciali" sono inclusi anche i numeri. È ridicolo, sprecato tonnellate di tempo su questo. facepalm :)
alexr101,

5
Quel pulsante non esiste sull'ultima versione di Android Studio, ma credo sia l'opzione "Sincronizza progetto con file di livello", che ha funzionato per me.
nasch

208

Se stai riscontrando questo problema dopo l'aggiornamento ad Android Studio V 3.1, prova quanto segue.

Stavo affrontando lo stesso problema quando ho aggiornato ad Android Studio 3.1. Tutte le altre soluzioni che ho trovato qui erano piuttosto manuali perché devi pulire e ricostruire ogni volta, non va bene affatto. Ma grazie alla risposta di Iman Marashi qui sono stato in grado di risolverlo.

Vai a Esegui -> Modifica configurazioni ...

Assicurati di avere un "Make a livello di conoscenza" nella sezione Prima del lancio:

Configurazioni di esecuzione / debug

Per aggiungerlo, fai clic sul segno + e seleziona Crea sensibile al grado e verrà visualizzato un popup, lascia vuoto il campo di testo e fai clic su OK e OK .


13
Questa è la correzione per il recente aggiornamento 3.1. Per me, il primo sintomo di questo problema è stato l'APK che non "risponde" alle modifiche del codice. Ora mi è chiaro che il nuovo APK non si stava costruendo correttamente.
David Gay,

Questa risposta può risolvere per me. Ho aggiornato 3.1 e ottengo questo errore.
ZarNi Myo Sett Vinci il

Il tuo padre ti salva la vita.
Joel Libby,

WOW! Ti meriti 1000 voti in più per questo! Android Studio merita 1000 voti negativi!
Domanda rapida

Grazie, questa è sicuramente la risposta giusta e dovrebbe essere quella accettata
Petar Marijanovic

68

Nel mio caso, l'esecuzione di "Sync Project with Gradle Files" ha aiutato. Né il riavvio di Andoid Studio né la cancellazione della cache hanno fatto nulla.


1
Grazie. Mi aiuta anche. Né riavviare Andoid Studio né cancellare la cache non ha aiutato.
Ivan.panasiuk,

Ho fatto il trucco per me dopo aver cambiato lo script di denominazione che si trova in un file separato dal mio normale build.gradle, quindi Android Studio non ha ripreso automaticamente la modifica e mi ha chiesto di sincronizzare.
Magnus W,

Questa è la vera risposta.
Azizbekian,

3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon

Ha avuto questo problema nel tentativo di eseguire un test unitario. Stava chiedendo a un dispositivo di eseguire un test unitario.
Sergio,

34

Se vuoi solo conoscere la conclusione, vai all'ultima sezione. Grazie.

Di solito quando la costruzione del progetto fallisce, alcuni trucchi comuni che potresti provare:

  • Build -> Clean Project
  • Controlla le varianti di build
  • Riavvia Android Studio (come hai già detto)

Ma per essere più specifici al tuo problema, quando Android Studio non è riuscito a trovare il file APK sul disco. Ciò significa che Android Studio ha effettivamente creato correttamente il progetto e ha anche generato l'APK, tuttavia, per qualche motivo, Android Studio non è in grado di trovare il file.

In questo caso, controllare la directory stampata in base al registro. È utile.

Per esempio:

Con l'anteprima di Android Studio 2.0 (build 143.2443734).

  1. Acquista un commit specifico (in modo che sia staccato dalla testa): git checkout [commit_hash]
  2. Esegui progetto
  3. Android Studio dice: Il file APK / Users / MyApplicationName / app / build / output / apk / app-debug-HEAD.apk non esiste sul disco
  4. Vai alla directory, c'è un file attualmente chiamato: app-debug- (HEAD.apk (con una parentesi extra)
  5. Esegui git branch

    * (HEAD staccato a 1a2bfff)

Quindi qui puoi vedere, a causa dell'errore del mio script build gradle , la denominazione dei file è in qualche modo sbagliata.

L'esempio sopra è solo uno scenario che potrebbe portare allo stesso problema, ma non è necessario essere la stessa causa principale della tua.

Di conseguenza, ti consiglio vivamente di controllare la directory (per trovare la differenza) e controllare il tuo script build.gradle (puoi cambiare il nome apk lì, qualcosa come sotto):

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def newFileName = "whatever you want to name it";
            def apk = output.outputFile;
            output.outputFile = new File(apk.parentFile, newFileName);
        }
    }

2
Il mio problema era che stavo aggiungendo la versione dell'app nel nome APK ma la versione dell'app ha il formato xyz e il "." (punto) nella denominazione stava causando gli errori. Quindi non ricordare altri punti tranne quello prima dell'apk :)
DraganescuValentin

20

Assicurati di non avere apostrofo o & nel percorso


Il "&" era ciò che mi impediva di compilare. Grazie @Rim Gazzeh
Marka Un

19

Assicurati che ci siano configurazioni Make in Run / Debugging in grado di riconoscere la classificazione >> prima della sezione di lancio :

Mi piace questa immagine


17

Ho assistito a un problema simile di solito quando sto cambiando rami git. Per me chiudere Android Studio rm -rfv ~/Library/Caches/AndroidStudio*e riavviare Android Studio è il biglietto.


Il mio problema simile è stato risolto con questo metodo. Ho rinominato i file apk nella build gradle per aggiungere il numero di versione al file, cercando di eseguire il debug della mia attività principale stava cercando di eseguire il nome di file apk errato (numero di versione precedente). Non sono sicuro quando è iniziato, ma funzionava bene fino a quando non ha funzionato.
David,

Cache di Android Studio è un grosso problema!
GeekHades,

È. Ho appena (di nuovo) incrementato il mio numero di build, questo cambia il nome del file apk, ancora una volta ho questo problema.
David,

13

In Android Studio 3.1.1 selezionare File | Sincronizza progetto con file Gradle.

In Android Studio 3, seleziona File | Sincronizzare.

Quindi eseguire nuovamente il progetto.


In Studio v3.1.1, File -> Sincronizza progetto con file Gradle. e sei a posto
Napolean

Quindi in un campo sulla barra degli strumenti in alto (con icones), nella prossima icona a forma di martello devi tornare indietro 'app', nel menu a discesa della configurazione
CodeToLife,

11

L'anno è il 2018. La versione di Android Studio è la 3.2.0 alpha3 e abbiamo ancora questo problema. Poiché nessuno dei precedenti ha funzionato per me, ecco i miei 2 centesimi:

Ogni volta che succede, ho appena generato l'apk dalla riga di comando:

gradlew assembleDebug

AGGIORNARE

L'eliminazione della cartella .AndroidStudio[version]e la perdita di tutte le preferenze e le cache ... sembra risolvere il problema


1
ma questo funziona solo per una build? se si apportano ulteriori modifiche e si preme il pulsante 'play', si spinge semplicemente il vecchio apk e non si ricostruisce per le modifiche.
Stavano

7

Nel mio caso, stavo usando un carattere speciale nel percorso del mio file dell'app. Ho chiuso la Studio Android e rimosso il ' personaggio dal mio percorso di file app. Tutto ha funzionato bene quando ho riaperto il progetto.


Sì, idealmente Android Studio dovrebbe essere abbastanza intelligente da impedire agli utenti di utilizzare caratteri speciali nel loro percorso di file. O meglio avrei dovuto seguire da solo le buone pratiche di programmazione :)
Codice immortale

6

Ho risolto la creazione di un apk usando l'opzione Build dalla finestra superiore e Build APK. Non c'è bisogno di fare qualcosa di strano.


6

Per utenti come Unix (Linux / MacOs X), invece di rimuovere ~ / .gradle / caches /, nella riga di comando fare:

$ cd path_to_you_project
$ touch build.gradle

Quindi chiedi ad Android Studio di creare APK, ripristinerà la cache gradle stessa.


5

Il mio problema è che stavo aggiungendo il numero di versione all'APK. La modifica del numero di versione e la risincronizzazione di Gradle hanno risolto il problema per me.

def appendVersionNameVersionCode(variant, defaultConfig) {
    variant.outputs.each { output ->
        if (output.zipAlign) {
            def file = output.outputFile
            def removeApp = file.name.replace("app-", "")
            def removeType = removeApp.replace("-release", "")
            def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
            output.outputFile = new File(file.parent, fileName)
        }

        def file = output.packageApplication.outputFile
        def removeApp = file.name.replace("app-", "")
        def removeType = removeApp.replace("-release", "")
        def fileName = removeType.replace(".apk", "." + defaultConfig.versionName + ".apk")
        output.packageApplication.outputFile = new File(file.parent, fileName)
    }
}

Hai chiamato appendVersionNameVersionCode in gradle stesso?
Dhrupal,



2

Se hai provato tutte le risposte sopra e non ha funzionato, prova a disabilitare la funzione "Instant Run". Questo mi ha aiutato dopo tutti i tentativi.

File -> Impostazioni -> Build, Execution, Deployment -> Instant Run -> Deseleziona la casella di controllo lì


2

Ho anche avuto quel problema, dopo aver pulito la build. Per me la soluzione è stata semplicemente sincronizzare il grado e ha funzionato per me.


2

Nel mio caso il problema era che la configurazione del debug non era valida qualche modo, anche se il nome, la classe o il pacchetto del metodo di test non sono cambiati.

Ho eliminato le configurazioni da Esegui-> Modifica configurazioni, qui:

inserisci qui la descrizione dell'immagine

Android Studio ne creerà uno nuovo automaticamente.


Quindi è necessario fare clic sul progetto File / Re-Import Gradle. Ciò ricrea la configurazione della corsa eliminata.
Juan Ignacio Barisich,

1

Di fronte allo stesso problema con il livello 1.5

Ho dovuto pulire i file di build:

Build -> Clean project

E crea un APK per forzare la compilazione e la sincronizzazione complete dei file gradle:

Build -> Build APK

Non so ancora perché o come sia successo.


1

se stai usando Linux, prova a impostare i permessi di scrittura nella cartella app / build.


1

Ho avuto lo stesso problema. era dovuto al nome falso nel percorso. c'era un personaggio speciale nel percorso come questo: C: \ User \ My App \ Projekte-Tablet & Handy ho eliminato il carattere "&" e ha funzionato bene.


1

Il mio problema era includere minuti nel nome del file: cercava appname_debug_0.9.0.1_170214_2216.apk quando il file generato era appname_debug_0.9.0.1_170214_2217.apk, quindi il codice del file di output (intercettato da altrove) veniva chiaramente chiamato da due punti diversi nella build.

applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def project = "appname"
            def SEP = "_"
    //        def flavor = variant.productFlavors[0].name
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def version = variant.versionName
            def date = new Date();
            def formattedDate = date.format('yyMMdd_HHmm')

            def newApkName = project + SEP + /*flavor + */ SEP + buildType + SEP + version + SEP + formattedDate + ".apk"

            output.outputFile = new File(output.outputFile.parent, newApkName)
        }
    }

da dove viene questo blocco?
Nerius Jok

Veniva da un altro thread di scambio di stack da quando stavo impostando il progetto per la prima volta (e avevo ben poca idea di cosa stavo facendo - non è cambiato nulla lì). Poiché questa parte di Gradle è stata modificata alcune volte, è probabilmente un codice obsoleto ora.
Ian Spencer,

1

Il problema per me era che in qualche modo non riusciva davvero a trovare l'apk, mentre l'apk esiste.

The APK file /Users/Paul/AndroidStudioProjects/android-tv-launcher/ui/build/outputs/apk/nameofapk.apk does not exist on disk.
Error while Installing APK

Tutto quello che dovevo fare era fare clic con il pulsante destro del mouse sul relativo percorso apk-copy e basta

adb install -r <paste of relative path>

E l'apk è stato installato ed è pronto. Questo problema si è verificato su OSX per me.


1

Risolto a maggio del 2018 con il nuovo Android Studio 3.1. Elimina le directory .gradle, .idea e crea all'interno della cartella dell'app. Quindi prova a eseguirlo di nuovo e non vedrai l'errore.


1

Sincronizza, pulisci, ricostruisci e invalida la cache e riavvia

Nessuno di loro ha funzionato per me.

Ho eliminato i file APK e output.json nella cartella di rilascio e nella cartella di debug e poi ho provato a sincronizzare, pulire e compilare, quindi ha funzionato bene.


0

Cambio file build.gradle un po 'di informazioni e faccio clic su "Sincronizza ora", ok.



0

Assicurati che nel percorso generato nei tuoi registri, nel tuo caso:

/Users/MyApplicationName/app/build/outputs/apk/app-debug.apk

la cartella "output" ha effettivamente una cartella "apk".

Questo era il mio problema, se non è presente, dovrai eseguire l'attività "assembleRelease" in gradi seguendo lo screenshot seguente;

Passaggi per eseguire l'attività gradle assemble Rilasciare Quindi verrà generata la cartella.


0

Nulla sopra mi ha aiutato, ma l'ho capito passando a un altro sapore nel pannello Strumenti di costruzione e poi tornando a quello necessario.


0

modifica il file: build.gradle (directory dell'app). in effetti: non è necessario modificare questo file, ma solo per ottenere suggerimenti sulla sincronizzazione, quindi sincronizzare il progetto.

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.