Error tipo 3 Error: la clase de actividad {} no existe

397

Tengo un proyecto IntelliJ para Android, que importé con éxito a Android Studio 0.4.0. Funciona perfectamente si no cambio nada en manifiesto. Sin embargo, cuando quiero cambiar la actividad del iniciador y ejecutarlo, falla con este error:

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.

Cuando hago clic en Sincronizar proyecto con archivos Gradle , genera:

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

Ejecutar configuración: ingrese la descripción de la imagen aquí

Jacob
fuente
¿Dónde está tu archivo original AndroidManifest.xml ?
twlkyao
En el mismo lugar, debajo de la carpeta principal del proyecto.
Jacob
Quiero decir, esta foto en la publicación es tu original AndroidManifest.xmlo no.
twlkyao
77
He encontrado un hilo, la esperanza podría ayudar. stackoverflow.com/questions/19670607/…
twlkyao
44
Aunque no es efectivo en el caso del OP, hacer una sincronización de Gradle Error: Activity class {...} does not exist.me resolvió .
dinosaurio

Respuestas:

613

Me enfrenté a un problema similar después de refactorizar.
Esto es lo que hice para resolver este problema:

  1. Limpiado el proyecto
  2. Eliminado el Builddirectorio
  3. Reinició Android Studio
  4. Reconstruir el proyecto
  5. correr
  6. Opcionalmente (vaya al menú de archivos en Android, haga clic en "Invalidar cachés / reiniciar ..." desinstale la aplicación en su teléfono e intente nuevamente)

¡Y todo funcionó bien!
Creo que la clave es reiniciar su IDE .

¡Espero que esto te ayude a ti o a alguien más!

Edición 1:
si los pasos anteriores no funcionan para usted, entonces eliminar Gradle cache parece ser una solución, como lo señaló @Yasitha.

Editar 2
Según lo sugerido por un par de usuarios en los comentarios a continuación, a veces el problema puede resolverse eliminando y reinstalando completamente la aplicación de su dispositivo.
Simplemente escriba la adb uninstall <package>terminal para eliminar completamente la aplicación del dispositivo.

Editar 3
Como se menciona en la Respuesta de Abhishek , también se debe intentar eliminar la aplicación de su dispositivo en caso de que haya varios usuarios configurados en su dispositivo.
Simplemente ve a Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

ACTUALIZACIÓN para Android Studio 2.1 y superior

Al ejecutar Android Studio 2.1 y versiones posteriores, también puede encontrar este problema cuando tiene la opción de ejecución instantánea habilitada en sus preferencias (está habilitada de forma predeterminada).

Para deshabilitar esta opción, vaya a la Preferencesopción en el Android Studiomenú superior y busque para Instant Runque pueda desmarcar la primera casilla de verificación en esa pantalla.

Deshabilite la ejecución instantánea en Android Studio 2.1+

De todos modos eso me lo arregló. Originalmente señalado por el usuario @yusufonder. Descubrí que este era el problema ya que la instalación de Gradle todavía funcionaba.

SOLDADO GUERRERO
fuente
2
Funciona bien incluso sin eliminar el directorio de compilación.
Shivam Bhalla
12
Tuve que eliminar gradle cache como se describe aquí stackoverflow.com/a/25602161/630833
jayeffkay
44
Aunque esta es una entrada tardía, pero estoy enfrentando este problema solo después de actualizar Android Studio a 1.5 y la solución anterior no funciona en mi caso.
zulkarnain shah
42
Intente ejecutar 'adb uninstall <package>' en la terminal para eliminar completamente la aplicación del dispositivo
Mikhail Sharin
3
En Android 7.0 cuando desinstala la aplicación en el dispositivo (arrastrándola a la etiqueta "Desinstalar" en la pantalla principal del dispositivo), la aplicación de hecho simplemente se "deshabilitó". Debe ir a Configuración / Aplicaciones y eliminar manualmente la aplicación desde allí (alternativamente, use el comando ADB). Salto un par de veces, pero después de algunas bocas me olvido de esta llamada característica de Android 7.0.
Mike Keskinov
325

Puede ser útil para alguien: -

A veces, cuando se prueba en un dispositivo, la aplicación no se desinstala correctamente . Para verificar y arreglar esto:

  1. Ve a Configuración .
  2. Ve a Aplicaciones .
  3. Selecciona tu aplicación. (aquí, puede verificar que su aplicación no esté desinstalada correctamente) .
  4. Abra el menú de desbordamiento en la esquina superior derecha y seleccione Desinstalar para todos los usuarios .
  5. Hecho. Intente instalar y luego inicie su aplicación nuevamente.
Mellas
fuente
12
Al usar la vista previa 3 del desarrollador de Android O, no pude realizar la acción Desinstalar para todos los usuarios, ya que me dijo que la aplicación no existía en la lista de aplicaciones. Correr adb uninstall {packageName}resolvió el problema.
alexbchr
1
Para el emulador, la respuesta de Ankit no funcionó. Había eliminado mi aplicación del iniciador, pero permaneció en el sistema, lo que causó el problema. Tuve que usar este método para desinstalarlo por completo.
Damn Vegetables
2
Gracias hombre, me estaba enfrentando a este problema en Android Oreo, donde la aplicación no se desinstala con éxito por completo
Salman500
3
Este fue exactamente mi problema, la aplicación no estaba instalada para este usuario. Simplemente lo desinstalé mediante el procedimiento mencionado anteriormente y comenzó a funcionar
errores ocurren el
2
mi aplicación fue deshabilitada
iamsujan
82

Me enfrentaría a este problema al desinstalar la aplicación a través del dispositivo (es decir, arrastrar la aplicación a la opción "Desinstalar"). Pero aquí está la forma correcta de desinstalar:

Usa el ./gradlew uninstallAllcomando. Esto evitará el Error: Activity class {HomeActivity} does not exist.error.

Actualizar:

Si eres flojo, puedes usar la abreviatura para esta tarea: ./gradlew uA .

O defina alias para las tareas comunes de gradle en su .bash_profile, al hacerlo ahorrará tiempo, escribir, y no tendrá que recordar cada comando ni preocuparse por los errores tipográficos. Sugiero hacer esto.

Sakiboy
fuente
Por malo que fuera, todavía creo que fue mejor. Gradle es una abominación de la OMI.
JJF
44
Esto es lo único que me funcionó con Android Studio 3.1 Canary 7.
NOTiFY
2
gran respuesta. Algunos dispositivos parecen tener un problema con la desinstalación. Para mí, es Xiaomi Mi Mix 2 con EU Build. Supongo que es un error en la versión de compilación del dispositivo.
Opiatefuchs
1
Esto funciona para mi. Después de ejecutar ./gradlew uninstallAll
Shanison
1
A principios de 2020, esta fue la única solución que funcionó para mí.
PGMacDesign
73

Esto sucede cuando haces lo siguiente

  • conecta tu dispositivo / emulador
  • ejecuta la aplicación desde Android Studio (AS)
  • use / pruebe la aplicación y desinstálela del dispositivo mientras todavía está conectada a su computadora
  • intenta ejecutar la aplicación nuevamente desde AS

AS cree que todavía tiene la aplicación en su dispositivo.

tl; dr: para resolver esto, simplemente puede desconectar su dispositivo después de desinstalar la aplicación y volver a conectarla.

Ankit
fuente
11
Aunque no se confunda si la aplicación no aparece en el Iniciador, solo verifique la configuración / Aplicaciones -> "Todo" si la aplicación está en la lista. Ese fue el caso con mi aplicación, y después de eliminarla, todo volvió a funcionar bien.
Daniel Gilbert
1
Si no aparece en el Iniciador como dijo @DanielGilbert, puede desinstalarlo fácilmente con "adb uninstall package.name". Esto también funcionó para mí.
Mike
Esto también funcionó para mí. Estaba ejecutando un proyecto de muestra, que tiene dos versiones. Instalé la primera versión y luego la desinstalé para instalar la segunda versión. He perdido mucho tiempo para corregir el error. Esta no es la primera vez que el desarrollo de Android tiene este tipo de problemas extraños e irresolubles ...
Damn Vegetables
Mi caso. Desconecte y conecte el dispositivo: ¡esto funcionó para mí! La aplicación no estaba en el dispositivo, pero AS no la instaló pensando que la aplicación todavía está en mi dispositivo
Victoria Klimova
35

La aplicación ya está instalada para otro usuario. Intente desinstalar la misma aplicación para todos los usuarios. Entonces intenta.

O puede intentarlo después de ejecutar el comando adb.

adb uninstall PACKAGE_NAME

donde PACKAGE_NAME es el nombre completo como com.example.myapp

Dipendra Sharma
fuente
¡Esto funciona! en mi caso adb uninstall com.demodonde estaba el nombre de mi aplicacióndemo
Muhammad Ovi
com.demo será el nombre de su paquete
Dipendra Sharma
3
¡La única respuesta que funcionó! Android Studio 3.4.2, API Nivel 28
ykonda
La única solución. ¡Gracias!
Juan Ignacio Barisich
asegúrese de que el dispositivo esté conectado a través del comandoadb devices
G. Ciardini
33

Tuve el mismo problema, y ​​así es como lo solucioné.

Vaya a Gradle> Tareas> Instalar> Desinstalar todos

ingrese la descripción de la imagen aquí

Yassin Ajdi
fuente
1
Esto funciona para mi. Gracias.
Malwinder Singh
Esto también funciona para mí. Pero, ¿por qué ocurre el problema y cómo uninstallAllse resolvería? Gracias.
LiuWenbin_NO.
¡Trabajó para mí también!
The Fluffy T Rex
¡Esta debería ser la respuesta correcta! Óptimo y efectivo
HatemTmi
27

Tuve el mismo error después de renombrar / refactorizar. Lo que hice fue agregar elapplicationId atributo de propiedad a mi archivo build.gradle y establecer su valor en el paquete de la aplicación.

En build.gradle :

android {
defaultConfig {
    applicationId "com.example.myapp"  
  }
}
Blue5hift
fuente
¡Por favor, explique cómo agregar applicationId a buidl.gradle!
realtebo
También puede agregar la ID de la aplicación a la configuración del módulo de la aplicación como alternativa
Michael Kern el
19

Intente cambiar el nombre de la Actividad en su AndroidManifest.xmlarchivo.

En este momento dice:

<activity android:name="LandingActivity" >

Intente agregar un punto al comienzo del nombre de la Actividad:

<activity android:name=".LandingActivity" >

O agregando el nombre del paquete al comienzo del nombre de la Actividad:

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

También puede ser un problema que el nombre de su paquete tenga solo dos componentes separados por puntos (el nombre de su paquete es "com.trackingeng"; un nombre de paquete más estándar sería "com.trackingeng.app")

Josh
fuente
2
@Siavash excepto que no es correcta ™
dcow
2
¿Qué tal @dcow? La respuesta aceptada aquí no funcionó para mí, pero esta sí.
Siavash
¿Cúal? agregando un punto o un nombre de 3 niveles?
realtebo
15

Siga los pasos a continuación Vaya a Configuración móvil> Aplicaciones> Su aplicación> Más> Hit Desinstalar aplicación para todos los usuarios.

Motivo: porque tiene varios usuarios en su teléfono y desinstaló esa aplicación solo para uno.

DISFRUTAR:

Abhishek
fuente
Creo que la respuesta seleccionada debería agregar esto también. Esto es lo que funcionó para mí.
jasxir
13

Creo que otra razón por la que ocurre este problema es que no se elimina por completo para todos los usuarios del dispositivo.

Vaya a Configuración -> Aplicaciones -> Sus aplicaciones -> Haga clic en los 3 puntos en la parte superior derecha -> Desinstalar para todos los usuarios

Esto funciona para mi. Ocurre especialmente cuando cambias los íconos de la aplicación o juegas con el archivo AndroidManifest.xml.

Dao largo
fuente
1
No puedo creer que esto haya funcionado. Tenía 2 cuentas en mi dispositivo y estaba instalado para el otro usuario.
StarWind0
Sí, es un poco molesto, pero normalmente ocurre cuando la aplicación está en desarrollo porque es posible que desees cambiar los íconos de carga, etc.
Long Dao
12

Para mí, el problema era que AndroidStudio pensaba que la aplicación todavía estaba en el dispositivo.

Arreglarlo:

  1. reiniciar el adbdemonio ; en una terminal o símbolo del sistema, ingrese:

    adb kill-server
    adb start-server
  2. intenta iniciar tu aplicación.

  3. Si todavía no funciona, mira esta respuesta .

¡asegúrese platform-toolsde que el SDK de Android esté agregado a las variables de ruta del sistema !

Eric
fuente
11

En mi caso, desinstalé la aplicación del teléfono después de que comenzó el problema, pero el siguiente comando funcionó para mí.

Ejecute el siguiente comando en terminal / cmd

adb uninstall <package_name>

nombre_paquete algo así como com.example.applicationname Luego, intente reinstalar la aplicación. Deberia de funcionar.

Bercove
fuente
1
Esto funcionó para mí ya que anteriormente había instalado el apk a través de adb, pero de alguna manera desinstalarlo a través del administrador de aplicaciones del teléfono dejó algunos rastros de aplicaciones.
dekaru
9

para mí, en Android 6 cuando desinstalé la aplicación, en realidad fue desactivada en lugar de ser eliminada del dispositivo.

Configuración> Aplicaciones> haga clic en su aplicación y desinstale

Esto me lo arregló

Zain Ullah Muhammad
fuente
Eso funciona, pero algunos puntos más. Si lo elimina a través de adb, no garantiza que se resuelva el problema, evento si no ve este paquete a través de adb pm. Tienes que hacerlo con las manos, búscalo en Configuración-> Aplicación y elige Eliminar para todos los usuarios. Después de eso, puede instalarlo nuevamente
Silwester
9

El siguiente comando funcionó para mí. En algún momento, la desinstalación parcial de la aplicación también causa esto.

Ejecute el siguiente comando en terminal / cmd

adb uninstall <package_name>

Luego, intente reinstalar la aplicación. Deberia de funcionar.

Ronak Mehta
fuente
7

Tenga en cuenta que si tiene varios perfiles configurados en el dispositivo, es posible que su aplicación ya exista en uno de los otros perfiles.

Desinstalar la aplicación de todos los Perfiles resolvió el problema por mí.

Alex Styl
fuente
6

Para mí fue un problema muy específico, tengo un Lg g5 para probar mi aplicación y para restablecer los datos de mis aplicaciones lo desinstalé en el teléfono, pero el teléfono tiene una función "agradable" para no desinstalar aplicaciones inmediatamente para que pueda reinstalarlos dentro de un día. Por lo tanto, la aplicación se instaló pero no se pudo usar ( deshabilitar ) después de eliminar completamente la aplicación del teléfono.

Florian K
fuente
Trabajó para mi. LG G6 tiene la misma "característica": no encontré la forma de desactivarlo.
Cililing
6

En mi caso, fue porque la aplicación que estaba intentando iniciar se instaló para un usuario diferente en el dispositivo. Vaya a Configuración -> Aplicaciones (Todas las aplicaciones) y seleccione la aplicación. Haga clic en el menú de desbordamiento y seleccione "Desinstalar para todos los usuarios". Esto deberia resolver el problema.

ben_joseph
fuente
Esto también sucedió con e y tuve que ir a Configuración> Aplicaciones y notificaciones> Información de la aplicación. Tuve que "Desinstalar para todos los usuarios" e instalar nuevamente.
luckylukein
Me encontré con el mismo problema y probablemente la respuesta también debería actualizarse con esta solución
Panduka DeSilva
Este error se me ocurrió cuando configuré varios tipos de compilación en mi proyecto.
Rahul Rastogi
6

Yo uso Android Studio 3.2 Beta 5, ante el mismo problema

Ir

File -> Invalidate Caches / Restart...

Problema resuelto para mi

MakBeard
fuente
6

Cuando tengo este problema, siempre intento esta solución y funciona.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Pero encontré una excepción esta vez. Esta solución no me funciona. Entonces descubro que el problema es el emulador de efectivo. Simplemente lo hago Wipe datay Cold boot nowel problema está resuelto.

ingrese la descripción de la imagen aquí

Md Imran Choudhury
fuente
5

En caso de que alguien se encuentre con mi problema y no tenga suerte con las otras soluciones ... Intenté iniciar una actividad a través de adb para FireTV mientras depuraba la integración del iniciador de Amazon. Sin embargo, mi proyecto tenía 60 variantes de compilación diferentes (multiplataforma, proyecto de aplicación múltiple) y el ApplicationId no coincidía con ningún classpath ya que el paquete de tiempo de ejecución (y classpaths) eran diferentes del applicationId.

Estaba tratando de correr adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(Por supuesto que había intentado muchas combinaciones con com.runtimepath.example ya que tenía el desafío adicional de un ID de aplicación diferente en mi build.gradle y otro en tiempo de ejecución)

Lo que finalmente ayudó fue esta publicación https://stackoverflow.com/a/36255727/5970652

¡Que reveló un formato diferente! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Por lo tanto, si tiene una ruta de clase de tiempo de ejecución diferente, intente especificar con build.gradle applicationId antes de la barra diagonal y la ruta de clase de tiempo de ejecución después.

También puede obtener estos valores de BuildConfig.APPLICATION_IDy this.getLocalClassName()respectivamente si desea registrarlos en logcat.

Blaze Gawlik
fuente
1
Este fue exactamente mi problema! Estuve frustrado por un tiempo, pero una vez que puse el nombre del paquete de la aplicación antes de la barra oblicua, y el nombre completo del paquete / clase después de la barra, funcionó.
Chad Schultz
4

Incluso tuve el mismo problema, pero ninguna de las soluciones anteriores funcionó para mí. El problema era que había congelado la aplicación particular que estaba tratando de ejecutar a través de Titanium Backup debido a que recibí el error anterior. Probé tanto en Eclipse como en Android Studio.

Después de la realización, simplemente desinstalé la aplicación y luego la volví a ejecutar.

Problema resuelto :-)

Build3r
fuente
4

Me gustaría compartir el truco que ayudó en mi caso. Desinstalé la aplicación del dispositivo y nada de las operaciones de reinicio de limpieza / reconstrucción / Android Studio no ayudó.

Dado que Android Studio cree que la aplicación todavía está instalada en el dispositivo y no la implementa, puede forzar la instalación mediante ADB:

adb install -r <your_application_from.apk>

donde -rsignifica reinstalar la aplicación, manteniendo sus datos.

salpicado
fuente
Esto es lo único que funcionó para mí, gracias!
Hugo
4

Tengo un Samsung Galaxy. Buscar en la configuración anterior no funcionó porque no apareció en absoluto en la configuración de mis aplicaciones.

Encontré la aplicación en mi teléfono escribiendo el nombre de la aplicación en el campo de búsqueda. Me di cuenta de que estaba en el perfil "Trabajo" (usando Mobile @ Work) y lo eliminé. Puede encontrar la configuración para el perfil yendo a Configuración-> Perfil de trabajo-> Aplicaciones

Espero que esto ayude a alguien que no lo encuentre de la misma manera que muchas de las otras respuestas declararon que se puede encontrar en la configuración.

osoclever
fuente
1
Dios mío, gracias, me salvaste el día. Mismo problema con Samsung fckn
Peter
4

Enfrenté este problema en Android Studio 3.5.1. Me tomó un día resolver este problema, probé todo, incluyendo limpiar el caché, reiniciar y renombrar el nombre del paquete. Entonces, si alguno de los anteriores no funcionó, intente esto.

Simplemente vaya a gradle> Tareas> Instalar> Desinstalar todo

Aquí está el enlace: Tipo de error 3: la clase de actividad {...} no existe

kontashi35
fuente
4

Algunas veces la aplicación se instala en el usuario Invitado en su dispositivo móvil, así que intente cambiar Invitado y desinstalar la aplicación.

Además, intente ejecutar el siguiente comando para desinstalar el paquete de desinstalación de aplicaciones adb "Su nombre de paquete"

Narendrakumar
fuente
3

También enfrenté el mismo problema en algún lugar del pasado. Tales problemas realmente ocurren cuando realizamos algunas refactorizaciones como: renombrar, mover archivos dentro del proyecto, etc. Cambiar el nombre y mover archivos requieren cambios en el archivo gradle, así que cada vez que cambie el nombre o mueva algún archivo simplemente limpie el proyecto:

Compilación -> Proyecto limpio

La limpieza del proyecto solo elimina los archivos .class y vuelve a compilar el proyecto. Básicamente, obliga a un proyecto de reconstrucción.

A veces, estos tipos de errores no se limpiaron en el proyecto de limpieza, luego intente desinstalar la aplicación del dispositivo (ya sea emulador o físico) y vuelva a ejecutar la aplicación. Espero que esto te ayude, me ayuda un 50%.

Nota: - Cuando tenga algún error, simplemente no vaya a google, limpie el proyecto si esto no funciona, haga lo que quiera googlear.

lRadha
fuente
3

Tuve el mismo problema y lo resolví refactorizando mi iniciador de actividad, solo cambie el nombre de la clase y funciona.

cheko506
fuente
3

Me enfrento al problema similar, siga los pasos a continuación.
Te ayudará:

1- Limpia tu proyecto
2- Elimina tu directorio de compilación
3- Reinicia tu Android Studio
4- Reconstruye el proyecto
5- se ejecutará con éxito.

Gracias

Anurag Mishra
fuente
3

Tengo LG Stylus y en mi teléfono de prueba, la aplicación no se elimina de forma permanente. En Configuración -> Aplicación, encontré la aplicación de depuración (que trato de instalar y depurar por AS) con desactivación de anotaciones. Cuando elimino la aplicación de mi teléfono, el error desaparece.

Robert Grabiński
fuente
Esto no parece mentir una respuesta para mí.
mpaskov
3

En mi caso había una razón siguiente:

Tengo 2 usuarios: yo y Guest. y la aplicación se instaló en ambos, pero se eliminó solo al principio.

cuando cambié a la pantalla de Invitado y eliminé la aplicación desde allí, la aplicación se instaló bien.

Espero que esto ayude a alguien :)

Andriy Antonov
fuente