Instalacja nie powiodła się z powodu: „null” - Android Studio 3.5

83

Zaktualizowałem Android Studio do wersji 3.5, odkąd mam problem z instalacją APK. To jedyny dziennik, który pokazuje:

Installation did not succeed.
The application could not be installed: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION
Installation failed due to: 'null'
Retry

Dzieje się tak, gdy próbujesz zainstalować pakiet APK na prawdziwym urządzeniu. Jeśli odinstaluję aplikację z urządzenia, a następnie ponownie uruchomię kompilację, zostanie ona zainstalowana tylko raz, a następnie będzie zgłaszać ten błąd przy następnej instalacji. Działa dobrze na emulatorze, ale nie mogę użyć emulatora do wszystkiego.

Co próbowałem:

  • Usunięto plik konfiguracyjny Android Studio.
  • Usunięte pliki Gradle z projektu.
  • Unieważnione i zresetowane pamięci podręczne.
  • Oczyszczono / odbudowano projekt.
  • Szukałem podobnych problemów Stackoverflow (nic nie pasuje do mojego problemu)
  • Czysta instalacja (usunięto wszystkie pliki, w tym zestawy SDK) Android Studio 3.5

Aktualizacja

Zainstalowałem Linux Mint na moim komputerze i przetestowałem tam AS 3.5, z jakiegoś powodu wszystko działa dobrze nawet na urządzeniach z Androidem 7 i starszymi.

Poprzedni system operacyjny: Windows 10 1903

Bieżący system operacyjny: Linux Mint 19.2

Myślę, że ten problem może pochodzić z komputerów z systemem Windows.

Taseer
źródło
Mam podobny problem - ale dla mnie to INSTALL_PARSE_FAILED_NOT_APKpodczas testów Espresso
adek111
Ja też dostajęINSTALL_PARSE_FAILED_NOT_APK
jobevers
Mam też ten sam problem.
Santhosh
14
wow Google, jak możesz zrobić to wydanie STABILNE ?!
0101100101
Czy sprawdziłeś, czy funkcja Instant Run jest włączona w Twoim Android Studio?
Reaz Murshed

Odpowiedzi:

99

Otwórz konfigurację uruchamiania / debugowania okno dialogowe (Windows: Uruchom> Edytuj konfiguracje)

edytuj aplikację You> Ogólne> Opcje instalacji> Zainstaluj flagi .

dodaj flagi instalacji -r -t.

Ta flaga oznacza adb install -r -t apkpath

zdjęcie ekranu

胡 晟 昊
źródło
2
Ta flaga oznacza adb install -r -t apkpath, jak sądzę. @ TaseerAhmad
胡 晟 昊
21
-roznacza „zastąp istniejącą aplikację”. -toznacza „zezwalaj na pakiety testowe”
duckbrain
1
Skąd się wziął ten człowiek i jak pomyślał o tym rozwiązaniu? Daj mu medal!
0101100101
4
Nie działa dla mnie! :( Proszę spojrzeć na mój problem Jest trochę inna niż Twoja.. Stackoverflow.com/questions/57770464/...
Arsalan Shah
3
Ustawienie to Uruchom> Edytuj konfiguracje, jeśli wersja systemu Windows.
Beatrice Lin
17

Musisz wyłączyć "Użyj zaplecza libusb" w preferencjach -> debugger wprowadź opis obrazu tutaj

Houssin Boulla
źródło
Tylko to rozwiązanie pomogło - Xubuntu 18.04
Raskilas
Nie mogę uwierzyć, że to zadziałało! Android Studio 3.5.1 Android Debug Bridge wersja 1.0.41 Wersja 29.0.5-5949299
Kebab Krabby
1
Działa jak urok. Zmagałem się z tym problemem od miesięcy i tylko ta odpowiedź zadziałała dla mnie
srisindhu saride
1
O MÓJ BOŻE! to rozwiązało duży, duży problem. Walczyłem z tym problemem od miesięcy, jak dobrze… Wow!
Vivek
1
Naprawiono to dla mnie na OSx 10.15! Dziękuję Ci!
Chris.Jenkins,
12

Ten problem w Android Studio występuje na urządzeniach niższych niż API 26(Android 8). Jest to spowodowane zastąpieniem InstantRun, znanym teraz jako ApplyChanges .

Wydaje się, że są tylko dwa sposoby, zanim naprawią to w następnej aktualizacji.

  1. Biegnij dalej API>=26.
  2. Po każdej zmianie w edycji kodu run configurationzmiana deployz APKna App bundlei odwrotnie. Jeśli dobrze rozumiem, to poprawnie odbuduje aplikację i obejdzie błąd.

Oczywiście istnieje możliwość ręcznego usunięcia aplikacji z urządzenia przed uruchomieniem aplikacji z AndroidStudio.

mohax
źródło
1
Mam urządzenie z Androidem 9.0 i mam ten problem. Jednak gdy mieszam testy między emulatorem a prawdziwym urządzeniem, aplikacja i testy wydają się działać dość często. Naprawdę nie wiem dlaczego, ale może to komuś pomoże.
adek111
Może uda Ci się z powodzeniem ponownie uruchomić aplikację, API26+jeśli Apply changeszamiast tego klikniesz rerun? To jest nowy przycisk po prawej stronie rerun.
mohax
6

Dla mnie albo odinstalowanie aplikacji, albo wyczyszczenie projektu "rozwiązuje" problem. Aby było to mniej frustrujące, dodałem czyste zadanie do debugowania typu kompilacji w następujący sposób:

buildTypes {
    ...
    debug {
        clean
    }
    ...
}
Sancho
źródło
4

Po przeczytaniu uwag do wydania dotyczących stosowania zmian w końcu znalazłem rozwiązanie tutaj: https://developer.android.com/studio/run#apply-changes-run-fallback

Włącz opcję Run fallback, aby zastosować zmiany

Po kliknięciu Zastosuj zmiany i uruchom ponownie działanie lub Zastosuj zmiany kodu Android Studio tworzy nowy plik APK i określa, czy można zastosować zmiany. Jeśli zmiany nie mogą zostać zastosowane i spowodowałoby to niepowodzenie zastosowania zmian, Android Studio wyświetli monit o ponowne uruchomienie ikony Uruchom aplikację. Jeśli jednak nie chcesz, aby za każdym razem był wyświetlany monit, możesz skonfigurować Android Studio tak, aby automatycznie ponownie uruchamiał aplikację, gdy nie można zastosować zmian.

Aby włączyć to zachowanie, wykonaj następujące kroki:

  1. Otwórz okno dialogowe Ustawienia lub Preferencje:
    • W systemie Windows lub Linux wybierz opcję Plik> Ustawienia z paska menu .
    • W systemie macOS wybierz Android Studio> Preferencje z paska menu.
  2. Przejdź do Build, Execution, Deployment> Deployment .
  3. Zaznacz pola wyboru, aby włączyć automatyczne uruchamianie awaryjne dla jednej z akcji Zastosuj zmiany.
  4. Kliknij OK.

Zrzut ekranu działający w systemie Linux

M. Baja Aksha
źródło
1
Zmieniłem system operacyjny na Linux i AS 3.5 działa tam dobrze.
Taseer
4

Wystąpił problem z Lineage OS określony przez zespół Google na https://issuetracker.google.com/issues/139782879 :

Jesteśmy w stanie odtworzyć to na urządzeniu z LineageOS. Nie obsługuje w pełni wywołania systemowego, którego używamy dla DeltaInstall.

Nie ma oczywistego rozwiązania (poza usunięciem APK z folderu kompilacji lub odinstalowaniem aplikacji).

Powinniśmy znaleźć obejście tego problemu, ale w obecnym stanie LineageOS nie będzie mieć DeltaInstall i zawsze będzie musiał wykonać wolniejszą pełną instalację.

Zmiana na Nothingwskazaną przez OP nie spowoduje wdrożenia APK na urządzeniu (dlatego błąd nie zostanie wyświetlony), więc nie rozwiąże problemu.

Edytować:

Zostało to naprawione w Android Studio 3.6.

Dzięki za opinie. Powinno to zostać naprawione w najnowszych wersjach 3.6.

Pedro Oliveira
źródło
4

Buduj> Czysty projekt to dla mnie praca. Przed zmianą innych ustawień spróbuj najpierw tego.

Miłego kodowania :)

happy_Coding
źródło
3

Dostałem rozwiązanie w kodzie edytuj, uruchom konfigurację zmieniającą się we wdrażaniu, wybierz domyślny plik APK i zainstaluj flagę = -r -t, a następnie Zastosuj do uruchomienia. Aplikacja będzie działać na wszystkich urządzeniach i emulatorze. Byłem testowany w OPPO 1 plus, Samsung Tab, Emulator również .

Proszę, pomyśl, że konfiguracja Edytuj Uruchom blisko uruchomienia w Android Studio

edytuj aplikację> ogólne ==> opcje instalacji ==> Zainstaluj flagi

dodaj flagi instalacji -r -t

-r oznacza „zastąp istniejącą aplikację”. -t oznacza „zezwalaj na pakiety testowe”

wprowadź opis obrazu tutaj

Suyog Dorlikar
źródło
2

Ja też mam ten sam problem po uaktualnieniu do 3.5. Zastanawiałem się, czy miałeś szczęście, aby „Uruchom” działało z podłączonym urządzeniem?

AKTUALIZACJA: miałem to uruchomić, ustawiając „APK z pakietu aplikacji” w obszarze Opcje instalacji w oknie dialogowym „Konfiguracje uruchamiania / debugowania”

Chooven
źródło
1

Usunięcie / odinstalowanie aplikacji z urządzenia rozwiązało problem.

Alex Sag
źródło
Odinstalowałem aplikację z emulatora API 29 i pomogło.
CoolMind
1

Dodaj „ czystą ” zależność zadania gradle przed zainstalowaniem / uruchomieniem apek, używając poniższej konfiguracji.

project.afterEvaluate {
    android.applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def capitalizedVariant = variant.name.capitalize()
            def assembleVariantTask = project.tasks."assemble${capitalizedVariant}"
            assembleVariantTask.dependsOn clean
        }
    }
}

Skopiuj i wklej powyższy kod do swojego app/build.gradlepliku, działa to dla wszystkich wariantów kompilacji.

W szczególności powyższy kod będzie równoważny z poniższym, jeśli masz tylko typy kompilacji do debugowania i wydania:

assembleDebug.dependsOn clean
assembleRelease.dependsOn clean
shizhen
źródło
1

Co mi pomogło, aby usunąć starą aplikację, a następnie ponownie uruchomić projekt. W takim przypadku stary certyfikat podpisu nie przeszkadza.

Azamat Mahkamov
źródło
1

Otrzymałem również ten błąd, gdy uruchomiłem aplikację na prawdziwym xiaomi pocophone 1 i rozwiązałem ten problem, uruchamiając aplikację najpierw na emulatorze, a następnie na moim xiaomi pocophone 1

ch13mob
źródło
1
splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a','x86_64'
        universalApk true
    }
}

Ze względu na różne konstrukcje, takie jak „armeabi”, „x86”, „armeabi-v7a”, „x86_64” i „arm64-v8a”, musimy dodać powyższą konfigurację do pliku build.gradle.

user9973657
źródło
0

W końcu znalazłem rozwiązanie

po prostu ustaw v2SigningEnabled na wartość true

 signingConfigs {
    release {
        v2SigningEnabled true
    }
}
yefeng
źródło
0

Sam nie zmierzyłem się z tym problemem. Jednak wcześniej mieliśmy pewne problemy z natychmiastowym uruchomieniem Android Studio. Chciałbym zasugerować sprawdzenie następujących ustawień w Twoim Android Studio i odznaczenie ustawień, aby sprawdzić, czy Twój kod teraz działa.

Przejdź do, Android Studio -> Preferencea następnie odznacz następujące pod Deployments.

wprowadź opis obrazu tutaj

Oto co nowego w Android Studio 3.5 w tym zakresie, które pomoże ci lepiej zrozumieć tę funkcję.

wprowadź opis obrazu tutaj

Reaz Murshed
źródło
0

Spróbuj uruchomić polecenie „urządzenia adb”, jeśli wyjście jest puste, a następnie ponownie podłącz urządzenie. Pomogło mi to z tym samym błędem. Android Studio 3.5 nie stwierdza, że ​​urządzenie się rozłączyło.

Boris Timofeev
źródło
0

Odinstalowałem aplikację z emulatora, uruchomiłem i wszystko wróciło do normy

Woz
źródło
0

Dla mnie minSdkVer = 22, tarSdkVer = 28działaj Gradle -> app -> Tasks -> build -> clean && cleanBuildCache, problem rozwiązany.

Shanksiscool
źródło
0

Nacisnąłem ikonę młotka, aby odbudować aplikację, a następnie ją zainstalowałem. Więc nie wiem? Cała platforma android hack job jest do bani.

Wszystkie te pieniądze, ale Google nie może zatrudnić ani znaleźć programistów wystarczająco dobrych, aby wymyślili własny prawdziwy system operacyjny.

dcarl661
źródło
0

Miałem również do czynienia z tym samym problemem, wykonałem następujące kroki 1) Wyczyść projekt 2) Przebudowany projekt

To rozwiązało mój problem

Vivek
źródło
0

W moim przypadku nie mogę rozwiązać wszystkich powyższych odpowiedzi, więc znajduję inny sposób. Wreszcie znalazłem rozwiązanie. Po prostu znajdź odpowiednie sterowniki telefonu. Mój telefon rozwojowy to Samsung Galaxy Note 2 (MODEL: GT-N7105 / Android 4.1.2) . Po prostu dzielę się moim rozwiązaniem, jak to rozwiązałem. Mam nadzieję, że zaoszczędzisz czas.

BM
źródło
0

Problem występuje podczas testowania nowego modułu. Najpierw piszesz go indywidualnie, a następnie dodajesz do głównej aplikacji. Po dodaniu go do głównej aplikacji usuń „test_app” z telefonu.

Станислав Гордеев
źródło
0

Uruchom -> Edytuj konfigurację -> zainstaluj flagi: -r -t -> Zastosuj -> OK

Savita Sharma
źródło
0

W moim przypadku działa tylko po wyłączeniu weryfikacji podpisu APK:

$ adb shell settings put global verifier_verify_adb_installs 0

I używając -r -tflag wymienionych powyżej

lgallard
źródło
0

Ten błąd nadal występuje na moim Mac OS, kiedy dostaję nowe prawdziwe urządzenie i próbuję zainstalować apk z Android Studio 3.5 - i znajduję brzydki sposób, jak to naprawić - otwórz terminal w studio i wykonaj:

cd app/build/outputs/apk/debug
adb install -r -t your_app_name.apk

I to musi mieć związek z każdym projektem i każdym urządzeniem !!

Edytowano:

W końcu zainstalowałem

Android Studio 3.6 Canary

  • jest to bardziej działająca wersja niż 3.5

Ale nadal trzeba dodać flagi instalacyjne -r -t

nicolas asinovich
źródło
Musimy poczekać na „stabilną” wersję 3.6.
Taseer,
0

Wystąpił ten problem kilka minut temu, kiedy próbowałem uruchomić aplikację na prawdziwym urządzeniu i zatrzymałem kompilację gradle, zanim się skończyło. Właśnie odinstalowałem aplikację na urządzeniu i uruchomiłem ją ponownie na AVD i prawdziwym urządzeniu (jednocześnie) i zadziałało. Mam nadzieję, że to działa również dla Ciebie

Richierich
źródło
0

Główne rozwiązanie

  1. Plik -> Ustawienia -> Kompilacja, wykonanie, wdrożenie -> Debugger > WyłączUse libusb backend

  2. Gradle (Klapka po prawej stronie IDE) -> android -> aplikacja -> Zadania -> zainstaluj -> odinstaluj wszystko lub możesz to również zrobić za pomocą konsoli w następujący sposób:

    $ ./gradlew uninstallAll



Inne wskazówki:

  • Usuń i ponownie utwórz aplikację w konfiguracji uruchamiania / debugowania

    • Opcje instalacji -> Sprawdź instalację dla wszystkich użytkowników
  • Konfiguracja uruchamiania / debugowania -> Opcje uruchamiania> Uruchom: określone działanie> Wybierz działanie

  • Zainstaluj aplikację za pomocą innego fizycznego urządzenia, wersji IDE lub komputera

  • Zainstaluj ponownie IDE i usuń .android

  • Spróbuj ponownie z głównym rozwiązaniem


Jeśli chcesz zainstalować i otworzyć aplikację, możesz użyć adb za pomocą następujących poleceń:

$ adb install -r -t absolute-path.apk

$ adb shell am start -n "com.package.flavor.env/.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

GL

Źródło

Braian Coronel
źródło
-1

spróbuj zmienić android: appComponentFactory=""na android:appComponentFactory="new", "new"mogą być dowolne słowa

sh_ZJ
źródło
-2

Ostatecznie otrzymałem rozwiązanie w kodzie edytuj uruchom konfigurację zmieniającą się w opcji Instalacja DEPLOY -> z wybierz 4 opcję -> (Nothing) opcja -> Apply I aplikacja działa poprawnie w Android Studio 3.5. W wersji mobilnej i emulatorze również. To działa poprawnie w Androidzie w wersji 9 również Jest to trwałe rozwiązanie.

Suyog Dorlikar
źródło