Errore di tipo 3 Errore: la classe di attività {} non esiste


397

Ho un progetto Android IntelliJ, che ho importato con successo in Android Studio 0.4.0. Funziona perfettamente se non cambio nulla in manifest. Tuttavia, quando voglio modificare l'attività di avvio ed eseguire, non riesce con questo errore:

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.

Quando faccio clic su Sincronizza progetto con file Gradle , viene visualizzato:

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

Esegui impostazioni: inserisci qui la descrizione dell'immagine


Dov'è il tuo file AndroidManifest.xml originale ?
twlkyao,

Nello stesso posto, nella cartella principale del progetto.
Jacob,

Voglio dire, questa foto nel post è la tua originale AndroidManifest.xmlo no.
twlkyao,

7
Ho trovato un filo, la speranza potrebbe aiutare. stackoverflow.com/questions/19670607/...
twlkyao

4
Sebbene non sia efficace nel caso del PO, fare una sincronizzazione graduale risolto Error: Activity class {...} does not exist.per me.
dinosauro

Risposte:


613

Ho affrontato un problema simile dopo il refactoring.
Questo è quello che ho fatto per risolvere questo problema:

  1. Pulito il progetto
  2. Eliminata la Builddirectory
  3. Riavviato Android Studio
  4. Ricostruisci il progetto
  5. Correre
  6. Facoltativamente (vai al menu File su Android, fai clic su "Cache non valide / Riavvia ..." disinstalla l'app sul tuo telefono e riprova)

E tutto ha funzionato bene!
Penso che la chiave sia riavviare il tuo IDE .

Spero che questo aiuti te o chiunque altro!

Modifica 1:
se i passaggi precedenti non funzionano per te, l'eliminazione della cache Gradle sembra essere una soluzione, come sottolineato da @Yasitha.

Modifica 2
Come suggerito da un paio di utenti nei commenti seguenti, a volte il problema può essere risolto rimuovendo e reinstallando completamente l'app dal dispositivo.
Digita semplicemente il adb uninstall <package>terminale per rimuovere completamente l'app dal dispositivo.

Modifica 3
Come menzionato nella risposta di Abhishek , dovresti anche provare a eliminare l'app dal tuo dispositivo nel caso in cui siano impostati più utenti sul tuo dispositivo.
Vai semplicemente a Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

AGGIORNAMENTO per Android Studio 2.1 e versioni successive

Quando esegui Android Studio 2.1 e versioni successive, puoi riscontrare questo problema anche se l'opzione di esecuzione istantanea è abilitata nelle tue preferenze (è attivata per impostazione predefinita).

Per disabilitare questa opzione vai Preferencesall'opzione nel Android Studiomenu in alto e cerca in Instant Runmodo da poter deselezionare la prima casella di controllo in quella schermata.

Disabilita Instant Run in Android Studio 2.1+

Comunque, questo mi ha risolto. Inizialmente segnalato dall'utente @yusufonder. Ho scoperto che questo era il problema poiché l'installazione gradle funzionava ancora.


2
Funziona bene anche senza cancellare la directory di build.
Shivam Bhalla

12
Ho dovuto fare di cancellazione della cache Gradle come descritto qui stackoverflow.com/a/25602161/630833
jayeffkay

4
Anche se questa è una voce in ritardo, ma sto affrontando questo problema solo dopo aver aggiornato Android Studio a 1.5 e la soluzione di cui sopra non funziona nel mio caso.
Zulkarnain Shah,

42
Prova a eseguire 'adb uninstall <pacchetto>' nel terminale per rimuovere completamente l'app dal dispositivo
Mikhail Sharin

3
Su Android 7.0 quando si disinstalla l'app sul dispositivo (trascinandola sull'etichetta "Disinstalla" nella schermata principale del dispositivo), l'app infatti è semplicemente "disabilitata". Devi andare su Impostazioni / App e rimuovere manualmente l'app da lì (in alternativa usa il comando ADB). Ci rimbalzo un paio di volte, ma dopo alcune bocche mi dimentico di questa cosiddetta funzionalità di Android 7.0.
Mike Keskinov,

325

Può essere utile per qualcuno: -

A volte durante il test su un dispositivo, l'app non viene disinstallata correttamente . Per verificare e correggere questo:

  1. Vai su Impostazioni .
  2. Vai alle app .
  3. Seleziona la tua app. (qui puoi verificare che l'app non sia stata disinstallata correttamente) .
  4. Apri il menu di overflow in alto a destra e seleziona Disinstalla per tutti gli utenti .
  5. Fatto. Prova a installare, quindi avvia nuovamente l'app.

12
Utilizzando l'anteprima per sviluppatori 3 di Android O, non sono stato in grado di eseguire l'azione Disinstalla per tutti gli utenti, poiché mi diceva che l'app non esisteva nell'elenco delle app. L'esecuzione ha adb uninstall {packageName}risolto il problema.
alexbchr,

1
Per l'emulatore, la risposta di Ankit non ha funzionato. Avevo eliminato la mia app dal programma di avvio, ma era rimasta sul sistema, causando il problema. Ho dovuto usare questo metodo per disinstallarlo completamente.
Damn Vegetables,

2
grazie amico stavo affrontando questo problema su Android oreo dove l'applicazione non ha disinstallato completamente il successo
Salman500

3
Questo era esattamente il mio problema, l'app non era installata per questo utente. Ho appena disinstallato con la procedura sopra menzionata e ha iniziato a funzionare
Bugs Happen il

2
la mia app era disabilitata
iamsujan,

82

Dovrei affrontare questo problema durante la disinstallazione dell'app tramite il dispositivo (ovvero trascinando l'app sull'opzione "Disinstalla"). Ma ecco il modo corretto di disinstallare:

Usa il ./gradlew uninstallAllcomando Ciò impedirà l' Error: Activity class {HomeActivity} does not exist.errore.

Aggiornare:

Se siete pigri è possibile utilizzare l'abbreviazione per questo compito: ./gradlew uA.

O definisci gli alias per le attività di gradle più comuni nel tuo .bash_profile, così facendo risparmierai tempo, digitando e non dovrai ricordare ogni comando né preoccuparti di errori di battitura. Suggerisco di farlo.


Per quanto brutta fosse, penso ancora che fosse meglio. Gradle è un abominio IMO.
JJF,

4
Questa è l'unica cosa che ha funzionato per me con Android Studio 3.1 Canary 7.
NOTiFY

2
Bella risposta. Alcuni dispositivi sembrano avere un problema con la disinstallazione. Per me, è Xiaomi Mi Mix 2 con EU Build. Immagino che sia un errore nella versione build del dispositivo.
Opiatefuchs,

1
Questo funziona per me. Dopo aver eseguito ./gradlew uninstallAll
Shanison

1
All'inizio del 2020, questa è stata l'unica soluzione che ha funzionato per me.
PGMacDesign

73

Questo succede quando si esegue quanto segue

  • collega il tuo dispositivo / emulatore
  • eseguire l'app da Android Studio (AS)
  • utilizzare / testare l'app e disinstallarla dal dispositivo mentre è ancora connessa al computer
  • prova a eseguire di nuovo l'app da AS

AS pensa che tu abbia ancora l'app nel tuo dispositivo.

tl; dr - Per risolvere il problema, puoi semplicemente disconnettere il dispositivo dopo aver disinstallato l'app e riconnetterlo.


11
Anche se non lasciarti confondere se l'app non viene visualizzata in Avvio applicazioni, controlla solo le impostazioni / App -> "Tutto" se l'app è elencata. È stato il caso della mia applicazione e, dopo averlo rimosso, tutto ha funzionato di nuovo bene.
Daniel Gilbert,

1
Se non viene visualizzato nel programma di avvio come diceva @DanielGilbert, è possibile disinstallarlo facilmente con "adb uninstall nome.pacchetto". Questo ha funzionato anche per me.
Mike,

Questo ha funzionato anche per me. Stavo eseguendo un progetto di esempio, che ha due versioni. Ho installato la prima versione, quindi l'ho disinstallata per installare la seconda versione. Ho perso molto tempo per correggere l'errore. Questa non è la prima volta che lo sviluppo di Android ha avuto questo tipo di problemi strani e irrisolvibili ...
Damn Vegetables

Il mio caso. Disconnetti e collega il dispositivo: questo ha funzionato per me! L'app non era sul dispositivo, ma AS non l'ha installata pensando che l'app sia ancora nel mio dispositivo
Victoria Klimova,

35

L'app è già installata per un altro utente. Prova a disinstallare la stessa app per tutto l'utente. Quindi prova.

Oppure puoi provare dopo aver eseguito il comando adb.

adb uninstall PACKAGE_NAME

dove PACKAGE_NAME è il nome completo come com.example.myapp


Questo funziona! nel mio caso in adb uninstall com.democui il nome della mia app erademo
Muhammad Ovi,

com.demo sarà il nome del tuo pacchetto
Dipendra Sharma,

3
L'unica risposta che ha funzionato! Android Studio 3.4.2, API Level 28
ykonda

L'unica soluzione Grazie!
Juan Ignacio Barisich,

assicurarsi che il dispositivo sia collegato tramite comandoadb devices
G. Ciardino

33

Ho avuto lo stesso problema, ed è così che l'ho risolto.

Vai a Gradle> Attività> Installa> UninstallAll

inserisci qui la descrizione dell'immagine


1
Questo funziona per me. Grazie.
Malwinder Singh,

Questo funziona anche per me. Ma perché si verifica il problema e come uninstallAllsi risolve? Grazie.
LiuWenbin_NO.

Ha funzionato anche per me!
The Fluffy T Rex,

Questa dovrebbe essere la risposta giusta! Ottimale ed efficace
HatemTmi l'

27

Ho avuto lo stesso errore dopo aver rinominato / refactoring. Quello che ho fatto è stato aggiungere l' applicationIdattributo property al mio file build.gradle e impostarne il valore sul pacchetto dell'applicazione.

In build.gradle :

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

Per favore, spiega come aggiungere applicationId a buidl.gradle!
realtebo,

In alternativa, potresti aggiungere l'ID applicazione alle impostazioni del modulo dell'applicazione
Michael Kern,

19

Prova a cambiare il nome dell'attività nel tuo AndroidManifest.xmlfile.

In questo momento dice:

<activity android:name="LandingActivity" >

Prova ad aggiungere un punto all'inizio del nome dell'attività:

<activity android:name=".LandingActivity" >

O aggiungendo il nome del pacchetto all'inizio del nome dell'attività:

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

Potrebbe anche essere un problema il fatto che il nome del pacchetto abbia solo due componenti separati da punti (il nome del pacchetto è "com.trackingeng"; un nome pacchetto più standard sarebbe "com.trackingeng.app")


2
@Siavash tranne che non è Correct ™
dcow il

2
In che modo @dcow? La risposta accettata qui non ha funzionato per me, ma questa ha funzionato.
Siavash,

Quale? aggiungendo un punto o un nome a 3 livelli?
realtebo,

15

Segui i passaggi seguenti Vai su Impostazioni per dispositivi mobili> App> La tua app> Altro> Premi Disinstalla app per tutti gli utenti.

Motivo: perché hai più utenti nel telefono e hai disinstallato quell'app solo per uno.

GODERE:


Penso che la risposta selezionata dovrebbe aggiungere anche questo. Questa è la cosa che ha funzionato per me.
jasxir,

13

Penso che un altro motivo per cui il problema si verifichi è che non è stato completamente eliminato per tutti gli utenti del dispositivo.

Vai su Impostazioni -> App -> Le tue app -> Fai clic sui 3 punti in alto a destra -> Disinstalla per tutti gli utenti

Per me funziona. Succede soprattutto se cambi le icone dell'app o fai un casino con il file AndroidManifest.xml.


1
Non posso credere che abbia funzionato. Avevo 2 account sul mio dispositivo ed è stato installato per l'altro utente.
StarWind0

sì, è un po 'fastidioso, ma di solito succede quando l'app è in fase di sviluppo perché potresti voler cambiare il caricamento di icone e cose ecc.
Long Dao

12

Per me, il problema era che AndroidStudio pensavo che l'app fosse ancora sul dispositivo.

Per risolverlo:

  1. riavviare il adbdemone ; in un terminale o prompt dei comandi, immettere:

    adb kill-server
    adb start-server
  2. prova ad avviare la tua app.

  3. se continua a non funzionare, controlla questa risposta .

Assicurarsi che la platform-toolsdel SDK di Android viene aggiunto al variabili percorso di sistema !


11

Nel mio caso ho disinstallato l'applicazione dal telefono dopo che il problema è iniziato ma, il comando seguente ha funzionato per me.

Eseguire il comando seguente in terminal / cmd

adb uninstall <package_name>

nome_pacchetto qualcosa come com.example.applicationname Quindi, provare a reinstallare l'applicazione. Dovrebbe funzionare.


1
Questo ha funzionato per me da quando avevo precedentemente installato l'apk tramite adb, ma in qualche modo disinstallarlo tramite l'app manager del telefono ha lasciato alcune tracce dell'app.
Dekaru,

9

per me, su Android 6 quando ho disinstallato l'app, in realtà è stata disabilitata invece di essere rimossa dal dispositivo.

Impostazioni> App> fai clic sull'app e disinstalla

questo ha risolto il problema per me


Funziona, ma alcuni altri punti. Se lo elimini tramite adb non garantisce che il problema sia risolto, tuttavia se non vedi questo pacchetto tramite adb pm. Devi farlo con le mani, trovarlo in Impostazioni-> App e scegliere Elimina per tutti gli utenti. Dopo di che puoi installarlo di nuovo
Silwester

9

Sotto il comando ha funzionato per me. A volte anche la disinstallazione parziale dell'app causa questo.

Eseguire il comando seguente in terminal / cmd

adb uninstall <package_name>

Quindi, prova a reinstallare l'applicazione. Dovrebbe funzionare.


7

Tieni presente che se sul dispositivo sono impostati più profili, la tua app potrebbe già esistere in uno degli altri profili.

La disinstallazione dell'app da tutti i profili ha risolto il problema per me.


6

Per me è stato un problema molto specifico, ho un Lg g5 su cui testare la mia applicazione e per ripristinare i dati delle mie app l'ho disinstallato sul telefono, ma il telefono ha una funzione "carina" per non disinstallare le app immediatamente in modo da poterli reinstallare entro un giorno. Quindi l'app è stata installata ma non utilizzabile ( disabilitata ) dopo aver rimosso completamente l'app dal telefono ha funzionato.


Ha funzionato per me. LG G6 ha la stessa "caratteristica" - non ho trovato il modo di disabilitarlo.
Cililing

6

Nel mio caso, era perché l'app che stavo cercando di avviare era installata per un altro utente sul dispositivo. Vai su Impostazioni -> App (Tutte le app) e seleziona l'app. Fai clic sul menu di overflow e seleziona "Disinstalla per tutti gli utenti". Questo dovrebbe risolvere il problema.


Anche questo è successo e ho dovuto andare su Impostazioni> App e notifiche> Informazioni app. Ho dovuto "Disinstallare per tutti gli utenti" e reinstallare.
luckylukein,

Mi sono imbattuto nello stesso problema e probabilmente la risposta dovrebbe essere aggiornata anche con questa soluzione
Panduka DeSilva,

Questo errore si è verificato quando ho configurato più tipi di build nel mio progetto.
Rahul Rastogi,

6

Uso Android Studio 3.2 Beta 5, di fronte allo stesso problema

Vai a

File -> Invalidate Caches / Restart...

Risolto il problema per me


6

Quando ho questo problema, provo sempre questa soluzione e funziona.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Ma ho trovato un'eccezione questa volta. Questa soluzione non funziona per me. Poi scopro che il problema è l'emulatore in contanti. Lo faccio Wipe datae Cold boot nowil problema è risolto.

inserisci qui la descrizione dell'immagine


5

Nel caso in cui qualcuno incontri il mio problema e non abbia fortuna con le altre soluzioni ... Stavo cercando di avviare un'attività tramite adb per FireTV durante il debug dell'integrazione di Amazon Launcher. Tuttavia, il mio progetto aveva 60 diverse varianti di build (multipiattaforma, progetto multi-app) e ApplicationId non corrispondeva a nessun percorso di classe poiché il pacchetto di runtime (e percorsi di classe) erano diversi da applicationId.

Stavo cercando di correre adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Ovviamente avevo provato molte combinazioni con com.runtimepath.example da quando avevo l'ulteriore sfida di un'applicazione diversa nel mio build.gradle e un altro in fase di esecuzione)

Ciò che alla fine ha aiutato è stato questo post https://stackoverflow.com/a/36255727/5970652

Che ha rivelato un formato diverso! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Pertanto, se si dispone di un percorso di classe runtime diverso, provare a specificare con l'applicazione application.gradle prima della barra e del percorso di classe runtime in seguito.

È inoltre possibile ottenere questi valori da BuildConfig.APPLICATION_IDe this.getLocalClassName()rispettivamente se si desidera registrarli in logcat.


1
Questo era esattamente il mio problema! Sono stato frustrato per un po ', ma una volta ho messo il nome del pacchetto dell'app prima della barra e il nome del pacchetto / classe completo dopo la barra ha funzionato.
Chad Schultz,

4

Anche io ho avuto lo stesso problema, ma nessuna delle soluzioni di cui sopra ha funzionato per me. Il problema era che avevo bloccato la particolare app che stavo cercando di eseguire tramite Titanium Backup a causa della quale avevo ricevuto l'errore sopra. Ho provato sia in Eclipse che in Android Studio.

Dopo la realizzazione ho semplicemente disinstallato l'app e quindi l'ho eseguita di nuovo.

Problema risolto :-)


4

Vorrei condividere il trucco che mi ha aiutato nel mio caso. Ho disinstallato l'applicazione dal dispositivo e nulla delle operazioni di riavvio pulito / ricostruito / Android Studio non ha aiutato.

Poiché Android Studio ritiene che l'applicazione sia ancora installata sul dispositivo e non la distribuisca, è possibile forzare l'installazione utilizzando ADB:

adb install -r <your_application_from.apk>

dove -rsignifica reinstallare l'app, conservandone i dati.


Questa è l'unica cosa che ha funzionato per me grazie!
Hugo,

4

Ho un Samsung Galaxy. La ricerca nelle impostazioni sopra non ha funzionato perché non è stata visualizzata nelle impostazioni delle mie app.

Ho trovato l'applicazione sul mio telefono digitando il nome dell'app nel campo di ricerca. Mi sono reso conto che era nel profilo "Lavoro" (usando Mobile @ Work) e l'ho rimosso. Puoi trovare le impostazioni per il profilo andando su Impostazioni-> Profilo di lavoro-> App

Spero che questo aiuti qualcuno che potrebbe non trovarlo allo stesso modo in cui molte delle altre risposte affermano che potrebbe essere trovato nelle impostazioni.


1
OMG grazie amico, mi hai salvato la giornata. Stesso problema con fckn samsung
Peter

4

Di fronte a questo problema in Android Studio 3.5.1 Mi ci è voluto un giorno per risolvere questo problema, ho provato di tutto, inclusa la pulizia della cache, il riavvio e anche la ridenominazione del nome del pacchetto. Quindi, se qualcuno dei precedenti non ha funzionato, prova questo.

Vai a gradle> Attività> Installa> UninstallAll

Ecco il link: Tipo di errore 3: la classe di attività {...} non esiste


4

Alcune volte l'installazione dell'applicazione sull'utente Guest sul tuo telefonino, quindi prova a cambiare Guest e disinstallare l'applicazione.

Inoltre, prova a eseguire il comando seguente per disinstallare il pacchetto di disinstallazione dell'applicazione adb "Nome pacchetto"


3

Ho anche affrontato lo stesso problema da qualche parte in passato. Tali problemi si verificano in realtà quando eseguiamo un refactoring come: rinominare, spostare file all'interno del progetto, ecc. Rinominare e spostare i file richiede modifiche nel file gradle, quindi ogni volta che rinominate o spostate un file pulite semplicemente il progetto:

Build -> Clean Project

La pulizia del progetto rimuove semplicemente i file .class e ricompila il progetto. Fondamentalmente, forza una ricostruzione del progetto.

A volte tali tipi di errori non sono stati eliminati durante la pulizia del progetto, quindi provare a disinstallare l'app dal dispositivo (sia esso un emulatore o fisico) ed eseguire nuovamente l'app. Spero che questo ti aiuti, mi aiuta il 50% delle volte.

Nota: - Ogni volta che si verifica un errore, non andare su google, pulire il progetto se non funziona, fare ciò che si desidera google.


3

Ho avuto lo stesso problema e ho risolto il refactoring del mio lanciatore di attività, basta cambiare il nome della classe e funziona.


3

Devo affrontare il problema simile, segui i passaggi seguenti.
ti aiuterà:

1- Pulisci il tuo progetto
2- Elimina la tua directory di compilazione
3- Riavvia Android Studio
4- Ricostruisci il progetto
5- verrà eseguito correttamente.

Grazie


3

Ho LG Stylus e nel mio telefono di prova l'applicazione non viene rimossa in modo permanente. In Impostazioni -> Applicazione ho trovato l'app di debug (che provo a installare ed eseguire il debug da AS) con la disattivazione dell'annotazione. Quando rimuovo l'app dal mio telefono, l'errore scompare.


Questa non mi sembra una risposta.
mpaskov,

3

Nel mio caso c'era il prossimo motivo:

Ho 2 utenti: me e Guest. e l'app è stata installata su entrambi, ma all'inizio è stata eliminata.

quando sono passato alla schermata Ospite ed elimina l'app da lì, l'app installata è ok.

spero che questo possa aiutare qualcuno :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.