Błąd typu 3 Błąd: Klasa aktywności {} nie istnieje


397

Mam projekt Android IntelliJ, który pomyślnie zaimportowałem do Android Studio 0.4.0. Działa idealnie, jeśli niczego nie zmieniam w manifestie. Jednak gdy chcę zmienić działanie programu uruchamiającego i uruchomić go, błąd kończy się niepowodzeniem:

Launching application: com.trackingeng/LandingActivity.
DEVICE SHELL COMMAND: am start -D -n "com.trackingeng/LandingActivity"  
    -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN  
    cat=[android.intent.category.LAUNCHER] cmp=com.trackingeng/LandingActivity }
Error type 3
Error: Activity class {com.trackingeng/LandingActivity} does not exist.

Kiedy klikam Synchronizuj projekt z plikami Gradle , wyświetla:

Project Sync
The project 'TrackingEng' is not a Gradle-based project

Uruchom ustawienia: wprowadź opis zdjęcia tutaj


Gdzie jest twój oryginalny plik AndroidManifest.xml ?
twlkyao

W tym samym miejscu, w folderze głównym w projekcie.
Jacob

To znaczy, czy to zdjęcie w poście jest twoje oryginalne, AndroidManifest.xmlczy nie.
twlkyao

7
Znalazłem wątek, mam nadzieję, że może pomóc. stackoverflow.com/questions/19670607/…
twlkyao

4
Chociaż nie jest to skuteczne w przypadku PO, synchronizacja stopni została Error: Activity class {...} does not exist.dla mnie rozwiązana .
dinozaur

Odpowiedzi:


612

Po refaktoryzacji napotkałem podobny problem.
Oto, co zrobiłem, aby rozwiązać ten problem:

  1. Oczyściłem projekt
  2. Usunięto Buildkatalog
  3. Zrestartowałem Android Studio
  4. Odbuduj projekt
  5. Biegać
  6. Opcjonalnie (przejdź do menu plików na Androidzie, kliknij „Unieważnij pamięć podręczną / Uruchom ponownie ...” odinstaluj aplikację na telefonie i spróbuj ponownie)

I wszystko działało dobrze!
Myślę, że kluczem jest zrestartowanie IDE .

Mam nadzieję, że to pomoże tobie lub komukolwiek innemu!

Edycja 1:
Jeśli powyższe kroki nie działają, usunięcie pamięci podręcznej Gradle wydaje się rozwiązaniem, jak wskazał @Yasitha.

Edytuj 2
Zgodnie z sugestią kilku użytkowników w komentarzach poniżej, czasem problem można rozwiązać, całkowicie usuwając i ponownie instalując aplikację z urządzenia.
Wystarczy wpisać adb uninstall <package>terminal, aby całkowicie usunąć aplikację z urządzenia.

Edycja 3
Jak wspomniano w odpowiedzi Abhisheka , należy również spróbować usunąć aplikację z urządzenia na wypadek, gdyby na urządzeniu skonfigurowanych było wielu użytkowników.
Po prostu idź do Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

AKTUALIZACJA dla Androida Studio 2.1 i nowszych

Podczas pracy z Androidem Studio 2.1 i nowszym możesz również napotkać ten problem, jeśli w ustawieniach jest włączona opcja natychmiastowego uruchamiania (domyślnie jest włączona).

Aby wyłączyć tę opcję, przejdź do Preferencesopcji w Android Studiogórnym menu i poszukaj, Instant Runaby odznaczyć pierwsze pole wyboru na tym ekranie.

Wyłącz Natychmiastowe uruchamianie w Android Studio 2.1+

W każdym razie to mnie naprawiło. Pierwotnie wskazany przez użytkownika @yusufonder. Odkryłem, że to był problem, ponieważ instalacja stopniowa nadal działała.


2
Działa dobrze nawet bez usuwania katalogu kompilacji.
Shivam Bhalla

12
Miałem usunąć pamięć podręczną stopni, jak opisano tutaj stackoverflow.com/a/25602161/630833
jayeffkay

4
Chociaż jest to późny wpis, ale napotykam ten problem dopiero po zaktualizowaniu Androida Studio do wersji 1.5 i powyższe rozwiązanie nie działa w moim przypadku.
zulkarnain shah

42
Spróbuj uruchomić „adb uninstall <package>” w terminalu, aby całkowicie usunąć aplikację z urządzenia
Mikhail Sharin

3
W Androidzie 7.0, gdy odinstalujesz aplikację na urządzeniu (przeciągając ją do etykiety „Odinstaluj” na ekranie głównym urządzenia), aplikacja jest po prostu „wyłączona”. Musisz przejść do Ustawień / aplikacji i ręcznie usunąć stamtąd aplikację (alternatywnie użyj polecenia ADB). Odbijam się od niego kilka razy, ale po kilku ustach zapominam o tej tak zwanej funkcji Androida 7.0.
Mike Keskinov

325

Może być pomocny dla kogoś: -

Czasami podczas testowania na urządzeniu aplikacja nie odinstalowuje się poprawnie . Aby to zweryfikować i naprawić:

  1. Przejdź do Ustawień .
  2. Przejdź do aplikacji .
  3. Wybierz swoją aplikację. (tutaj możesz sprawdzić, czy aplikacja nie została poprawnie odinstalowana) .
  4. Otwórz menu przepełnienia w prawym górnym rogu i wybierz Odinstaluj dla wszystkich użytkowników .
  5. Gotowy. Spróbuj zainstalować, a następnie uruchom ponownie aplikację.

12
Korzystając z podglądu dla programistów Androida O w wersji 3, nie mogłem wykonać akcji Odinstaluj dla wszystkich użytkowników, ponieważ poinformowało mnie, że aplikacja nie istnieje na liście aplikacji. Uruchomienie adb uninstall {packageName}rozwiązało problem.
alexbchr

1
W przypadku emulatora odpowiedź Ankita nie zadziałała. Usunąłem moją aplikację z programu uruchamiającego, ale pozostała w systemie, co spowodowało problem. Musiałem użyć tej metody, aby całkowicie ją odinstalować.
Cholerne warzywa

2
dzięki, miałem do czynienia z tym problemem na
Androidzie oreo,

3
To był dokładnie mój problem, aplikacja nie została zainstalowana dla tego użytkownika. Właśnie odinstalowałem go zgodnie z powyższą procedurą i zaczął działać
Bugs Happen

2
moja aplikacja została wyłączona
iamsujan

81

Napotkałbym ten problem podczas odinstalowywania aplikacji za pomocą urządzenia (tj. Przeciąganie aplikacji do opcji „Odinstaluj”). Ale oto właściwy sposób odinstalowania:

Użyj ./gradlew uninstallAll polecenia. Zapobiegnie to Error: Activity class {HomeActivity} does not exist.błędowi.

Aktualizacja:

Jeśli jesteś leniwy, możesz użyć skrótu do tego zadania: ./gradlew uA .

Możesz też zdefiniować aliasy dla typowych zadań stopniowych .bash_profile, dzięki czemu zaoszczędzisz czas, pisanie i nie będziesz musiał pamiętać każdego polecenia ani martwić się o literówki. Proponuję to zrobić.


To było złe, ale nadal uważam, że było lepiej. Gradle jest ohydą IMO.
JJF,

4
To jedyna rzecz, która działała dla mnie z Android Studio 3.1 Canary 7.
NOTiFY

2
świetna odpowiedź. Wygląda na to, że niektóre urządzenia mają problem z odinstalowaniem. Dla mnie jest to Xiaomi Mi Mix 2 z EU Build. Myślę, że to błąd w kompilacji wersji urządzenia.
Opiatefuchs

1
To działa dla mnie. Po uruchomieniu ./gradlew uninstallAll
Shanison

1
Na początku 2020 r. Było to jedyne rozwiązanie, które działało dla mnie.
PGMacDesign

73

Dzieje się tak, gdy wykonasz następujące czynności

  • podłącz swoje urządzenie / emulator
  • uruchom aplikację z Android Studio (AS)
  • użyj / przetestuj aplikację i odinstaluj ją z urządzenia, gdy jest ono nadal podłączone do komputera
  • spróbuj ponownie uruchomić aplikację z AS

AS myśli, że nadal masz aplikację na swoim urządzeniu.

tl; dr - Aby rozwiązać ten problem, możesz po prostu odłączyć urządzenie po odinstalowaniu aplikacji i podłączyć je ponownie.


11
Nie daj się jednak pomylić, jeśli aplikacja nie pojawi się w programie uruchamiającym, po prostu sprawdź ustawienia / Aplikacje -> „Wszystkie”, jeśli aplikacja jest na liście. Tak było w przypadku mojej aplikacji i po jej usunięciu wszystko znów działało dobrze.
Daniel Gilbert

1
Jeśli nie pojawia się w programie uruchamiającym, jak powiedział @DanielGilbert, możesz łatwo odinstalować za pomocą polecenia „adb uninstall package.name”. To też działało dla mnie.
Mike

To też działało dla mnie. Uruchomiłem przykładowy projekt, który ma dwie wersje. Zainstalowałem pierwszą wersję, a następnie odinstalowałem ją, aby zainstalować drugą wersję. Zmarnowałem dużo czasu, aby naprawić błąd. To nie pierwszy raz, kiedy programowanie Androida miało takie dziwne, nierozwiązywalne problemy ...
Cholerne warzywa,

Mój przypadek. Odłącz i podłącz urządzenie - to zadziałało dla mnie! Aplikacja nie była zainstalowana na urządzeniu, ale AS nie zainstalowała jej, sądząc, że aplikacja jest nadal na moim urządzeniu
Victoria Klimova

35

Aplikacja jest już zainstalowana dla innego użytkownika. Spróbuj odinstalować tę samą aplikację dla wszystkich użytkowników. Więc spróbuj.

Lub możesz spróbować po uruchomieniu polecenia adb.

adb uninstall PACKAGE_NAME

gdzie PACKAGE_NAME to pełna nazwa, na przykład com.example.myapp


To działa! w moim przypadku, gdy adb uninstall com.demonazwa mojej aplikacji todemo
Muhammad Ovi

com.demo będzie nazwą twojego pakietu
Dipendra Sharma

3
Jedyna odpowiedź, która zadziałała! Android Studio 3.4.2, API Poziom 28
ykonda

Jedyne rozwiązanie. Dzięki!
Juan Ignacio Barisich,

upewnij się, że urządzenie jest podłączone za pomocą poleceniaadb devices
G. Ciardini,

33

Miałem ten sam problem i tak to naprawiłem.

Przejdź do Gradle> Zadania> Zainstaluj> Odinstaluj wszystkie

wprowadź opis zdjęcia tutaj


1
To działa dla mnie. Dziękuję Ci.
Malwinder Singh

To też działa dla mnie. Ale dlaczego problem się zdarza i jak uninstallAllrozwiązać? Dzięki.
LiuWenbin_NO.

Pracowałem też dla mnie!
Fluffy T Rex

To powinna być właściwa odpowiedź! Optymalne i skuteczne
HatemTmi

27

Miałem ten sam błąd po zmianie nazwy / refaktoryzacji. DodałemapplicationId atrybut własności do mojego pliku build.gradle i ustawić jej wartość do pakietu aplikacji.

W build.gradle :

android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}

Proszę wyjaśnić, jak dodać applicationId do buidl.gradle!
realtebo

Możesz również dodać identyfikator aplikacji do ustawień modułu aplikacji jako alternatywę
Michael Kern

19

Spróbuj zmienić nazwę działania w swoim AndroidManifest.xmlpliku.

Teraz mówi:

<activity android:name="LandingActivity" >

Spróbuj dodać kropkę na początku nazwy działania:

<activity android:name=".LandingActivity" >

Lub dodając nazwę pakietu na początku nazwy działania:

<activity android:name="com.trackingeng.LandingActivity" >

Problemem może być również to, że nazwa pakietu zawiera tylko dwa składniki oddzielone kropkami (nazwa pakietu to „com.trackingeng”; bardziej standardowa nazwa pakietu to „com.trackingeng.app”)


2
@Siavash, z wyjątkiem tego, że nie jest to poprawne ™
moskwa

2
Jak więc @dcow? Przyjęta tutaj odpowiedź nie działała dla mnie, ale ta zadziałała.
Siavash,

Który? dodając kropkę lub 3-poziomową nazwę?
realtebo

15

Wykonaj poniższe czynności Przejdź do Ustawienia urządzeń mobilnych> Aplikacje> Twoja aplikacja> Więcej> Hit Odinstaluj aplikację dla wszystkich użytkowników.

Powód: Ponieważ masz wielu użytkowników w telefonie i odinstalowałeś tę aplikację tylko dla jednego.

CIESZYĆ SIĘ:


Myślę, że wybrana odpowiedź również powinna to dodać. To działało dla mnie.
jasxir

13

Myślę, że innym powodem tego problemu jest to, że nie jest on w pełni usunięty dla wszystkich użytkowników urządzenia.

Przejdź do Ustawienia -> Aplikacje -> Twoje aplikacje -> Kliknij do 3 kropek w prawym górnym rogu -> Odinstaluj dla wszystkich użytkowników

Mi to pasuje. Dzieje się tak, zwłaszcza, że ​​zmieniasz ikony aplikacji lub bawisz się plikiem AndroidManifest.xml.


1
Nie wierzę, że to zadziałało. Miałem 2 konta na moim urządzeniu i zostało ono zainstalowane dla drugiego użytkownika.
StarWind0

tak, jest to trochę denerwujące, ale zwykle dzieje się to, gdy aplikacja jest w fazie rozwoju, ponieważ możesz chcieć zmienić ikony ładowania itp.
Long Dao

12

Dla mnie problemem była AndroidStudio myśl, że aplikacja jest nadal na urządzeniu.

Naprawić to:

  1. zrestartuj adbdemona ; w terminalu lub wierszu polecenia wprowadź:

    adb kill-server
    adb start-server
  2. spróbuj uruchomić aplikację.

  3. jeśli nadal nie działa, sprawdź tę odpowiedź .

upewnij się, że platform-toolsz Android SDK dodaje do swoich zmiennych ścieżce systemowej !


11

W moim przypadku odinstalowałem aplikację z telefonu po tym, jak zaczął się problem, ale poniższe polecenie działało dla mnie.

Wykonaj poniższe polecenie w terminalu / cmd

adb uninstall <package_name>

nazwa_pakietu coś w rodzaju com.example.applicationname Następnie spróbuj ponownie zainstalować aplikację. To powinno działać.


1
Działa to dla mnie, ponieważ wcześniej zainstalowałem apk przez adb, ale jakoś odinstalowanie go za pomocą menedżera aplikacji telefonu pozostawiło pewne ślady aplikacji.
dekaru

9

dla mnie na Androidzie 6, kiedy odinstalowałem aplikację, faktycznie wyłączyła się, a nie została usunięta z urządzenia.

Ustawienia> Aplikacje> kliknij aplikację i odinstaluj

to naprawiło to dla mnie


To działa, ale trochę więcej punktów. Jeśli usuniesz go za pomocą adb, nie gwarantuje to, że problem zostanie rozwiązany, zdarzenie, jeśli nie zobaczysz tego pakietu za pośrednictwem adb pm. Musisz to zrobić rękami, znaleźć w Ustawienia-> Aplikacja i wybrać Usuń dla wszystkich użytkowników. Następnie możesz zainstalować go ponownie
Silwester

9

Poniższe polecenie działało dla mnie. Czasami powoduje to częściowa dezinstalacja aplikacji.

Wykonaj poniższe polecenie w terminalu / cmd

adb uninstall <package_name>

Następnie spróbuj ponownie zainstalować aplikację. To powinno działać.


7

Ostrzegamy, że jeśli na urządzeniu ustawionych jest wiele profili, aplikacja może już istnieć w jednym z innych profili.

Odinstalowanie aplikacji ze wszystkich profili rozwiązało problem.


6

Dla mnie był to bardzo specyficzny problem, mam Lg g5 do testowania mojej aplikacji i aby zresetować dane aplikacji, odinstalowałem ją na telefonie, ale telefon ma „fajną” funkcję, aby nie odinstalowywać aplikacji natychmiast, abyś mógł je ponownie zainstalować w ciągu jednego dnia. Więc aplikacja została zainstalowana, ale nie nadaje się do użytku ( wyłączona ) po całkowitym usunięciu aplikacji z telefonu.


Pracował dla mnie. LG G6 ma tę samą „funkcję” - nie znalazłem sposobu, aby ją wyłączyć.
Cililing

6

W moim przypadku było to spowodowane tym, że aplikacja, którą próbowałem uruchomić, została zainstalowana dla innego użytkownika na urządzeniu. Przejdź do Ustawienia -> Aplikacje (Wszystkie aplikacje) i wybierz aplikację. Kliknij menu przepełnienia i wybierz „Odinstaluj dla wszystkich użytkowników”. To powinno rozwiązać problem.


To samo zdarzyło się e i musiałem przejść do Ustawienia> Aplikacje i powiadomienia> Informacje o aplikacji. Musiałem „odinstalować dla wszystkich użytkowników” i zainstalować ponownie.
luckylukein

Natknąłem się na ten sam problem i prawdopodobnie odpowiedź również powinna zostać zaktualizowana przy użyciu tego rozwiązania
Panduka DeSilva

Ten błąd wystąpił podczas konfigurowania wielu typów kompilacji w moim projekcie.
Rahul Rastogi

6

Używam Androida Studio 3.2 Beta 5, w obliczu tego samego problemu

Iść do

File -> Invalidate Caches / Restart...

Rozwiązany problem dla mnie


6

Kiedy dostaję ten problem, zawsze wypróbowuję to rozwiązanie i działa.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Ale tym razem znalazłem wyjątek. To rozwiązanie nie działa dla mnie. Potem dowiaduję się, że problemem jest gotówka Emulator. Po prostu to robię Wipe datai Cold boot nowproblem został rozwiązany.

wprowadź opis zdjęcia tutaj


5

Na wypadek, gdyby ktoś napotkał mój problem i nie miał szczęścia z innymi rozwiązaniami ... Próbowałem rozpocząć działalność za pośrednictwem adb dla FireTV podczas debugowania integracji Amazon Launcher. Jednak mój projekt miał 60 różnych wariantów kompilacji (projekt wieloplatformowy, projekt dla wielu aplikacji), a identyfikator aplikacji nie pasował do ścieżki klasy, ponieważ pakiet środowiska wykonawczego (i ścieżki klasy) różniły się od identyfikatora aplikacji.

Próbowałem biec adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Oczywiście próbowałem wielu kombinacji z com.runtimepath.example ponieważ miałem dodatkowe wyzwanie związane z inną aplikacją w moim build.gradle i inną w czasie wykonywania)

W końcu pomógł ten post https://stackoverflow.com/a/36255727/5970652

Co ujawniło inny format! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Jeśli więc masz inną ścieżkę klasy środowiska wykonawczego, spróbuj określić ją za pomocą aplikacji build.gradle przed ukośnikiem, a następnie ścieżką klasy środowiska wykonawczego.

Możesz również uzyskać te wartości od BuildConfig.APPLICATION_IDi, this.getLocalClassName()jeśli chcesz je zalogować w logcat.


1
To był dokładnie mój problem! Przez pewien czas byłem sfrustrowany, ale kiedy umieściłem nazwę pakietu aplikacji przed ukośnikiem i w pełni kwalifikowaną nazwę pakietu / klasy po ukośniku, zadziałało.
Chad Schultz,

4

Nawet ja miałem ten sam problem, ale żadne z powyższych rozwiązań nie zadziałało. Problem polegał na tym, że zawiesiłem konkretną aplikację, którą próbowałem uruchomić za pośrednictwem Titanium Backup, dzięki czemu otrzymałem powyższy błąd. Próbowałem zarówno w Eclipse, jak i Android Studio.

Po realizacji po prostu odinstalowałem aplikację, a następnie uruchomiłem ją ponownie.

Problem rozwiązany :-)


4

Chciałbym podzielić się sztuczką, która pomogła w moim przypadku. Odinstalowałem aplikację z urządzenia i nic z operacji czyszczenia / przebudowywania / restartowania Android Studio nie pomogło.

Ponieważ Android Studio uważa, że ​​aplikacja jest nadal zainstalowana na urządzeniu i nie wdraża jej, możesz wymusić instalację za pomocą ADB:

adb install -r <your_application_from.apk>

gdzie -roznacza ponownie zainstaluj aplikację, zachowując jej dane.


To jedyna rzecz, która działała dla mnie, dziękuję!
Hugo,

4

Mam Samsung Galaxy. Wyszukiwanie w powyższych ustawieniach nie działało, ponieważ w ogóle nie wyświetlało się w ustawieniach moich aplikacji.

Znalazłem aplikację na telefonie, wpisując nazwę aplikacji w polu wyszukiwania. Uświadomiłem sobie, że było to w profilu „Work” (przy użyciu Mobile @ Work) i usunąłem go. Możesz znaleźć ustawienia profilu, przechodząc do Ustawienia-> Profil pracy-> Aplikacje

Mam nadzieję, że to pomoże komuś, kto może nie znaleźć tego w taki sam sposób, jak wiele innych odpowiedzi stwierdziło, że można go znaleźć w ustawieniach.


1
OMG, dzięki, uratowałeś mi dzień. Ten sam problem z fckn samsung
Peter,

4

Napotkałem ten problem w Android Studio 3.5.1 Zajęło mi dzień, aby rozwiązać ten problem, próbowałem wszystkiego, w tym czyszczenia pamięci podręcznej, restartu i zmiany nazwy pakietu. Więc jeśli którykolwiek z powyższych nie działał, spróbuj tego.

Wystarczy przejść do gradle> Tasks> Install> UninstallAll

Oto link: Błąd typu 3: Klasa aktywności {...} nie istnieje


4

Czasami aplikacja instaluje się na użytkowniku gościa na telefonie komórkowym, więc spróbuj zmienić gościa i odinstalować aplikację.

Ponadto spróbuj wykonać następujące polecenie, aby odinstalować aplikację Adb odinstalować pakiet „Twoja nazwa pakietu”


3

W przeszłości miałem również ten sam problem. Takie problemy występują w rzeczywistości, gdy dokonujemy refaktoryzacji, takiej jak - zmiana nazwy, przenoszenie plików w projekcie itp. Zmiana nazwy i przenoszenie plików wymaga zmian w pliku stopni, więc przy każdej zmianie nazwy lub przeniesieniu pliku wystarczy wyczyścić projekt:

Kompilacja -> Wyczyść projekt

Czyszczenie projektu po prostu usuwa pliki .class i ponownie kompiluje projekt. Zasadniczo wymusza przebudowę projektu.

Czasami tego rodzaju błędy nie zostały wyczyszczone podczas czyszczenia projektu, a następnie spróbuj odinstalować aplikację z urządzenia (emulatora lub fizycznego) i ponownie uruchom aplikację. Mam nadzieję, że to ci pomoże, pomaga mi 50% razy.

Uwaga: - Ilekroć pojawi się błąd, po prostu nie wchodź do Google, wyczyść projekt, jeśli to nie działa, zrób to, co chcesz w Google.


3

Miałem ten sam problem i rozwiązałem go, refaktoryzując program uruchamiający aktywność, wystarczy zmienić nazwę klasy i działa.


3

Mam podobny problem. Wykonaj poniższe czynności.
to ci pomoże:

1- Wyczyść projekt
2- Usuń katalog kompilacji
3- Uruchom ponownie Android Studio
4- Odbuduj projekt
5- Uruchomi się pomyślnie.

Dzięki


3

Mam LG Stylus iw moim telefonie testowym aplikacja nie jest trwale usuwana. W Ustawieniach -> Aplikacja znalazłem aplikację do debugowania (którą próbuję zainstalować i debugować przez AS) z wyłączoną adnotacją. Po usunięciu aplikacji z telefonu błąd zniknął.


To nie wydaje mi się odpowiedzią.
mpaskov

3

W moim przypadku był kolejny powód:

Mam 2 użytkowników: mnie i gościa. i aplikacja została zainstalowana na obu z nich, ale początkowo została usunięta.

kiedy przełączyłem się na ekran gościa i stamtąd usunąłem aplikację, aplikacja została zainstalowana.

mam nadzieję, że to komuś pomoże :)

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.