Przyczyna: buildOutput.apkData nie może mieć wartości NULL

245

Moja aplikacja na Androida korzystająca z Kotlin zgłasza ten wyjątek, gdy próbuję uruchomić „aplikację” w emulatorze na telefonie komórkowym. Kiedy buduję mój projekt działa dobrze, bez błędów.

Ja używam:

  • SDK 28 (Android 9.0 (Pie))
  • Stopień 5.1.1
  • Wtyczka Gradle 3.5.0-alpha03
  • Kotlin 1.3.10
  • Java 1.8.0_151
  • OSX 10.13.2
    org.gradle.internal.exceptions.LocationAwareException: buildOutput.apkData must not be null
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.transform(DefaultExceptionAnalyser.java:99)
        at org.gradle.initialization.exception.DefaultExceptionAnalyser.collectFailures(DefaultExceptionAnalyser.java:65)
        at org.gradle.initialization.exception.MultipleBuildFailuresExceptionAnalyser.transform(MultipleBuildFailuresExceptionAnalyser.java:39)
        at org.gradle.initialization.exception.StackTraceSanitizingExceptionAnalyser.transform(StackTraceSanitizingExceptionAnalyser.java:29)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:194)
        at org.gradle.initialization.DefaultGradleLauncher.finishBuild(DefaultGradleLauncher.java:141)
        ...
    Caused by: java.lang.IllegalStateException: buildOutput.apkData must not be null
        at com.android.build.gradle.internal.ide.EarlySyncBuildOutput$Companion$load$2.invoke(EarlySyncBuildOutput.kt:103)
        at com.android.build.gradle.internal.ide.EarlySyncBuildOutput$Companion$load$2.invoke(EarlySyncBuildOutput.kt:67)
        at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:174)
        at kotlin.sequences.SequencesKt___SequencesKt.toCollection(_Sequences.kt:691)
        at kotlin.sequences.SequencesKt___SequencesKt.toMutableList(_Sequences.kt:721)
        at kotlin.sequences.SequencesKt___SequencesKt.toList(_Sequences.kt:712)
        ...
Jzelar
źródło
3
Utworzyłem bilet wystawcy_kraków.google.com
Eugen Martynov
3
Mam to samo po aktualizacji Androida Studio do wersji 3.4
Andrew
2
Sprawdź odpowiedź Lemberg, która działa dla mnie, zmierzyłem się dzisiaj z tym problemem
Nicky
To samo dotyczy Java (nie jest konieczne Kotlin) po zainstalowaniu Androida Studio 3.5.
Patapoom

Odpowiedzi:

311

Kliknij Build->Clean Project

Następnie Build->Make Project

Testowane na klasach 3.5.0-alpha3, -alfa5 i 3.4.0 (klasa projektu)

classpath 'com.android.tools.build:gradle:3.5.0-alpha03'
Martin Pfeffer
źródło
1
Mogę potwierdzić, że to działa również z wersją com.android.tools.build:gradle:3.5.0-alpha05(z Build-> Rebuild Projectw AS)
kikoso
1
Niestety wymaga aktualizacji do Android Studio 3.5, nie mogę powiedzieć mojemu zespołowi, aby przeszedł na niestabilny kanał aktualizacji Androida Studio.
void.pointer
8
Działa na Androidzie Studio 3.4
Rafael
6
próbuję na AndroidStudio3.5 na Mac OS, wszystkie sdk zaktualizowane, używając wersji stopniowej com.android.tools.build:gradle:3.5.0, to rozwiązanie nie działa dla mnie
Mihodi Lushan
1
próbowałem tych, tak, otrzymuję ten błąd. @MartinPfeffer
Mihodi Lushan
151

W przypadku 3.5aktualizacji Android Studio . (Problem z podpisem APK)

Krok 1: Rozwiązałem ten problem, modyfikując lokalizację folderu docelowego .

Przed

c:\user\folder\project\app

Po

c:\user\folder\project\apk


W przypadku 3.4aktualizacji Android Studio .

Krok 1: Po aktualizacji Androida Studio 3.4 musisz dodać całą zależność używaną w module lub bibliotece na poziomie aplikacjibuild.gradle .

Krok 2: Wyczyść projekt (kompilacja> Wyczyść projekt)

Krok 3: Przebuduj projekt (kompilacja> Przebuduj projekt)

Teraz Twój projekt doskonale się skompiluje.

Vishrut Mavani
źródło
1
Co to jest? co powinienem zrobić dokładnie? > Krok 1: Po aktualizacji Android Studio 3.4 musisz dodać całą zależność, która była używana w twoim module lub bibliotece w build.gradle na poziomie aplikacji.
babay,
1
@babay Załóżmy, że korzystasz z dowolnej biblioteki korzystającej z biblioteki Glide. Następnie musisz dodać swoją zależność Glide w build.gradle na poziomie aplikacji.
Vishrut Mavani,
1
@VishrutMavani Dziękuję za odpowiedź, ale znalazłem naprawdę głupi błąd w studio Android. Właśnie zmieniłem ścieżkę wyjścia kompilacji. To jest. Rozwiązanie Shuham Jain. Zobacz poniżej jego rozwiązanie.
James
5
To rozwiązało mój problem w Android Studio v3.5 i projekcie Java. Jest to dość standardowe zjawisko za każdym razem, gdy teraz budujesz aplikacje na Androida ... (1) otrzymujesz dziwny, niezrozumiały błąd kompilacji (2) google it (3) przepełnienie stosu (4) zastosuj pozornie niezwiązane obejście w określonej kolejności (5) módl się (6) ) to działa (7) przejdź do kroku (1)
dodgy_coder
2
Nie mogę uwierzyć, że rozwiązaniem tego problemu jest „Zmień folder docelowy”. Ale to jest! ¯ \ _ (ツ) _ / ¯
mkasberg
138

DLA Android Studio 3.5 | 3.6

debugowanie kompilacji kończy się bez żadnego błędu. Podczas tworzenia podpisanego pliku .apk prowadzi do tego samego błędu

buildOutput.apkData must not be null

najprostszym rozwiązaniem, które znalazłem, jest. Podczas podpisywania apk po wprowadzeniu poświadczeń podpisywania, gdy przejdziesz do następnego ekranu, poprosi o folder docelowy, po prostu zmień domyślną ścieżkę.

Załóżmy, że obecna ścieżka docelowa to

c: \ użytkownik \ folder \ projekt \ aplikacja

zmień na

c: \ użytkownik \ folder \ projekt \

następnie wygeneruje podpisany apk.

Zrzut ekranu folderu docelowego Android Studio

Shubham Jain
źródło
5
Naprawdę doceniam twoje rozwiązanie. Dzięki. To jest po prostu prosty i naprawdę głupi błąd kompilacji Android Studio.
James
2
Wow, uratowałeś mi dzięki temu życie. Czy jest to jednak błąd w Android Studio, czy mój projekt jest zawalony?
Vijay Kumar Kanta
1
OMG, ta aktualizacja Android Studio do wersji 3.5 przynosi mi wiele problemów.
Henrique Monte
1
Bardzo przydatny w Androidzie 3.5.2
CodeFluid
1
Dzięki i miłe rozwiązanie. Zaktualizowałem Android Studio, nawet ten błąd występuje w Android Studio 3.6. To rozwiązanie uratowało mi dzień.
Jeszcze
49

Ten błąd pojawiał się także podczas próby wygenerowania podpisanego pliku APK dla mojej wersji. Wypróbowałem wszystkie powyższe metody, niestety żadna nie działała dla mnie.

To, co zadziałało, to wygenerowanie najpierw podpisanej wersji aplikacji do debugowania, a następnie wygenerowanie pierwszej wersji.

Nie wiem, co dokładnie zmieniło się ani jaki był pierwotny problem, ale zadziałało. Mam nadzieję, że ci to pomoże, ponieważ ten błąd jest dość irytujący ...

Kuruchy
źródło
1
W moim przypadku muszę wygenerować apk pierwszego produktu (debugowanie do wydania) do ostatniego smaku (debugowanie do wydania).
Owoce
3
Tak!! Dla mnie też zadziałało. dzięki. Nie wiem dlaczego, ale wygląda na błąd.
Doongsil
3
próbuję na AndroidStudio3.5 na Mac OS, wszystkie sdk zaktualizowane, używając wersji stopniowej com.android.tools.build:gradle:3.5.0, to rozwiązanie nie działa dla mnie
Mihodi Lushan
1
W moim przypadku: AndroidStudio3.5, Zbuduj pakiet (y) / apk (s) => Zbuduj apk (s), a następnie Wygeneruj podpisany pakiet APK
solo
1
To szalone, ale to rozwiązanie działa - nie rozumiem dlaczego. Android Studio 3.5, Windows
cVoronin
22

Czyszczenie projektu nie pomogło mi, ale pomogło mi ręczne usunięcie wszystkich automatycznie wygenerowanych folderów kompilacji we wszystkich modułach. wprowadź opis zdjęcia tutaj

Roman Nazarevych
źródło
Jest to odpowiednik czyszczenia projektu.
devgianlu
4
Nie, nie jest, spróbuj wyczyścić projekt z Android Studio, a następnie sprawdź katalog aplikacji pod kątem buildkatalogów w dowolnym eksploratorze plików, zobaczysz, że niektóre pliki nadal tam są.
Roman Nazarevych,
W moim przypadku miałem wiele smaków, zadziałało, gdy usunąłem cały folder kompilacji wraz z folderami specyficznymi dla Smaku. Po usunięciu folderów musiałem zamknąć projekt i otworzyć go ponownie, aby go uruchomić
Hari
próbuję na AndroidStudio3.5 na Mac OS, wszystkie sdk zaktualizowane, używając wersji stopniowej com.android.tools.build:gradle:3.5.0, to rozwiązanie nie działa dla mnie
Mihodi Lushan
18

Aktualizacja do Androida Studio 3.4.? dostaję wiadomość

Przyczyna: buildOutput.apkData nie może mieć wartości NULL

szukając odpowiedzi znalazłem procedurę:

Build -> Clean Project

ale to nie zadziałało, wiem, że ta procedura usunie zawartość do /buildkatalogu, ale z mojego doświadczenia, że ​​nie działa we wszystkich przypadkach, więc wypróbowałem „surowy” sposób, usuwając katalog:

/app/build/ 

następnie odbudowuję projekt i zadziałał.

Jorgesys
źródło
2
To działało dla mnie, ale musiałem również usunąć wszystkie <flavor>/<buildConfig>katalogi (chodzi o output.jsonpliki w nich zawarte). Clean projectsam nie rozwiązał problemu.
javaxian
11

Próbowałem ponad wieloma rozwiązaniami, ale nic się nie wydarzyło, ale znalazłem to i działało dla mnie

    deleting debug/output.json and release/output.json solved my problem

Teraz jestem w stanie wygenerować apk

Rohan Pawar
źródło
9

Wszystkie rozwiązania ze mną nie działały

Android Studio V 3.5

Android gradle plugin V 3.4.2

Wersja Grade V 5.1.1

  1. Oczyść projekt
  2. Uruchom ponownie Android Studio + unieważnij pamięć podręczną
  3. Usuń folder kompilacji, debugowania i wydań
  4. Zrób projekt
  5. Wygeneruj podpisany APK

Odniesienie

Qays Dwekat
źródło
7

Próbowałem wielu rzeczy, aby rozwiązać problem, ale nic nie pomogło. Ten błąd pojawia się podczas próby wygenerowania podpisanego pliku APK.

Przejście na starsze wersje Androida Studio pomogło (3.4.2) działać, jednak nie jest to rozwiązanie.

Funkcja „Wyczyść projekt” w systemie AS nie czyści miejsca, w którym tworzony jest wygenerowany plik apk, a jeden plik może blokować całą procedurę: output.json

Spróbuj usunąć output.json z ... / app / projectname / release / output.json

TheScriptan
źródło
5

Korzystałem z Androida Studio 3.5 beta 2 i miałem ten sam błąd, ale tylko w mojej wersji wydania. Po wypróbowaniu każdego innego rozwiązania, które znalazłem, jedynym sposobem, w jaki mogłem ponownie skompilować, było powrót do Androida Studio 3.4.

amp
źródło
To „rozwiązanie” również dla mnie zadziałało. Zmień wersję na AS 3.4.2, pobierz tutaj: developer.android.com/studio/archive i zmieniając z 3.5.0 na: classpath 'com.android.tools.build:gradle:3.4.2'
Zmień wersję Loadeed
4

Mi to pasuje:

  1. ręcznie usuń folder kompilacji z projektu.

  2. w terminalu Android studio wpisz to polecenie

jeśli użytkownik systemu Windows

gradlew clean build

jeśli użytkownik Linux

./gradlew clean build
Abhishek Garg
źródło
1
próbuję na AndroidStudio3.5 na Mac OS, wszystkie sdk zaktualizowane, używając wersji stopniowej com.android.tools.build:gradle:3.5.0, to rozwiązanie nie działa dla mnie
Mihodi Lushan
4

Ten problem występuje zwykle w przypadku uruchamiania wielu okien studia Androida z różnymi projektami.

Rozwiązaniem jest

  • wybierz projekt niż usuń .gradle i buduj foldery
  • niż wyczyść i przebuduj projekt.

proszę załączyć zrzut ekranu

proszę załączyć zrzut ekranu

Suresh Maidaragi
źródło
próbuję na AndroidStudio3.5 na Mac OS, wszystkie sdk zaktualizowane, używając wersji stopniowej com.android.tools.build:gradle:3.5.0, to rozwiązanie nie działa dla mnie
Mihodi Lushan
Czy możesz spróbować Plik> Unieważnij pamięć podręczną / Uruchom ponownie po usunięciu automatycznie wygenerowanych plików .gradle i skompiluj @MihodiHasanLushan
Suresh Maidaragi
4

Wystarczy zmienić lokalizację wydania / debugowania Apk .

DAWNY:

/home/sanaebadi/Desktop

po zmianie:

/home/sanaebadi/apk
sana ebadi
źródło
3

Rozwiązaniem było dla mnie usunięcie wszystkich plików i folderów z folderu wyjściowego apk. Miałem ten problem podczas tworzenia podpisanej aplikacji dla smaku „produkcyjnego”, a output.jsonfolder wyjściowy „funkcja” powoduje problem -> Android Studio 3.6 Canary 7pokazał mi poprawny komunikat o błędzie. Działa również teraz dla stabilnego AS 3.5 z Gradle Plugin 3.5.0.

3dmg
źródło
3

Wszystkie rozwiązania ze mną nie działały
W moim przypadku aktualizacja AndroidStudio 3.4+ do wersji 3.5.
I na koniec rozwiązuję go, modyfikując folder „Destination Folder” do szczegółowego pic „app / build / Output / apk”

basen
źródło
2

jedynym rozwiązaniem, które działa dla mnie, jest użycie w mojej kategorii root

classpath 'com.android.tools.build:gradle:3.3.0'

co próbowałem: - ręcznie wyczyść cały folder kompilacji - unieważnij pamięć podręczną, ale żaden z nich nie działa

PS: Używam Androida Studio 3.5 BTW

Aktualizacja :

podobnie jak @Vishrut Mavani, zmiana folderu docelowego wersji jest sprawna

po prostu nikt
źródło
2

Zazwyczaj ten problem występuje podczas aktualizacji Androida Studio V3.4 do V3.5. Spróbuj usunąć debug/output.jsonirelease/output.json pliki.

Następnie spróbuj wykonać następujące czynności:

Krok 1: Wyczyść projekt (kompilacja> Wyczyść projekt)

Krok 2: Przebuduj projekt (kompilacja> Przebuduj projekt)

Masoud Mokhtari
źródło
2

Mam Android Studio 3.5.1. Dla mnie poniżej działają

  1. Plik -> Unieważnij pamięć podręczną / Uruchom ponownie
  2. Po ponownym uruchomieniu Android Studio kliknij Build -> Clean project
  3. Następnie Build -> Przebuduj projekt
Sachin Tanpure
źródło
1

W moim przypadku kompilacja i uruchomienie projektu z różnymi konfiguracjami kompilacji zakończyło się powodzeniem. Ale generowanie podpisanego apk Cause: buildOutput.apkData must not be nullpowoduje błąd, z drugiej strony wygenerowano apk i drukuje widok przełączania kompilacji wyników BUILD SUCCESSFUL. Instalacja ręczna kończy się komunikatem App not installed. Moja wina polegała na używaniu compileSdkVersion 'android-P'i po przejściu na compileSdkVersion 28wszystko idzie dobrze.

Stanisław Bondar
źródło
1

Wypróbowałem wszystkie rozwiązania i żadne z nich nie pomogło! w końcu po wielu próbach zrozumiałem, po prostu postępuj zgodnie ze wskazówkami:

  1. skopiuj swój naciśnięcie klawisza podpisu (którego używasz do zwolnienia) w środku yourProject/app/
  2. gradle.properties (zmodyfikuj wartości związane z własnym kluczem):
    MYAPP_RELEASE_STORE_FILE=KEYSTROK_NAME
    MYAPP_RELEASE_KEY_ALIAS=KEY_ALIAS
    MYAPP_RELEASE_STORE_PASSWORD=R_PASS
    MYAPP_RELEASE_KEY_PASSWORD=K_PASS
    android.enableR8=true
  3. build.gradle na poziomie aplikacji (wewnątrz Androida):

    signingConfigs{
        release{
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    
    configurations {
        cleanedAnnotations
        compile.exclude group: 'org.jetbrains' , module:'annotations'
    }
    
  4. build.gradle na poziomie aplikacji (wewnątrz buildTypes):
    release {
        manifestPlaceholders = [analytics_deactivated: "false"]
        minifyEnabled true
        signingConfig signingConfigs.release
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

    5. na koniec to polecenie:

prochowiec: ./gradlew clean assemble_YOUR_FAVOR_Release

zdobyć: gradlew clean assemble_YOUR_FAVOR_Release

gdzie _YOUR_FAVOR_jest twoja opcjonalna przysługa, jeśli nie korzystasz z żadnej przysługi, po prostu użyj assembleReleasezamiastassemble_YOUR_FAVOR_Release

AlirezaXX
źródło
1

Ten problem występuje po aktualizacji mojego Androida Studio v3.4 do v3.5. Teraz działa dobrze

Rozwiązałem ten problem, usuwając pliki debug / output.json i release / output.json

Android Studio 3.5 compilesdkVersion 28

działa generowanie apk

Pradeep P.
źródło
1

Zirytował mnie również ten sam błąd. Ale zmiana mojego podpisanego miejsca docelowego apk z c / users / project / app na c / users / project działała dla mnie.

Sarthak Sharma
źródło
1

1- Usuń wszystkie wygenerowane pakiety aplikacji (.aab) i pliki APK dla wszystkich wariantów.

2- Usuń folder kompilacji

3- czysty projekt

Islam Assi
źródło
1

Ręcznie usunąłem wszystkie wychodzące foldery wersji kompilacji, a także folder kompilacji w folderze projektu.

Thamilvanan
źródło
0

Wygeneruj podpisany plik APK do debugowania , a następnie możesz wygenerować podpisany plik APK do wydania .

Dita Aji Pratama
źródło
0

Rozwiązanie :-

1- Build -> Clean Projectnie pomogło

2- Build -> Make Projectnie pomogło

3- restart android studio nie pomógł

4- Ręcznie usuń folder kompilacji z appiproject nie pomógł

jedynym rozwiązaniem dla mnie było usunięcie wszystkich starych kompilacji z folderu docelowego

Atef Farouk
źródło
-1

Wygląda na to, że wyczyszczenie projektu może rozwiązać problem, ale dla mnie tak to działało.

Plik-> zsynchronizuj projekt z plikami stopni.

Brahmy Adigopula
źródło