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


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


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 .


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.


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);
        }
    }

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


„&” 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


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.


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.


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


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.


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.


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.


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)
    }
}

Czy sam nazwałeś appendVersionNameVersionCode?
Dhrupal


2

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


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


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.


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.


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.



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.


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)
        }
    }

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.


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.


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.


0

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



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.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.