Plik APK nie istnieje na dysku

224

Kiedy próbuję debugować aplikację w Android Studio, daje następujące dane wyjściowe dziennika:

Plik APK /Users/MyApplicationName/app/build/outputs/apk/app-debug.apk nie istnieje na dysku.

Uruchomiłem ponownie Android Studio, ale nie mogę rozwiązać tego problemu. Jak mogę to rozwiązać? Dziękuję Ci

sorunluadam
źródło
9
Jak mogę to rozwiązać? skompiluj apk
Tim
1
@ TimCastelijns Właściwie zastanawiam się, czy Android Studio nie jest wystarczająco inteligentny, aby dołączyć zadanie tworzenia aplikacji do debugowania do zadania aplikacji deb. Do tego należy wykonać Gradle.
Trilarion
1
@Trilarion Domyślnie AS wykonuje zadanie assembleDebug gradle, które kompiluje apk debugowania. Coś tutaj wydaje się nie tak, co wymaga ręcznej kompilacji
Tim
2
Dodanie oprogramowania Gradle Make-Aware naprawiło ten problem. stackoverflow.com/a/25871525/1712417
Iammesol,
2
Spróbuj dodać „Gradle Make-Aware” stackoverflow.com/questions/18256177/…
Andy Cheng

Odpowiedzi:

463

Kliknij tę opcję, aby rozwiązać błąd:

Uruchom: Widok> Narzędzie Windows> Gradle> [projekt]> Zadania> kompilacja> kompilacja

Android 上 的 Android Android
źródło
6
Znaki specjalne w nazwie katalogu projektu również zgłoszą ten błąd.
NP
50
To w ogóle mi nie działało. Radziłbym odpowiedzi, które wyjaśniają, dlaczego powinny one działać, zamiast po prostu mówić czytelnikowi, co mają robić, aby później mogli zrozumieć / uniknąć / rozwiązać te błędy.
person27
3
Czy wyjaśniłbyś, co to dokładnie robi i dlaczego ten problem się wydarzył?
Hamidreza Sahraei,
btw „Znaki specjalne” zawierają również cyfry. To niedorzeczne, zmarnowane mnóstwo czasu. facepalm :)
alexr101
5
Ten przycisk nie istnieje w najnowszej wersji Androida Studio, ale uważam, że to opcja „Synchronizuj projekt z plikami stopniowymi”, która zadziałała dla mnie.
nasch
208

Jeśli napotykasz ten problem po aktualizacji do Androida Studio V 3.1, spróbuj wykonać poniższe czynności.

Ten sam problem napotkałem po aktualizacji do Androida Studio 3.1. Wszystkie inne rozwiązania, które tu znalazłem, były dość ręczne, ponieważ musisz za każdym razem czyścić i przebudowywać, co wcale nie jest dobre. Ale dzięki odpowiedzi Imana Marashiego udało mi się ją rozwiązać.

Idź do Uruchom -> Edytuj konfiguracje ...

Upewnij się, że w sekcji Przed uruchomieniem znajduje się „Make-Gradle-Make Make”:

Konfiguracje uruchamiania / debugowania

Aby go dodać, kliknij znak + i wybierz Wykonaj świadomą gradientu, a pojawi się wyskakujące okienko, po prostu zostaw puste pole tekstowe i kliknij OK i OK .

Siedem
źródło
13
To jest poprawka do ostatniej aktualizacji 3.1. Dla mnie pierwszym objawem tego problemu był brak odpowiedzi pakietu APK na zmiany w kodzie. Teraz jest dla mnie jasne, że nowy APK w ogóle nie budował poprawnie.
David Gay
Ta odpowiedź może dla mnie rozwiązać. Zaktualizowałem 3.1 i otrzymałem ten błąd.
ZarNi Myo Sett Wygraj
Jesteś ojcem ratującym życie.
Joel Libby
ŁAŁ! Zasługujesz na to za 1000 głosów! Android Studio zasługuje na 1000 głosów w dół!
1QuickQuestion
Dzięki, to zdecydowanie właściwa odpowiedź i powinna być zaakceptowana
Petar Marijanovic
68

W moim przypadku pomogło wykonanie „Synchronizuj projekt z plikami stopniowymi”. Ani restartowanie Andoid Studio, ani czyszczenie pamięci podręcznej nic nie robiło.

Bartek
źródło
1
Dzięki. To też mi pomaga. Ani ponowne uruchomienie Andoid Studio, ani wyczyszczenie pamięci podręcznej nie pomogło.
ivan.panasiuk
Wykonałem dla mnie sztuczkę po zmianie skryptu nazewnictwa, który znajduje się w innym pliku niż mój normalny build.gradle, więc Android Studio nie odebrał automatycznie zmiany i nie poprosił mnie o synchronizację.
Magnus W
To jest prawdziwa odpowiedź.
azizbekian
3
File -> Sync Project with Gradle Files stackoverflow.com/a/19932896/2527204
Marlon
Wystąpił ten problem podczas próby uruchomienia testu jednostkowego. Prosił o urządzenie do uruchomienia testu jednostkowego.
Sergio
34

Jeśli chcesz poznać tylko wniosek, przejdź do ostatniej sekcji. Dzięki.

Zwykle w przypadku niepowodzenia projektu budowlanego można wypróbować kilka typowych sztuczek:

  • Kompilacja -> Wyczyść projekt
  • Sprawdź warianty kompilacji
  • Uruchom ponownie Android Studio (jak wspomniałeś)

Ale żeby być bardziej konkretnym dla twojego problemu - kiedy Android Studio nie mógł znaleźć pliku APK na dysku. Oznacza to, że Android Studio faktycznie zbudowało projekt, a także wygenerowało APK, jednak z jakiegoś powodu Android Studio nie może znaleźć pliku.

W takim przypadku sprawdź wydrukowany katalog zgodnie z dziennikiem. To jest pomocne.

Na przykład:

W wersji Android Studio 2.0 Preview (kompilacja 143.2443734).

  1. Kasa do konkretnego zatwierdzenia (aby został odłączony od głowy): git checkout [commit_hash]
  2. Uruchom projekt
  3. Android Studio informuje: plik APK / Users / MyApplicationName / app / build / Output / apk / app-debug-HEAD.apk nie istnieje na dysku
  4. Przejdź do katalogu, w rzeczywistości istnieje plik o nazwie: app-debug- (HEAD.apk (z dodatkowym nawiasiem)
  5. Uruchom gałąź git

    * (HEAD odłączony przy 1a2bfff)

Więc tutaj możesz zobaczyć, z powodu błędu skryptu kompilacji stopni , nazewnictwo plików jest jakoś niepoprawne.

Powyższy przykład to tylko jeden scenariusz, który może prowadzić do tego samego problemu, ale nie musi być tą samą podstawową przyczyną, co twój.

W związku z tym zdecydowanie zalecamy sprawdzenie katalogu (aby znaleźć różnicę) i sprawdzenie skryptu build.gradle (możesz tam zmienić nazwę apk, coś w stylu poniżej):

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
źródło
2
Mój problem polegał na tym, że dodawałem wersję aplikacji w nazwie APK, ale wersja aplikacji ma format xyz i „.” (kropka) w nazwie powodował błędy. Więc pamiętaj, że nie ma żadnych innych kropek poza tą przed apk :)
DraganescuValentin
20

Upewnij się, że nie masz apostrofu ani & na swojej drodze

Rim Gazzah
źródło
„&” Powstrzymywało mnie od kompilacji. Dzięki @Rim Gazzeh
Marka A
19

Upewnij się, że jest dostępna konfiguracja Make in Run / Debugowanie zgodna z oceną >> przed uruchomieniem :

Polub ten obraz

Iman Marashi
źródło
17

Podobny problem widziałem zwykle, kiedy zmieniam gałęzie git. Dla mnie zamknięcie Android Studio rm -rfv ~/Library/Caches/AndroidStudio*i ponowne uruchomienie Android Studio to bilet.

użytkownik213493
źródło
Mój podobny problem został rozwiązany za pomocą tej metody. Zmieniam nazwy plików apk w kompilacji stopni, aby dołączyć numer wersji do pliku, próbując debugować moją główną aktywność próbowałem uruchomić niewłaściwą nazwę pliku apk (poprzedni numer wersji). Nie jestem pewien, kiedy to się zaczęło, ale działało dobrze, dopóki tak się nie stało.
David
Pamięć podręczna studia Androida to bardzo duży problem!
GeekHades,
To jest. Właśnie (ponownie) zwiększyłem numer kompilacji, to zmienia nazwę pliku apk, znowu mam ten problem.
David
13

W Android Studio 3.1.1 wybierz Plik | Synchronizuj projekt z plikami Gradle.

W Android Studio 3 wybierz Plik | Synchronizować.

Następnie uruchom ponownie swój projekt.

żywa miłość
źródło
W Studio v3.1.1, Plik -> Synchronizuj projekt z plikami stopniowymi. i jesteś
gotowy
Następnie w polu na górnym pasku narzędzi (z ikonami), w następnej ikonie młotka musisz wrócić do „aplikacji”, w rozwijanej konfiguracji
CodeToLife
11

Jest rok 2018. Wersja Androida Studio to 3.2.0 alpha3 i nadal występuje ten problem. Ponieważ żadne z powyższych nie działało dla mnie, oto moje 2 centy:

Za każdym razem, gdy tak się dzieje, generuję apk z wiersza poleceń:

gradlew assembleDebug

AKTUALIZACJA

Usunięcie folderu .AndroidStudio[version]i utrata wszystkich preferencji i pamięci podręcznych ... wydaje się rozwiązać problem

Androiderson
źródło
1
ale to działa tylko dla jednej wersji? jeśli dokonasz dalszych zmian i naciśniesz przycisk „Odtwórz”, to po prostu popycha stary apk i nie odbudowuje się dla zmian. Tak denerwujące, o czym myśleli
behelit
7

W moim przypadku użyłem specjalnego znaku na ścieżce pliku aplikacji. Zamknąłem Android Studio i usunąłem znak ze ścieżki pliku aplikacji. Po ponownym uruchomieniu projektu wszystko działało dobrze.

Nieśmiertelny Kod
źródło
Tak, idealnie Android Studio powinno być wystarczająco inteligentne, aby uniemożliwić użytkownikom używanie znaków specjalnych w ścieżkach plików. A może powinienem był sam przestrzegać dobrych praktyk programistycznych :)
Immortal Code
6

Rozwiązałem problem z budowaniem aplikacji za pomocą opcji Kompilacja w górnym oknie i Kompilacji APK. Nie musisz robić czegoś dziwnego.

Mun0n
źródło
6

Dla użytkowników takich jak Unix (Linux / MacOs X), zamiast usuwania ~ / .gradle / caches /, w wierszu poleceń wykonaj:

$ cd path_to_you_project
$ touch build.gradle

Następnie poproś Android Studio o zbudowanie APK, zresetuje on samą pamięć podręczną stopni.

Jean-Marc Delafont
źródło
5

Mój problem polega na tym, że dołączałem numer wersji do APK. Zmiana numeru wersji i ponowna synchronizacja Gradle rozwiązały problem.

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
źródło
Czy sam nazwałeś appendVersionNameVersionCode?
Dhrupal
3

Kompilacja ---> Kompilacja APK (ów) i upewnij się, że działa

Kadir altınok
źródło
2

Plik -> Unieważnij pamięć podręczną / Uruchom ponownie

dvrm
źródło
2

Jeśli wypróbowałeś wszystkie powyższe odpowiedzi i to nie działało, spróbuj wyłączyć funkcję „Natychmiastowego uruchamiania”. Ten pomógł mi po wszystkich próbach.

Plik -> Ustawienia -> Kompilacja, wykonanie, wdrożenie -> Natychmiastowe uruchomienie -> Odznacz tam pole wyboru

AnZ
źródło
2

Ten problem też dostałem po wyczyszczeniu kompilacji. Dla mnie rozwiązaniem było po prostu zsynchronizowanie gradu i zadziałało dla mnie.

u_pendra
źródło
2

W moim przypadku problem polegał na tym, że konfiguracja debugowania w jakiś sposób stała się nieprawidłowa , nawet jeśli nazwa metody testowej, klasa lub pakiet nie uległy zmianie.

Usunąłem konfiguracje z Run-> Edytuj konfiguracje, tutaj:

wprowadź opis zdjęcia tutaj

Android studio automatycznie utworzy nowe.

MiguelSlv
źródło
Następnie musisz kliknąć opcję Plik / Ponownie zaimportuj projekt Gradle. Spowoduje to odtworzenie usuniętej konfiguracji uruchamiania.
Juan Ignacio Barisich
1

Ten sam problem dotyczy stopnia 1.5

Musiałem wyczyścić pliki kompilacji:

Kompilacja -> Wyczyść projekt

I zbuduj pakiet APK, aby wymusić pełną kompilację i synchronizację plików stopni:

Kompilacja -> Kompilacja APK

Nadal nie wiem, dlaczego i jak to się stało.

Simon PA
źródło
1

jeśli używasz Linuksa, spróbuj ustawić uprawnienia do zapisu w folderze app / build.

Catalin Clabescu
źródło
1

miałem ten sam problem. było to spowodowane fałszywym nazwiskiem na ścieżce. na ścieżce znajdował się znak specjalny: C: \ Użytkownik \ Moja aplikacja \ Projekte-Tablet i Handy Usunąłem znak „&” i działał dobrze.

Orientos
źródło
1

Mój problem polegał na włączeniu minut do nazwy pliku - szukał aplikacji nazwa_debug_0.9.0.1_170214_2216.apk, gdy wygenerowany plik był nazwą_debug_0.9.0.1_170214_2217.apk, więc kod wyjściowej nazwy pliku (pobrany z innego miejsca) został wyraźnie wywołany z dwóch różnych punktów w kompilacji.

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
źródło
skąd ten blok?
Nerius Jok
To było z jakiegoś innego wątku wymiany stosu od pierwszego uruchomienia projektu (i miałem bardzo mało pojęcia, co robię - nic się tam nie zmieniło). Ponieważ ta część Gradle została kilkakrotnie zmieniona, prawdopodobnie jest to teraz przestarzały kod.
Ian Spencer
1

Problemem było dla mnie to, że jakoś tak naprawdę nie mógł znaleźć apka, podczas gdy apk istnieje.

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

Wszystko, co musiałem zrobić, to kliknąć prawym przyciskiem myszy ścieżkę względną kopii apk i po prostu

adb install -r <paste of relative path>

A apk został zainstalowany i gotowy do pracy. Ten problem wystąpił w systemie OSX.

Boldijar Paul
źródło
1

Rozwiązany w maju 2018 r. Dzięki nowemu Android Studio 3.1. Usuń .gradle, .idea i skompiluj katalogi w folderze aplikacji. Następnie spróbuj uruchomić go ponownie i nie zobaczysz błędu.

Gerardo Suarez
źródło
1

Synchronizuj, wyczyść, odbuduj i unieważnij pamięć podręczną i uruchom ponownie

Żadne z nich nie działało dla mnie.

Usunąłem pliki APK i output.json w folderze wydania i folderze debugowania, a następnie próbowałem zsynchronizować, wyczyścić i kompilować, a następnie działało poprawnie.

GiridharaSPK
źródło
0

Zmieniam plik build.gradle na małą informację i klikam „Synchronizuj teraz”, po prostu ok.

凤 清 云
źródło
0

Upewnij się, że w ścieżce wygenerowanej w dziennikach - w twoim przypadku:

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

folder „output” rzeczywiście ma folder „apk”.

To był mój problem, jeśli go nie ma, musisz uruchomić zadanie „assembleRelease” w gradiencie, wykonując poniższy zrzut ekranu;

Kroki, aby uruchomić zadanie gradate assembleRelease Następnie folder zostanie wygenerowany.

Amgad
źródło
0

Nic powyżej mi nie pomogło, ale wymyśliłem to, przełączając się na inny smak w panelu Narzędzi do budowania, a następnie przełączając z powrotem na potrzebny.

Dmytro Karataiew
źródło
0

zmodyfikuj plik: build.gradle (katalog aplikacji). w rzeczywistości: nie należy zmieniać tego pliku, tylko po to, aby uzyskać wskazówki dotyczące synchronizacji, a następnie zsynchronizować projekt.

兰 坡 阳
źródło