Erreur de type 3 Erreur: la classe d'activités {} n'existe pas

397

J'ai un projet Android IntelliJ, que j'ai réussi à importer dans Android Studio 0.4.0. Cela fonctionne parfaitement si je ne change rien au manifeste. Cependant, lorsque je souhaite modifier l'activité du lanceur et l'exécuter, il échoue avec cette erreur:

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.

Lorsque je clique sur Synchroniser le projet avec des fichiers Gradle , il génère:

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

Exécutez les paramètres: entrez la description de l'image ici

Jacob
la source
Où se trouve votre fichier AndroidManifest.xml d' origine ?
twlkyao
Au même endroit, sous le dossier principal du projet.
Jacob
Je veux dire, est-ce que cette image dans le post est votre original AndroidManifest.xmlou non.
twlkyao
7
J'ai trouvé un fil, l'espoir pourrait aider. stackoverflow.com/questions/19670607/…
twlkyao
4
Bien que non efficace dans le cas de l'OP, la synchronisation synchronisée a été résolue Error: Activity class {...} does not exist.pour moi.
dinosaure

Réponses:

613

J'ai rencontré un problème similaire après refactoring.
Voici ce que j'ai fait pour résoudre ce problème:

  1. Nettoyé le projet
  2. Supprimé le Buildrépertoire
  3. Android Studio redémarré
  4. Reconstruire le projet
  5. Courir
  6. Facultativement (allez dans le menu des fichiers sur Android, cliquez sur "Invalider les caches / redémarrer ...", désinstallez l'application sur votre téléphone et réessayez)

Et tout a bien fonctionné!
Je pense que la clé est de redémarrer votre IDE .

J'espère que cela vous aide, vous ou quelqu'un d'autre!

Edit 1:
Si les étapes ci-dessus ne fonctionnent pas pour vous, la suppression du cache Gradle semble être une solution, comme l'a souligné @Yasitha.

Modifier 2
Comme suggéré par quelques utilisateurs dans les commentaires ci-dessous, parfois le problème peut être résolu en supprimant et en réinstallant complètement l'application de votre appareil.
Tapez simplement le adb uninstall <package>terminal pour supprimer complètement l'application de l'appareil.

Modifier 3
Comme mentionné dans la réponse d'Abhishek , il faut également essayer de supprimer l'application de votre appareil au cas où plusieurs utilisateurs sont configurés sur votre appareil.
Allez simplement à Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

MISE À JOUR pour Android Studio 2.1 et versions ultérieures

Lorsque vous exécutez Android Studio 2.1 et versions ultérieures, vous pouvez également rencontrer ce problème lorsque l'option d'exécution instantanée est activée dans vos préférences (est activée par défaut).

Pour désactiver cette option, accédez à l' Preferencesoption dans le Android Studiomenu supérieur et recherchez Instant Runafin de pouvoir décocher la première case à cocher sur cet écran.

Désactiver l'exécution instantanée dans Android Studio 2.1+

Quoi qu'il en soit, cela m'a arrangé. Initialement souligné par l'utilisateur @yusufonder. J'ai découvert que c'était le problème car l'installation de gradle fonctionnait toujours.

S1LENT WARRIOR
la source
2
Cela fonctionne bien même sans supprimer le répertoire de construction.
Shivam Bhalla
12
J'ai dû supprimer le cache gradle comme décrit ici stackoverflow.com/a/25602161/630833
jayeffkay
4
Bien que ce soit une entrée tardive, mais je suis confronté à ce problème uniquement après la mise à jour d'Android Studio vers 1.5 et la solution ci-dessus ne fonctionne pas dans mon cas.
zulkarnain shah
42
Essayez d'exécuter 'adb uninstall <package>' dans le terminal pour supprimer complètement l'application de l'appareil
Mikhail Sharin
3
Sur Android 7.0 lorsque vous désinstallez l'application sur l'appareil (en la faisant glisser vers l'étiquette "Désinstaller" sur l'écran principal de l'appareil), l'application est en fait simplement "désactivée". Vous devez aller dans Paramètres / Applications et supprimer manuellement l'application de là (utilisez également la commande ADB). J'y rebondis plusieurs fois, mais après quelques bouches, j'oublie cette fonctionnalité appelée Android 7.0.
Mike Keskinov
325

Peut être utile pour quelqu'un: -

Parfois, lors des tests sur un appareil, l'application ne se désinstalle pas correctement . Pour vérifier et corriger cela:

  1. Accédez aux paramètres .
  2. Accédez aux applications .
  3. Sélectionnez votre application. (ici, vous pouvez vérifier que votre application n'est pas désinstallée correctement) .
  4. Ouvrez le menu de débordement en haut à droite et sélectionnez Désinstaller pour tous les utilisateurs .
  5. Terminé. Essayez d'installer puis relancez votre application.
Nicks
la source
12
En utilisant Android O developer preview 3, je n'ai pas pu effectuer l'action Désinstaller pour tous les utilisateurs, car elle m'a dit que l'application n'existait pas dans la liste des applications. L'exécution a adb uninstall {packageName}résolu le problème.
alexbchr
1
Pour l'émulateur, la réponse d'Ankit n'a pas fonctionné. J'avais supprimé mon application du lanceur, mais elle est restée sur le système, ce qui a causé le problème. J'ai dû utiliser cette méthode pour la désinstaller complètement.
Damn Vegetables
2
homme thnx je faisais face à ce problème sur android oreo où l'application n'est pas complètement désinstallée
Salman500
3
C'était exactement mon problème, l'application n'a pas été installée pour cet utilisateur. Je viens de le désinstaller par la procédure mentionnée ci-dessus et il a commencé à fonctionner
Bugs Happen
2
mon application a été désactivée
iamsujan
82

Je ferais face à ce problème lors de la désinstallation de l'application via l'appareil (c'est-à-dire en faisant glisser l'application vers l'option "Désinstaller"). Mais voici la bonne façon de désinstaller:

Utilisez la ./gradlew uninstallAllcommande. Cela évitera l' Error: Activity class {HomeActivity} does not exist.erreur.

Mise à jour:

Si vous êtes paresseux , vous pouvez utiliser l'abréviation de cette tâche: ./gradlew uA.

Ou définissez des alias pour les tâches courantes de gradle dans votre .bash_profile, cela vous fera gagner du temps, taper, et vous n'aurez pas à vous souvenir de chaque commande ni à vous soucier des fautes de frappe. Je suggère de faire ça.

Sakiboy
la source
Aussi mauvais que cela soit, je pense toujours que c'était mieux. Gradle est une abomination de l'OMI.
JJF du
4
C'est la seule chose qui a fonctionné pour moi avec Android Studio 3.1 Canary 7.
NOTiFY
2
très bonne réponse. Certains appareils semblent avoir un problème de désinstallation. Pour moi, c'est Xiaomi Mi Mix 2 avec EU Build. Je suppose que c'est une erreur dans la version Build de l'appareil.
Opiatefuchs
1
Cela fonctionne pour moi. Après avoir exécuté ./gradlew uninstallAll
Shanison
1
Au début de 2020, c'était la seule solution qui fonctionnait pour moi.
PGMacDesign
73

Cela se produit lorsque vous effectuez les opérations suivantes

  • connectez votre appareil / émulateur
  • exécuter l'application à partir d'Android Studio (AS)
  • utiliser / tester l'application et la désinstaller de l'appareil alors qu'il est toujours connecté à votre ordinateur
  • essayez d'exécuter à nouveau l'application depuis AS

AS pense que vous avez toujours l'application sur votre appareil.

tl; dr - Pour résoudre ce problème, vous pouvez simplement déconnecter votre appareil après avoir désinstallé l'application et la reconnecter.

Ankit
la source
11
Bien que ne vous laissez pas dérouter si l'application n'apparaît pas dans le lanceur, vérifiez simplement les paramètres / applications -> "Tous" si l'application est répertoriée. Ce fut le cas avec ma demande, et après l'avoir retirée, tout a bien fonctionné à nouveau.
Daniel Gilbert
1
S'il n'apparaît pas dans le lanceur comme l'a dit @DanielGilbert, vous pouvez facilement le désinstaller avec "adb uninstall package.name". Cela a également fonctionné pour moi.
Mike
Cela a également fonctionné pour moi. J'exécutais un exemple de projet, qui a deux versions. J'ai installé la première version, puis l'ai désinstallée pour installer la deuxième version. J'ai perdu beaucoup de temps pour corriger l'erreur. Ce n'est pas la première fois que le développement Android a ce genre de problèmes étranges et insolubles ...
Damn Vegetables
Mon cas. Déconnectez et connectez l'appareil - cela a fonctionné pour moi! L'application n'était pas sur l'appareil, mais AS ne l'a pas installée en pensant que l'application est toujours dans mon appareil
Victoria Klimova
35

L'application est déjà installée pour un autre utilisateur. Veuillez essayer de désinstaller la même application pour tous les utilisateurs. Alors essaye.

Ou vous pouvez essayer après avoir exécuté la commande adb.

adb uninstall PACKAGE_NAME

où PACKAGE_NAME est le nom complet tel que com.example.myapp

Dipendra Sharma
la source
Cela marche! dans mon cas adb uninstall com.demooù le nom de mon application étaitdemo
Muhammad Ovi
com.demo sera le nom de votre package
Dipendra Sharma
3
La seule réponse qui a fonctionné! Android Studio 3.4.2, API Level 28
ykonda
La seule solution. Merci!
Juan Ignacio Barisich
assurez-vous que l'appareil est connecté via la commandeadb devices
G. Ciardini
33

J'ai eu le même problème, et c'est ainsi que je l'ai résolu.

Accédez à Gradle> Tâches> Installer> Désinstaller tout

entrez la description de l'image ici

Yassin Ajdi
la source
1
Cela fonctionne pour moi. Je vous remercie.
Malwinder Singh
Cela fonctionne aussi pour moi. Mais pourquoi le problème se produit et comment uninstallAllserait-il résolu? Merci.
LiuWenbin_NO.
A aussi fonctionné pour moi!
Le Fluffy T Rex
Cela devrait être la bonne réponse! Optimal et efficace
HatemTmi
27

J'ai eu la même erreur après avoir renommé / refactorisé. J'ai ajouté l' applicationIdattribut de propriété à mon fichier build.gradle et défini sa valeur dans le package d'application.

Dans build.gradle :

android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}
Blue5hift
la source
Veuillez expliquer comment ajouter applicationId à buidl.gradle!
realtebo
Vous pouvez également ajouter l'ID d'application aux paramètres du module de l'application comme alternative
Michael Kern
19

Essayez de changer le nom de l'activité dans votre AndroidManifest.xml fichier.

En ce moment, il dit:

<activity android:name="LandingActivity" >

Essayez soit d' ajouter un point au début du nom de l'activité:

<activity android:name=".LandingActivity" >

Ou en ajoutant le nom du package au début du nom de l'activité:

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

Il se peut également que votre nom de package ne comporte que deux composants séparés par des points (votre nom de package est "com.trackingeng"; un nom de package plus standard serait "com.trackingeng.app")

Josh
la source
2
@Siavash sauf que ce n'est pas correct ™
dcow
2
Comment ça @dcow? La réponse acceptée ici n'a pas fonctionné pour moi, mais celle-ci l'a fait.
Siavash
Laquelle? ajouter un point ou un nom à 3 niveaux?
realtebo
15

Suivez les étapes ci-dessous Accédez à Paramètres mobiles> Applications> Votre application> Plus> Appuyez sur Désinstaller l'application pour tous les utilisateurs.

Raison: parce que vous avez plusieurs utilisateurs sur votre téléphone et que vous n'avez désinstallé cette application que pour un seul.

PRENDRE PLAISIR:

Abhishek
la source
Je pense que la réponse choisie devrait également ajouter ceci. C'est la chose qui a fonctionné pour moi.
jasxir
13

Je pense qu'une autre raison pour laquelle ce problème se produit est qu'il n'est pas entièrement supprimé pour tous les utilisateurs de l'appareil.

Allez dans Paramètres -> Applications -> Vos applications -> Cliquez sur les 3 points en haut à droite -> Désinstaller pour tous les utilisateurs

Ça marche pour moi. Cela arrive en particulier lorsque vous modifiez les icônes de l'application ou que vous vous amusez avec le fichier AndroidManifest.xml.

Long Dao
la source
1
Je ne peux pas croire que ça a marché. J'avais 2 comptes sur mon appareil et il a été installé pour l'autre utilisateur.
StarWind0
Oui, c'est un peu ennuyeux mais cela se produit normalement lorsque l'application est en cours de développement, car vous voudrez peut-être changer les icônes de chargement, etc.
Long Dao
12

Pour moi, le problème était que je AndroidStudio pensais que l'application était toujours sur l'appareil.

Réparer:

  1. redémarrez le adbdémon ; dans un terminal ou une invite de commande, entrez:

    adb kill-server
    adb start-server
  2. essayez de lancer votre application.

  3. si cela ne fonctionne toujours pas, consultez cette réponse .

Assurez - vous que le platform-toolsdu SDK Android est ajouté à vos variables de chemin du système !

Eric
la source
11

Dans mon cas, j'ai désinstallé l'application du téléphone après que le problème a commencé, mais la commande ci-dessous a fonctionné pour moi.

Exécuter la commande ci-dessous dans le terminal / cmd

adb uninstall <package_name>

package_name quelque chose comme com.example.applicationname Ensuite, essayez de réinstaller l'application. Ça devrait marcher.

Bercove
la source
1
Cela a fonctionné pour moi depuis que j'avais précédemment installé l'apk via adb, mais en quelque sorte le désinstaller via le gestionnaire d'applications du téléphone a laissé des traces d'application.
dekaru
9

pour moi, sur Android 6, lorsque j'ai désinstallé l'application, elle est devenue désactivée au lieu d'être supprimée de l'appareil.

Paramètres> Applications> cliquez sur votre application et désinstallez

cela m'a arrangé

Zain Ullah Muhammad
la source
Cela fonctionne, mais quelques points supplémentaires. Si vous le supprimez via adb, cela ne garantit pas que le problème est résolu, événement si vous ne voyez pas ce paquet via adb pm. Vous devez le faire avec les mains, le trouver dans Paramètres-> Application et choisir Supprimer pour tous les utilisateurs. Après cela, vous pouvez l'installer à nouveau
Silwester
9

La commande ci-dessous a fonctionné pour moi. Parfois, la désinstallation partielle de l'application est également à l'origine de cela.

Exécuter la commande ci-dessous dans le terminal / cmd

adb uninstall <package_name>

Ensuite, essayez de réinstaller l'application. Ça devrait marcher.

Ronak Mehta
la source
7

Soyez averti que si plusieurs profils sont définis sur l'appareil, votre application peut déjà exister dans l'un des autres profils.

La désinstallation de l'application de tous les profils a résolu le problème pour moi.

Alex Styl
la source
6

Pour moi, c'était un problème très spécifique, j'ai un Lg g5 pour tester mon application et pour réinitialiser les données de mes applications, je l'ai désinstallé sur le téléphone, mais le téléphone a une fonctionnalité "sympa" pour ne pas désinstaller les applications immédiatement afin que vous puissiez les réinstaller en un jour. Donc, l'application a été installée mais pas utilisable ( désactivée ) après avoir complètement supprimé l'application du téléphone, cela a fonctionné.

Florian K
la source
A travaillé pour moi. LG G6 a la même "fonctionnalité" - je n'ai pas trouvé le moyen de le désactiver.
Cililing
6

Dans mon cas, c'était parce que l'application que j'essayais de lancer était installée pour un autre utilisateur sur l'appareil. Accédez à Paramètres -> Applications (Toutes les applications) et sélectionnez l'application. Cliquez sur le menu de débordement et sélectionnez "Désinstaller pour tous les utilisateurs". Cela devrait résoudre le problème.

ben_joseph
la source
Cela est également arrivé à e et j'ai dû aller dans Paramètres> Applications et notifications> Informations sur l'application. J'ai dû "désinstaller pour tous les utilisateurs" et réinstaller.
luckylukein
Je suis tombé sur le même problème et probablement la réponse devrait également être mise à jour avec cette solution
Panduka DeSilva
Cette erreur s'est produite lorsque j'ai configuré plusieurs types de build dans mon projet.
Rahul Rastogi
6

J'utilise Android Studio 3.2 Beta 5, confronté au même problème

Aller à

File -> Invalidate Caches / Restart...

Problème résolu pour moi

MakBeard
la source
6

Quand j'ai ce problème, j'essaie toujours cette solution et ça marche.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Mais j'ai trouvé une exception cette fois. Cette solution ne fonctionne pas pour moi. Ensuite, je découvre que le problème est l'argent de l'émulateur. Je fais juste Wipe dataet Cold boot nowet le problème est résolu.

entrez la description de l'image ici

Md Imran Choudhury
la source
5

Juste au cas où quelqu'un rencontrerait mon problème et n'aurait pas de chance avec les autres solutions ... J'essayais de démarrer une activité via adb pour FireTV tout en déboguant l'intégration du lanceur Amazon. Cependant, mon projet avait 60 variantes de construction différentes (multi-plateforme, projet multi-application) et l'ApplicationId ne correspondait à aucun chemin de classe car le package d'exécution (et les chemins de classe) étaient différents de l'applicationId.

J'essayais de courir adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Bien sûr, j'avais essayé de nombreuses combinaisons avec com.runtimepath.example depuis que j'avais le défi supplémentaire d'une applicationId différente dans mon build.gradle et une autre au moment de l'exécution)

Ce qui a finalement aidé, c'est ce message https://stackoverflow.com/a/36255727/5970652

Ce qui a révélé un format différent! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Donc, si vous avez un chemin de classe d'exécution différent, essayez de spécifier avec le build.gradle applicationId avant la barre oblique et le chemin de classe d'exécution après.

Vous pouvez également obtenir ces valeurs à partir de BuildConfig.APPLICATION_IDetthis.getLocalClassName() respectivement si vous souhaitez les enregistrer dans logcat.

Blaze Gawlik
la source
1
C'était exactement mon problème! J'ai été frustré pendant un certain temps, mais une fois que j'ai mis le nom du package d'application avant la barre oblique, et le nom de package / classe complet après la barre oblique, cela a fonctionné.
Chad Schultz
4

Même moi, j'ai eu le même problème, mais aucune des solutions ci-dessus n'a fonctionné pour moi. Le problème était que j'avais gelé l'application particulière que j'essayais d'exécuter via Titanium Backup à cause de laquelle j'ai eu l'erreur ci-dessus. J'ai essayé à la fois dans Eclipse et Android Studio.

Après la réalisation, j'ai simplement désinstallé l'application, puis l'ai exécutée à nouveau.

Problème résolu :-)

Build3r
la source
4

Je voudrais partager l'astuce qui a aidé dans mon cas. J'ai désinstallé l'application de l'appareil et rien des opérations de redémarrage de nettoyage / reconstruction / Android Studio n'a aidé.

Étant donné qu'Android Studio pense que l'application est toujours installée sur l'appareil et ne la déploie pas, vous pouvez forcer l'installation à l'aide de l'ADB:

adb install -r <your_application_from.apk>

-rsignifie réinstaller l'application en conservant ses données.

poivré
la source
C'est la seule chose qui a fonctionné pour moi merci!
Hugo
4

J'ai un Samsung Galaxy. La recherche dans les paramètres ci-dessus n'a pas fonctionné, car elle n'apparaissait pas du tout dans les paramètres de mes applications.

J'ai trouvé l'application sur mon téléphone en tapant le nom de l'application dans le champ de recherche. J'ai réalisé qu'il se trouvait dans le profil "Work" (en utilisant Mobile @ Work) et je l'ai supprimé. Vous pouvez trouver les paramètres du profil en accédant à Paramètres-> Profil professionnel-> Applications

J'espère que cela aide quelqu'un qui peut ne pas le trouver de la même manière que la plupart des autres réponses ont déclaré qu'il pouvait être trouvé dans les paramètres.

osoclever
la source
1
OMG merci mec, tu m'as sauvé la journée. Même problème avec fckn samsung
Peter
4

Face à ce problème dans Android Studio 3.5.1 Il m'a fallu un jour pour résoudre ce problème, J'ai tout essayé, y compris le nettoyage du cache, le redémarrage et le changement de nom du package. Donc, si l'un des éléments ci-dessus n'a pas fonctionné, essayez ceci.

Allez simplement à gradle> Tâches> Installer> DésinstallerTous

Voici le lien: Type d'erreur 3: la classe d'activités {...} n'existe pas

kontashi35
la source
4

Parfois, l'application s'installe sur l'utilisateur invité sur votre mobile, essayez donc de changer d'invité et de désinstaller l'application.

De plus, essayez d'exécuter la commande suivante pour désinstaller l'application adb uninstall package "Your package Name"

Narendrakumar
la source
3

J'ai également fait face au même problème quelque part dans le passé. Ces problèmes se produisent en réalité quand nous faisons un peu comme refactoring - renommer, déplacer des fichiers dans le projet , etc. Renommage et déplacement de fichiers nécessitent des modifications dans le fichier gradle donc chaque fois que vous renommez ou déplacez certains fichiers simplement nettoyer le projet:

Build -> Clean Project

Le nettoyage du projet supprime simplement les fichiers .class et recompile le projet. Fondamentalement, cela force la reconstruction d'un projet.

Parfois, ces types d'erreurs n'ont pas été nettoyés lors du nettoyage du projet, puis essayez de désinstaller l'application de l'appareil (que ce soit un émulateur ou un physique) et exécutez à nouveau l'application. J'espère que cela vous aidera, cela m'aidera 50% de fois.

Remarque: - Chaque fois que vous avez une erreur, n'allez pas sur Google, nettoyez le projet si cela ne fonctionne pas, faites ce que vous voulez sur Google.

lRadha
la source
3

J'ai eu le même problème et je l'ai résolu en refactorisant mon lanceur d'activité, changez simplement le nom de la classe et cela fonctionne.

cheko506
la source
3

Je fais face au problème similaire, veuillez suivre les étapes ci-dessous.
cela vous aidera:

1- Nettoyez votre projet
2- Supprimez votre répertoire de construction
3- Redémarrez votre Android Studio
4- Reconstruisez le projet
5- il se déroulera avec succès.

Merci

Anurag Mishra
la source
3

J'ai LG Stylus et dans mon téléphone de test, l'application n'est pas supprimée définitivement. Dans Paramètres -> Application, j'ai trouvé l'application de débogage (que j'essaie d'installer et de déboguer par AS) avec désactivation de l'annotation. Lorsque je supprime l'application de mon téléphone, l'erreur disparaît.

Robert Grabiński
la source
Cela ne me semble pas être une réponse.
mpaskov
3

Dans mon cas, il y avait une raison suivante:

J'ai 2 utilisateurs: moi et Guest. et l'application a été installée sur les deux mais supprimée seulement au début.

lorsque je suis passé à l'écran Invité et que j'ai supprimé l'application à partir de là, l'application est installée correctement.

J'espère que cela aidera quelqu'un :)

Andriy Antonov
la source