Die APK-Datei ist nicht auf der Festplatte vorhanden

224

Wenn ich eine Debug-Anwendung unter Android Studio versuche, wird folgende Protokollausgabe angezeigt:

Die APK-Datei /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk ist auf der Festplatte nicht vorhanden.

Ich habe Android Studio neu gestartet, kann dieses Problem jedoch nicht lösen. Wie kann ich das lösen? Danke dir

Sorunluadam
quelle
9
Wie kann ich das lösen? kompiliere eine apk
Tim
1
@ TimCastelijns Ich frage mich eigentlich, ob Android Studio nicht intelligent genug ist, um die Aufgabe create debug apk in die Aufgabe deb deb application aufzunehmen. Gradle sollte dafür gemacht werden.
Trilarion
1
@Trilarion Standardmäßig führt AS die assembleDebug-Task von gradle aus, die eine Debug-Apk kompiliert. Hier scheint etwas nicht zu stimmen, was eine manuelle Kompilierung erfordert
Tim
2
Durch Hinzufügen von Gradle Make-Aware wurde dieses Problem für mich behoben. stackoverflow.com/a/25871525/1712417
Iammesol
2
Versuchen Sie, "Gradle Make-Aware" stackoverflow.com/questions/18256177/…
Andy Cheng

Antworten:

463

Klicken Sie auf diese Option, um den Fehler zu beheben:

Ausführen: Ansicht> Tool Windows> Gradle> [Projekt]> Aufgaben> Erstellen> Erstellen

指尖 上 的 Android
quelle
6
Sonderzeichen in Ihrem Projektverzeichnisnamen lösen ebenfalls diesen Fehler aus.
NP
50
Das hat bei mir überhaupt nicht funktioniert. Ich würde Antworten empfehlen, die erklären, warum sie funktionieren sollen, anstatt dem Leser nur zu sagen, was zu tun ist, damit er diese Fehler später verstehen / vermeiden / lösen kann.
Person27
3
Würden Sie erklären, was genau dies bewirkt und warum dieses Problem aufgetreten ist?
Hamidreza Sahraei
Übrigens enthalten "Sonderzeichen" auch Zahlen. Es ist lächerlich, viel Zeit damit zu verschwenden. facepalm :)
alexr101
5
Diese Schaltfläche ist in der neuesten Version von Android Studio nicht vorhanden, aber ich glaube, es ist die Option "Projekt mit Gradle-Dateien synchronisieren", die für mich funktioniert hat.
Nasch
208

Wenn Sie nach dem Update auf Android Studio V 3.1 auf dieses Problem stoßen, versuchen Sie Folgendes.

Ich hatte das gleiche Problem, als ich auf Android Studio 3.1 aktualisiert habe. Alle anderen Lösungen, die ich hier gefunden habe, waren ziemlich manuell, da Sie jedes Mal reinigen und neu erstellen müssen, das ist überhaupt nicht gut. Aber dank Iman Marashis Antwort hier konnte ich es lösen.

Gehen Sie zu Ausführen -> Konfigurationen bearbeiten ...

Stellen Sie sicher, dass Sie im Abschnitt Vor dem Start ein "Gradle-fähiges Make" haben:

Konfigurationen ausführen / debuggen

Um es hinzuzufügen, klicken Sie auf das + -Zeichen und wählen Sie Gradle-fähiges Make. Ein Popup wird angezeigt. Lassen Sie einfach das Textfeld leer und klicken Sie auf OK und OK .

Sieben
quelle
13
Dies ist das Update für das letzte 3.1-Update. Für mich war das erste Symptom dieses Problems, dass die APK nicht auf Änderungen im Code "reagierte". Mir ist jetzt klar, dass die neue APK überhaupt nicht richtig gebaut wurde.
David Gay
Diese Antwort kann für mich lösen. Ich habe 3.1 aktualisiert und erhalte diesen Fehler.
ZarNi Myo Sett Win
Ihr Vater ist ein Lebensretter.
Joel Libby
BEEINDRUCKEND! Sie verdienen 1000 Stimmen dafür! Android Studio verdient 1000 Stimmen!
1QuickQuestion
Danke, dies ist definitiv die richtige Antwort und sollte die akzeptierte sein
Petar Marijanovic
68

In meinem Fall hat das Ausführen von "Projekt mit Gradle-Dateien synchronisieren" geholfen. Weder ein Neustart von Andoid Studio noch das Löschen des Caches haben etwas bewirkt.

Bartek
quelle
1
Vielen Dank. Es hilft mir auch. Weder ein Neustart von Andoid Studio noch das Löschen des Caches haben geholfen.
ivan.panasiuk
Hat den Trick für mich gemacht, nachdem ich das Benennungsskript geändert habe, das sich in einer anderen als meiner normalen Datei befindet build.gradle, sodass Android Studio die Änderung nicht automatisch aufgegriffen und mich zur Synchronisierung aufgefordert hat.
Magnus W
Das ist die wahre Antwort.
Azizbekian
3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon
Hatte dieses Problem versucht, einen Unit-Test durchzuführen. Es wurde nach einem Gerät gefragt, um einen Unit-Test durchzuführen.
Sergio
34

Wenn Sie nur die Schlussfolgerung wissen möchten, gehen Sie bitte zum letzten Abschnitt. Vielen Dank.

Wenn das Erstellen eines Projekts fehlschlägt, können Sie normalerweise einige gängige Tricks ausprobieren:

  • Erstellen -> Projekt bereinigen
  • Aktivieren Sie Build-Varianten
  • Starten Sie Android Studio neu (wie bereits erwähnt)

Aber um genauer auf Ihr Problem einzugehen - wenn Android Studio die APK-Datei nicht auf der Festplatte finden konnte. Dies bedeutet, dass Android Studio das Projekt tatsächlich erfolgreich erstellt und auch die APK generiert hat. Aus irgendeinem Grund kann Android Studio die Datei jedoch nicht finden.

In diesem Fall überprüfen Sie bitte das gedruckte Verzeichnis gemäß dem Protokoll. Es ist hilfreich.

Beispielsweise:

Mit Android Studio 2.0 Preview (Build 143.2443734).

  1. Auschecken zu einem bestimmten Commit (so dass es vom Kopf getrennt ist): git checkout [commit_hash]
  2. Projekt ausführen
  3. Android Studio teilt Folgendes mit: Die APK-Datei / Users / MyApplicationName / app / build / output / apk / app-debug-HEAD.apk ist auf der Festplatte nicht vorhanden
  4. Gehen Sie in das Verzeichnis, es gibt eine Datei mit dem Namen: app-debug- (HEAD.apk (mit einer zusätzlichen Klammer)
  5. Führen Sie den Git-Zweig aus

    * (KOPF bei 1a2bfff abgenommen)

Hier konnte man also sehen, dass die Benennung von Dateien aufgrund des Fehlers meines Gradle-Build-Skripts irgendwie falsch ist.

Das obige Beispiel ist nur ein Szenario, das zu demselben Problem führen kann, aber nicht die gleiche Grundursache wie Ihre sein muss.

Aus diesem Grund empfehle ich Ihnen dringend , das Verzeichnis zu überprüfen (um den Unterschied festzustellen) und Ihr build.gradle- Skript zu überprüfen (Sie können den apk-Namen dort ändern, etwa wie folgt ):

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);
        }
    }
Jing Li
quelle
2
Mein Problem war, dass ich die App-Version im APK-Namen hinzugefügt habe, die App-Version jedoch das xyz-Format und das "." (Punkt) in der Benennung verursachte die Fehler. Also erinnere dich an keine anderen Punkte als den vor apk :)
DraganescuValentin
20

Stellen Sie sicher, dass Sie kein Apostroph oder & auf Ihrem Weg haben

Rim Gazzah
quelle
Das '&' hielt mich vom Kompilieren ab. Danke @Rim Gazzeh
Marka A
19

Stellen Sie vor dem Start sicher, dass es benotungsfähige Make in Run / Debugging-Konfigurationen >> gibt :

Wie dieses Bild

Iman Marashi
quelle
17

Ich habe normalerweise ein ähnliches Problem gesehen, als ich die Git-Zweige gewechselt habe. Für mich ist das Herunterfahren von Android Studio rm -rfv ~/Library/Caches/AndroidStudio*und der Neustart von Android Studio das Ticket.

user213493
quelle
Mein ähnliches Problem wurde mit dieser Methode gelöst. Ich benenne apk-Dateien im Gradle-Build um, um die Versionsnummer an die Datei anzuhängen. Beim Debuggen meiner Hauptaktivität habe ich versucht, den falschen apk-Dateinamen (vorherige Versionsnummer) auszuführen. Ich bin mir nicht sicher, wann das angefangen hat, aber es hat gut funktioniert, bis es nicht mehr funktioniert hat.
David
Android Studio Cache ist es sehr großes Problem!
GeekHades
Es ist. Ich habe gerade (wieder) meine Build-Nummer erhöht, dies ändert den apk-Dateinamen, wieder habe ich dieses Problem.
David
13

Wählen Sie in Android Studio 3.1.1 Datei | Projekt mit Gradle-Dateien synchronisieren.

Wählen Sie in Android Studio 3 Datei | Synchronisieren.

Führen Sie dann Ihr Projekt erneut aus.

Live-Liebe
quelle
In Studio v3.1.1, Datei -> Projekt mit Gradle-Dateien synchronisieren. und Sie sind gut zu gehen
Napolean
Dann müssen Sie in einem Feld in der oberen Symbolleiste (mit Symbolen) neben dem Hammersymbol "App" in der Dropdown-
Liste "
11

Wir schreiben das Jahr 2018. Die Android Studio-Version ist 3.2.0 alpha3 und wir haben immer noch dieses Problem. Da keiner der oben genannten Punkte für mich funktioniert hat, sind hier meine 2 Cent:

Jedes Mal, wenn dies passiert, generiere ich die apk einfach über die Kommandozeile:

gradlew assembleDebug

AKTUALISIEREN

Das Löschen des Ordners .AndroidStudio[version]und der Verlust all Ihrer Einstellungen und Caches ... scheint das Problem zu lösen

Androiderson
quelle
1
aber das funktioniert nur für einen Build? Wenn du weitere Änderungen vornimmst und die 'Play'-Taste drückst, wird nur die alte apk gedrückt und nicht für die Änderungen neu erstellt. So nervig, wtf dachten sie
siehe
7

In meinem Fall habe ich ein Sonderzeichen in meinem App-Dateipfad verwendet. Ich schloss das Android Studio und entfernte den " Charakter von meinem app Dateipfad. Alles hat gut funktioniert, als ich das Projekt erneut gestartet habe.

Unsterblicher Code
quelle
Ja, im Idealfall sollte Android Studio intelligent genug sein, um zu verhindern, dass Benutzer Sonderzeichen in ihrem Dateipfad verwenden. Oder besser, ich hätte die guten Programmierpraktiken selbst befolgen sollen :)
Immortal Code
6

Ich habe das Erstellen einer Apk mit der Build-Option im oberen Fenster und Build APK gelöst. Keine Notwendigkeit, etwas Seltsames zu tun.

Mun0n
quelle
6

Für Unix-ähnliche Benutzer (Linux / MacOs X) tun Sie in der Befehlszeile Folgendes, anstatt ~ / .gradle / caches / zu entfernen:

$ cd path_to_you_project
$ touch build.gradle

Bitten Sie dann Android Studio, APK zu erstellen. Der Gradle-Cache wird selbst zurückgesetzt.

Jean-Marc Delafont
quelle
5

Mein Problem ist, dass ich die Versionsnummer an die APK angehängt habe. Das Ändern der Versionsnummer und das erneute Synchronisieren von Gradle haben das Problem für mich behoben.

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)
    }
}
Lou Morda
quelle
Haben Sie appendVersionNameVersionCode in gradle selbst aufgerufen?
Dhrupal
3

Build ---> Build APK (s) und stellen Sie sicher, dass es funktioniert

Kadir altınok
quelle
2

Datei -> Caches ungültig machen / neu starten

dvrm
quelle
2

Wenn Sie alle oben genannten Antworten ausprobiert haben und es nicht funktioniert hat, versuchen Sie, die Funktion "Sofortausführung" zu deaktivieren. Dieser hat mir nach allen Versuchen geholfen.

Datei -> Einstellungen -> Erstellen, Ausführen, Bereitstellen -> Sofortige Ausführung -> Deaktivieren Sie dort das Kontrollkästchen

AnZ
quelle
2

Ich habe auch dieses Problem bekommen, nachdem ich den Build gereinigt habe. Für mich war die Lösung, dass ich nur den Gradle synchronisierte und es für mich funktionierte.

u_pendra
quelle
2

In meinem Fall bestand das Problem darin, dass die Debugging- Konfiguration irgendwie ungültig wurde , auch wenn sich der Name, die Klasse oder das Paket der Testmethode nicht geändert haben.

Ich habe die Konfigurationen unter Ausführen-> Konfigurationen bearbeiten hier gelöscht:

Geben Sie hier die Bildbeschreibung ein

Android Studio erstellt automatisch ein neues.

MiguelSlv
quelle
Dann müssen Sie auf Datei / Gradle-Projekt erneut importieren klicken. Dadurch wird die gelöschte Laufkonfiguration neu erstellt.
Juan Ignacio Barisich
1

Konfrontierte das gleiche Problem mit Gradle 1.5

Ich musste die Build-Dateien bereinigen:

Build -> Projekt bereinigen

Erstellen Sie eine APK, um die vollständige Kompilierung und Synchronisierung der Gradle-Dateien zu erzwingen:

Erstellen -> APK erstellen

Ich weiß immer noch nicht warum oder wie es passiert ist.

Simon PA
quelle
1

Wenn Sie Linux verwenden, versuchen Sie, die Schreibberechtigung für den Ordner app / build festzulegen.

Catalin Clabescu
quelle
1

Ich hatte das gleiche Problem. Es lag an einem falschen Namen im Pfad. Es gab ein Sonderzeichen im Pfad wie folgt: C: \ Benutzer \ Meine App \ Projekte-Tablet & Handy Ich habe das Zeichen "&" gelöscht und es hat gut funktioniert.

Orientos
quelle
1

Mein Problem bestand darin, Minuten in den Dateinamen aufzunehmen - es suchte nach appname_debug_0.9.0.1_170214_2216.apk, wenn die generierte Datei appname_debug_0.9.0.1_170214_2217.apk war, sodass der Ausgabedateinamencode (von einer anderen Stelle aus geschnappt) eindeutig von zwei verschiedenen Punkten aus aufgerufen wurde im 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)
        }
    }
Ian Spencer
quelle
Woher kommt dieser Block?
Nerius Jok
Es war von einem anderen Stapelaustausch-Thread, als ich das Projekt zum ersten Mal einrichtete (und hatte sehr wenig Ahnung, was ich tat - dort änderte sich nichts). Da dieser Teil von Gradle einige Male geändert wurde, ist der Code jetzt wahrscheinlich veraltet.
Ian Spencer
1

Das Problem für mich war, dass es die apk irgendwie wirklich nicht finden konnte, während die apk existiert.

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

Alles was ich tun musste, war mit der rechten Maustaste auf den relativen Pfad von apk-copy zu klicken und einfach

adb install -r <paste of relative path>

Und die apk war installiert und gut zu gehen. Dieses Problem ist unter OSX für mich aufgetreten.

Boldijar Paul
quelle
1

Gelöst im Mai 2018 mit dem neuen Android Studio 3.1. Löschen Sie die Verzeichnisse .gradle, .idea und erstellen Sie Verzeichnisse in Ihrem App-Ordner. Versuchen Sie dann erneut, es auszuführen, und der Fehler wird nicht angezeigt.

Gerardo Suarez
quelle
1

Cache synchronisieren, bereinigen, neu erstellen und ungültig machen und neu starten

Keiner von ihnen hat für mich gearbeitet.

Ich habe die Dateien APK und output.json im Release- und Debug-Ordner gelöscht und dann versucht, sie zu synchronisieren, zu bereinigen und zu erstellen. Dann hat es einwandfrei funktioniert.

GiridharaSPK
quelle
0

Ich ändere die Datei build.gradle in eine kleine Info und klicke auf "Jetzt synchronisieren", nur ok.

凤 清 云
quelle
0

Entfernen Sie das Verzeichnis ~ / .gradle / caches /. Dies ist in Ordnung, während Android Studio geöffnet ist. (Siehe pm Installation des falschen Paketnamens.) Klicken Sie in Android Studio auf das Symbol "Projekt mit Gradle-Dateien synchronisieren". Führen Sie das Projekt aus, und der Remote-Pfad ist korrekt.

Siehe Antwort @ Android Studio erhält beim Ausführen von .apk einen falschen Paketnamen

Maske
quelle
0

Stellen Sie sicher, dass in dem in Ihren Protokollen generierten Pfad - in Ihrem Fall:

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

Ordner "Ausgaben" hat in der Tat einen "apk" Ordner.

Das war mein Problem. Wenn es nicht vorhanden ist, müssen Sie die Aufgabe "assembleRelease" in Gradle ausführen, indem Sie dem folgenden Screenshot folgen.

Schritte zum Ausführen der Aufgabe gradle assembleRelease Dann wird der Ordner generiert.

Amgad
quelle
0

Nichts oben hat mir geholfen, aber ich habe dies herausgefunden, indem ich im Build Tools-Bedienfeld zu einer anderen Variante gewechselt und dann wieder zur benötigten Version gewechselt habe.

Dmytro Karataiev
quelle
0

Ändern Sie die Datei: build.gradle (App-Verzeichnis). in der Tat: Sie sollten diese Datei nicht ändern, sondern nur, um Synchronisierungstipps zu erhalten, und dann das Projekt synchronisieren.

兰 坡 阳
quelle