"Attività predefinita non trovata" sull'aggiornamento di Android Studio


463

Ho aggiornato IntelliJ Idea da 12.0.4 a 12.10.

Ora tutti i moduli nel mio progetto Android danno l'errore:

Errore: attività predefinita non trovata

Sono tornato alla 12.0.4 e tutto funziona di nuovo.

Qualche idea? Penso che potrebbe essere un problema con un plugin mancante. Poiché il plug-in non è installato, non è in grado di trovare l'attività predefinita. Un'altra cosa avrebbe potuto essere una configurazione locale, ma ne dubito. Ho eliminato la cartella di configurazione per verificare e che non ha cambiato nulla.


3
hai visto il manifest? forse il passaggio da una versione all'altra l'ha cancellato o qualcosa del genere? developer.android.com/guide/components/fundamentals.html
MaxOvrdrv

No ... ma ho funzionato con 12.0.4 ma reimportando il progetto da zero.
Saad Farooq,

2
Manifest è la chiave, probabilmente un errore di nome o omissione o un problema di spazio dei nomi
slezica

Un problema manifest in tutti e sette i moduli del progetto che 12.0.4 funziona correttamente ma 12.10 no ??
Saad Farooq,

No, ma un cambiamento in uno spazio dei nomi o qualcosa del layout del progetto, ad esempio, potrebbe non essere stato sincronizzato con manifest
slezica

Risposte:


889

Se viene visualizzato l'errore dopo l'aggiornamento delle versioni di IntelliJ IDEA o Android Studio o dopo aver generato un nuovo APK, potrebbe essere necessario aggiornare la cache dell'IDE.

File -> Invalidate Caches / Restart...

2
Puoi anche provare a presentare un bug qui: youtrack.jetbrains.com/issues/IDEA Trovo che siano molto bravi a dare seguito ai bug che ho segnalato .
Sky Kelsey

Penso che fosse così ... Continuerò a indagare ... Non ho avuto il tempo di riaprire la directory come nuovo progetto in ciascuna delle piattaforme.
Saad Farooq,

Sto avendo lo stesso problema. Nel mio file manifest, viene visualizzato anche un errore "Impossibile risolvere il simbolo 'MainActivity'". Ho importato il progetto da Eclipse.
Roberto,

28
Questo ha funzionato per me in Android Studio, ma dopo il riavvio ho dovuto anche fare Strumenti -> Android -> Sincronizza progetto con file Gradle.
vaughandroid,

3
Dai
Ninja

304

Non posso commentare perché l'aggiornamento di IntelliJ potrebbe causare questo problema perché non lo uso.

Tuttavia, quell'errore: "Attività predefinita non trovata" sembra dirti che non hai un'attività dichiarata in AndroidManifest.xml contrassegnata come attività principale, da avviare all'avvio dell'applicazione.

Dovresti avere almeno un'attività che assomigli a questa:

<activity
        android:name="com.your.package.name.YourActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
</activity>

Se non hai almeno un'attività con un filtro intento del genere, molto probabilmente visualizzerai il messaggio di errore che hai incluso qui.

È necessario aggiungere quel filtro di intenti all'attività che si desidera aprire all'avvio dell'applicazione e questo dovrebbe risolvere il problema.


formica lo costruisce bene, così come IntelliJ 12.0.4
Saad Farooq,

Ho avviato la mia app in Eclipse, sì, ho un'attività predefinita. Ho importato la mia app su Android Studio andava bene fino a quando un giorno ho aggiunto il gestore delle notifiche e roba del genere, cioè quando ho riscontrato questo errore. Ho fatto File-> Cache invalida-> Riavvia e questo l'ha risolto. Ma l'errore non è stato causato dalla mancanza di attività predefinita come hai affermato.
The_Martian

Ha funzionato anche per me! MA NOTA: per favore scrivi "android.intent.xxx" in lettere minuscole - la mia colpa è stata che il completamento di Android Studio ha suggerito lettere maiuscole (mi ci è voluta un'ora) :-(
Philipp P

22
Per coloro che sono relativamente nuovi su Android e hai appena rovinato il tuo progetto Android Studio, questa è la risposta che stai cercando. La risposta accettata è quando un aggiornamento ha rovinato tutto per te.
Tom Kidd,

3
Ho impostato questo e il mio progetto è già stato eseguito molte volte e si sbaglia improvvisamente. Non so dove sia sbagliato. Forse, è potenzialmente un bug di AS.
Licat Julius,

81

L'app ha attività di avvio predefinita?

forse questo potrebbe essere il tuo errore

inserisci qui la descrizione dell'immagine

Passaggio 1 : selezionare Modifica configurazioni

inserisci qui la descrizione dell'immagine

Passaggio 2 : osservare questo avviso: attività predefinita non trovata inserisci qui la descrizione dell'immagine

Passaggio 3 : selezionare un'attività predefinita inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Passaggio 3 : salva le modifiche e termina

inserisci qui la descrizione dell'immagine

In bocca al lupo

inserisci qui la descrizione dell'immagine


Buona risposta! Questo è utile se non ci sono attività nell'app. (solo servizio). è necessario modificare "attività" per "non avviare l'attività"
Udi Reshef,

Questa è l'unica risposta che ha funzionato per le app senza attività. Grazie.
Sephiron,

Questo ha funzionato per me! In realtà avevo un'attività predefinita nel manifest, ma per qualche ragione Android Studio non l'ha trovata.
Ocramot,

2
Ho seguito i passaggi di cui sopra ma ora dice "L'attività 'MainActivity' non è dichiarata in AndroidManifest.xml" sebbene MainActivity sia presente
Far

Questa risposta è stata facile da seguire. Anche il commento di @Udi Reshef ringrazia
Bishwas Mishra il

66

Il modo corretto per farlo è aggiungere quanto segue al file manifest:

<activity
    android:name="FULL_NAME_OF_YOUR_ACTIVITY"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Questo dovrebbe essere inserito tra:

<application> </application>

Non è necessario invalidare la cache.


Ha funzionato anche per me! MA NOTA: per favore scrivi "android.intent.xxx" in lettere minuscole - la mia colpa è stata che il completamento di Android Studio ha suggerito lettere maiuscole (mi ci è voluta un'ora) :-(
Philipp P

Un buon punto: "Questo dovrebbe essere inserito tra: <application> </application>". Questo era il mio problema. Molte grazie.
Dennis Mathew,

Fai molta attenzione quando esegui il refactoring dei tuoi codici. nel mio caso, ho erroneamente refactored 'categoria' come 'telefono', quindi android.intent.category è stata cambiata in android.intent.phone.
Kenny Dabiri,

Ho usato la procedura guidata per la creazione di progetti Android Studio e dovevo ancora farlo manualmente. Sbaglio nel pensare che si tratti di un bug?
pdoherty926,


44

Prova a fare clic con il pulsante destro del mouse sul progetto e scegli Apri le impostazioni del modulo . Quindi vai alla scheda Sorgenti nel tuo modulo, trova la cartella src , fai clic destro su di essa e contrassegnala come Sorgenti (colore blu).

EDIT: nelle versioni successive di Android Studio non è presente la scheda Origini , ma è invece possibile modificare il file build.gradle : https://stackoverflow.com/a/22028681/1101730


Questo mi ha aiutato, mi sono reso conto che intellij ha lasciato cadere molti file sorgente da src nella scheda Sorgenti. Ho spostato il mio pacchetto dal progetto e ho ripreso il lavoro. Ciò ha risolto il mio problema
Jesse Black,

2
Ho fatto lo stesso tipo di cose, ma ho fatto clic con il pulsante destro del mouse sulla cartella src e sono andato su "Segna directory come ..." e poi su "Sorgenti radice". - Android Studio 0.8.6
elliptic1

1
Funziona come un incantesimo, ha rimosso la radice corrente e ha aggiunto di nuovo la cartella principale di src e gen
Udi Oshi,

1
un modo rapido per accedere alle impostazioni del modulo è fare clic nel navigatore del progetto e premere F4
whyoz

3
questo è deprecato poiché non esiste più la scheda Sorgenti in Open Module Settings .
Buddy,

23

In Android Studio in Esegui / Debug Configurazione -> Applicazione Android -> Generale -> Attività -> seleziona l'opzione "Non avviare attività".


3
Questa è la soluzione quando il progetto è un servizio o non ha attività predefinite per altri motivi.
Aharon Manne,

2
In Android Studio 2.2.3; Configurazione Esegui / Debug -> App Android -> myApp -> Generale -> Opzioni di avvio -> Avvia: Nothing
liteflier

21

Niente sopra mi ha aiutato. Dopo qualche tempo ho scoperto che IDEA ha cambiato i nomi delle azioni in maiuscolo. Piace:

<intent-filter>
  <action android:name="ANDROID.INTENT.ACTION.MAIN"/>
  <category android:name="ANDROID.INTENT.CATEGORY.LAUNCHER"/>
</intent-filter>

Dopo essere tornato alla normalità, IDEA riconosce l'attività predefinita:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

19

Innanzitutto assicurati di aver incluso l'attività predefinita in manifest.

Esempio:

<activity android:name=".DefaultActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Se hai provato tutto e nulla sembra funzionare, allora

  • Elimina la cache dal tuo% Home% \. Gradle \ cache e sincronizza nuovamente il progetto.

O controlla questa risposta

https://stackoverflow.com/a/53476487/5507705


1
Android Studio 3.2.1: File -> Sincronizza progetto con file Gradle ::: Ho dovuto farlo dopo aver invalidato la cache e aver riavviato prima che il problema fosse scomparso.
Kreebog,

1
Questo ha funzionato per me. Ciò che credo abbia causato questo è stato il trasferimento della mia attività principale in una directory diversa, a valle della radice.
Shn_Android_Dev

11

Questo metodo funziona per me Fai clic sull'icona dell'app e quindi scegli modifica configurazioni. Nella modifica-configurazione scegliere l'attività specificata anziché l'attività predefinita. Quindi fornire il percorso dell'attività sottostante.

Fai clic sull'app e modifica la configurazione

Scegli l'attività specificata e la directory

Alla fine sincronizzare con i file gradle.


11

Nel mio caso File -> Invalidate Caches / Restart... non ha aiutato

Tutto andava bene per il mio progetto e ovviamente avevo il prossimo filtro di intenti per la mia attività

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Ciò che mi ha veramente aiutato è l'eliminazione delle cartelle della cache Android / Gradle (possono crescere fino a 10-30 GB)

Vai a C:\Users\YOUR_USER_WINDOWS_NAMEed elimina le cartelle successive

  • .android
  • .AndroidStudio3.2
  • .gradle

(puoi salvare alcune configurazioni Android da .AndroidStudio3.2 prima di eliminarlo se lo si desidera)

È possibile creare un file bat CLEAR_CACHE.cmdcome questo per eliminare le cartelle senza Cestino

rmdir /S /Q .android
rmdir /S /Q .AndroidStudio3.2
rmdir /S /Q .gradle

funzionerebbe molto più velocemente e non dovrai eliminarlo anche dal Cestino

ps messo CLEAR_CACHE.cmdinC:\Users\YOUR_USER_WINDOWS_NAME

è anche una buona idea eliminare la cartella Android Studio e scaricarla di nuovo


8

Ho cambiato il mio filtro intento in

<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

Aggiungi anche l'opzione DEFAULT. Stavo usando la libreria Process Phoenix e mi ha spinto a definire un intento predefinito. Questa aggiunta ha risolto il mio problema.


7

Ho ricevuto questo errore.

E ho scoperto che nel file manifest nell'attività di avvio non ho inserito actione categorynel filtro intenti.

Quello sbagliato:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />

</activity>

Il giusto:

<activity
android:name=".VideoAdStarter"
android:label="@string/app_name">

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>

</activity>

7

Esci da Android Studio.

Vai al percorso C:\Users\YOUR_WINDOW_USER_NAME\.AndroidStudio3.3\system

Rimuovere la cartella / cache e la cartella / tmp


6

@TouchBoarder ce l'aveva quasi. Anche se selezionando "Non avviare l'attività" non si avvia nulla.

In Android Studio in Esegui / Debug Configurazione -> Applicazione Android -> Generale -> Attività -> seleziona l'opzione "Avvia:"

Scegli la tua attività. Questo non risolve esattamente il comportamento previsto ma piuttosto lo sovrascrive correttamente.

Modifica le configurazioni di esecuzione / debug e specifica l'attività di avvio


4

Nel caso in cui l'applicazione non disponga di un'attività (ad esempio solo un servizio), modificare l'opzione "Avvia" della configurazione di esecuzione / debug su Nothing.


4

Ho trovato questo nel mio codice:

<context android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</context>

Se guardi con molta attenzione, dovrebbe essere <activity android:name=".MainActivity"> invece.

Apparentemente, ho effettuato il refactoring di qualche "attività" da qualche parte, e ha cambiato anche i nomi in AndroidManifest.


nel mio caso la ridenominazione di FilterClasses ha portato ai tag <intent-filterList> :)
Emanuel,

2
Fai molta attenzione quando esegui il refactoring dei tuoi codici. nel mio caso, ho erroneamente refactored 'categoria' come 'telefono', quindi android.intent.category è stata cambiata in android.intent.phone.
Kenny Dabiri,


4

Tutte le risposte sopra non mi hanno aiutato. Prova a rimuoverlo

<?xml version="1.0" encoding="utf-8"?>

nel tuo AndroidManifest. Poi:

File > Sync Project with Gradle Files

Ho capito che Syncing Project With Gradle Filesfunzionava bene come vino. A proposito, il mio errore si è verificato dal nulla.
Homerun,

4

Nel mio caso ho refactored una variabile membro che è stata chiamata "attività", l'ho rinominata in "contesto" ... Ho scoperto che il refactor è stato creato per i tag attività in manifest, e invece ho trovato i tag di contesto ... questo è davvero stupido da Android Studio!


2
questo è un bug di Android Studio, hai ragione @tere bentikh
mayank_droid

3

Ho lo stesso problema in Android Studio 3.3 Canarie 3. Il progetto dalla versione stabile di Android Studio 3.0 funziona inizialmente correttamente, che dopo alcune pulizie / ricostruzioni inizia a mostrare nessun errore di attività predefinita. Ho provato a reinstallare questa versione alpha di Android Studio: errore di nuovo. Ma poi è iniziato nel vecchio stabile Android, e usando apk install, e questo apk funziona correttamente.

Inoltre il mio progetto è stato creato con App istantanea (base, funzionalità, istantanea, sottodirectory app). Penso che questo Android Studio abbia alcuni problemi con i file Manifest.xml separati in queste directory multiple.

Quindi ho cambiato le impostazioni in questo: inserisci qui la descrizione dell'immagine


3

Da Android Studio 3.5 or 3.6ho iniziato a Default Activity not founddiventare stanco e mi sono stancato di Invalidating Caches & Restartricostruire progetti ecc.

Si è scoperto che il modo in cui gestisco i multi-moduli e i manifest era errato. Avevo il Manifest di attività predefinito solo nel modulo libreria, ma avrebbe dovuto essere presente in entrambi i moduli dell'app.

assumendo librarymodule appmodule1 appmodule2

  1. Rimuovi HomeActivityda librarymoduleManifest di sorta.
  2. Inserisci:
class AppModuleActivity1 : HomeActivity() to appmodule1
class AppModuleActivity2 : HomeActivity() to appmodule2
  1. A appmodule1Manifest all'interno del applicationtag, ho aggiunto:
        <activity
            android:name="com.app.name.AppModuleActivity1">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  1. Lo stesso vale appmodule2ma cambia 2 per 1 nella denominazione.

2
  1. Build -> Rebuild Project
  2. File -> Invalidate Caches.. -> Invalidate and restart

Per me funziona. Ricostruire il progetto per assicurarsi che non vi siano errori nel progetto. Quindi possiamo invalidare la cache.


2

Errore: attività predefinita non trovata

Ho risolto in questo modo
Esegui >> Modifica configurazione >> Applicazione Android >> Immettere il percorso della classe di attività predefinita nella casella di modifica "Avvia".


2

ho appena riscontrato questo errore su Android Studio 2.1.2. risolto aggiungendo MAIN / lanciatore intent-filtro per l'attività di difetto in sapore manifesta, sebbene filtro già sia in attività di difetto in manifesta predefinito. Era anche in manifest unito, ma studio non è riuscito a trovarlo fino a quando non ho duplicato il filtro in entrambi i manifest.


2

la mia esperienza: assicurati che tutto il tuo file java sia stato identificato, se IDEA non identifica il tuo file java, quindi non è in grado di capire cosa significa "Attività"

in bocca al lupo :)

inserisci qui la descrizione dell'immagine


2

Bene ho anche questo errore,

Errore: attività predefinita non trovata

bene nel mio caso era per il modulo di usura .. Non ho bisogno di un'attività lì, quindi quello che faccio è semplicemente

  1. vai a modificare la configurazione -> wear-> Opzioni di avvio-> Launch-> Nothing.
  2. Applica modifiche. Fai clic su OK.
  3. Rimuovi il codice esistente per l'attività predefinita dal tuo file manifest.

Nota: non dimenticare di pulire il progetto e sincronizzare i file di livello.


2

Modifica androidmanifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.java2">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivityName">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

potresti espandere questa risposta? Solo un blocco di codice non è molto utile
Azsgy

2

A volte questo errore a causa del comportamento scorretto di Android Studio a causa della cache interna e del sistema di creazione del progetto. Anche noi abbiamo impostato tutto perfetto per l'attività predefinita. Per tale problema, ho trovato una soluzione e funziona per me.

Passaggio 1. Android Studio ---> File -> Cache non valida e Android Studio chiuso.

Passo 2. Vai al percorso C: \ Users \ USER.AndroidStudio3.2 \ system

Passaggio 3. Modifica nome con estensione .back della cartella sottostante Esempio: compilatore dovrebbe essere compiler.back

  • compilatore
  • compilatore server
  • conversione
  • external-build_system
  • struttura
  • Gradle
  • resource_folder_cache

Passaggio 4: avviare Android Studio e aprire il progetto.

Spero che funzionerà per te.


1
Questa è stata l'unica risposta che ha funzionato per me, ma oltre al processo descritto qui, è necessario rimuovere il contenuto della cartella "sistema / cache", altrimenti funziona solo la prima volta dopo aver completato il processo e riavviare Android Studio, quindi è tornato per accadere lo stesso, attività predefinita non trovata.
Gerrard,

L'unica opzione che ha funzionato per me. È successo dopo un ripristino del computer, che probabilmente ha danneggiato alcuni file come hai detto. L'altra opzione era quella di reinstallare Android Studio, ma per fortuna è sufficiente cancellare le cartelle specificate.
RJFares

2

Sincronizza Project With Gradle Files funziona a volte, per risolvere questo problema generale dovresti

  1. Esci da Android Studio
  2. Vai su UTENTE -> AndroidStudio -> sistema -> cache
  3. Elimina quella cartella
  4. Avvia Android Studio.

Indicizzerà nuovamente i tuoi file e dovrebbe funzionare

Grazie a kirtan403 da una domanda simile.

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.