Tipo de erro 3 Erro: a classe de atividade {} não existe


397

Eu tenho um projeto IntelliJ para Android, que importei com sucesso para o Android Studio 0.4.0. Funciona perfeitamente se eu não mudar nada no manifesto. No entanto, quando quero alterar a atividade do iniciador e executá-la, ela falha com este erro:

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 clico em Sincronizar projeto com arquivos Gradle , ele gera:

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

Executar configurações: insira a descrição da imagem aqui


Onde está o seu arquivo AndroidManifest.xml original ?
— twlkyao

No mesmo local, na pasta principal do projeto.
— Jacob

Quero dizer, esta foto no post é original AndroidManifest.xmlou não.
— twlkyao

7
Eu encontrei um tópico, a esperança poderia ajudar. stackoverflow.com/questions/19670607/…
— twlkyao

4
Embora não seja eficaz no caso do OP, fazer uma sincronização gradle resolveu Error: Activity class {...} does not exist.para mim.
— dinosaur

Respostas:


612

Enfrentei um problema semelhante após a refatoração.
Isto é o que eu fiz para resolver este problema:

  1. Limpou o Projeto
  2. Excluiu o Builddiretório
  3. Reiniciado Android Studio
  4. Reconstruir o projeto
  5. Corre
  6. Opcionalmente (vá para o menu de arquivos no android, clique em "Invalidar caches / reiniciar ...", desinstale o aplicativo no seu telefone e tente novamente)

E tudo funcionou bem!
Eu acho que a chave é reiniciar o seu IDE .

Espero que isso ajude você ou qualquer outra pessoa!

Editar 1:
se as etapas acima não funcionarem para você, excluir o cache do Gradle parece ser uma solução, conforme apontado por @Yasitha.

Editar 2
Conforme sugerido por alguns usuários nos comentários abaixo, às vezes o problema pode ser resolvido removendo e reinstalando completamente o aplicativo do seu dispositivo.
Basta digitar o adb uninstall <package>terminal para remover completamente o aplicativo do dispositivo.

Editar 3
Como mencionado na resposta de Abhishek , você também deve tentar excluir o aplicativo do seu dispositivo, caso vários usuários estejam configurados no seu dispositivo.
Basta ir para Mobile Settings > Apps > [Your App] > More > Uninstall App for All Users

ATUALIZAÇÃO para Android Studio 2.1 e superior

Ao executar o Android Studio 2.1 e superior, você também pode encontrar esse problema quando tiver a opção de execução instantânea ativada em suas preferências (está ativada por padrão).

Para desabilitar essa opção, vá para a Preferencesopção no Android Studiomenu superior e procure para Instant Rundesmarcar a primeira caixa de seleção nessa tela.

Desativar execução instantânea no Android Studio 2.1 ou superior

De qualquer forma, isso corrigiu para mim. Originalmente indicado pelo usuário @yusufonder. Descobri que esse era o problema, pois a instalação do gradle ainda funcionava.


2
Funciona bem, mesmo sem excluir o diretório de compilação.
— Shivam Bhalla

12
Tive fazer cache de Gradle de exclusão, conforme descrito aqui stackoverflow.com/a/25602161/630833
— jayeffkay

4
Embora essa seja uma entrada tardia, mas estou enfrentando esse problema somente após atualizar o Android Studio para 1.5 e a solução acima não funciona no meu caso.
— Zulkarnain shah

42
Tente executar 'adb uninstall <package>' no terminal para remover completamente o aplicativo do dispositivo
— Mikhail Sharin

3
No Android 7.0, quando você desinstala o aplicativo no dispositivo (arrastando-o para o rótulo "Desinstalar" na tela principal do dispositivo), o aplicativo de fato apenas "desabilita". Você precisa acessar Configurações / aplicativos e remover manualmente o aplicativo de lá (use o comando ADB). Eu pulo nele algumas vezes, mas depois de algumas bocas eu esqueço esse recurso chamado Android 7.0.
— Mike Keskinov 29/06/19

325

Pode ser útil para alguém: -

Às vezes, ao testar em um dispositivo, o aplicativo não é desinstalado corretamente . Para verificar e corrigir isso:

  1. Vá para Configurações .
  2. Vá para Aplicativos .
  3. Selecione seu aplicativo. (aqui, você pode verificar se seu aplicativo não foi desinstalado corretamente) .
  4. Abra o menu de estouro no canto superior direito e selecione Desinstalar para todos os usuários .
  5. Feito. Tente instalar e inicie seu aplicativo novamente.

12
Usando a versão 3 do desenvolvedor do Android O, não foi possível executar a ação Desinstalar para todos os usuários, pois ele dizia que o aplicativo não existia na lista de aplicativos. Correr adb uninstall {packageName}resolveu o problema.
— alexbchr

11
Para o emulador, a resposta do Ankit não funcionou. Eu havia excluído meu aplicativo do iniciador, mas ele permaneceu no sistema, o que causou o problema. Eu tive que usar esse método para desinstalá-lo completamente.
— Malditos legumes

2
thnx homem que eu estava enfrentando esse problema em oreo android onde a aplicação não é o sucesso desinstalado completamente
— Salman500

3
Este foi exatamente o meu problema, o aplicativo não foi instalado para este usuário. Apenas desinstalei pelo procedimento mencionado acima e começou a trabalhar
— Erros acontecem

2
meu aplicativo foi desativado
— iamsujan

81

Eu enfrentaria esse problema ao desinstalar o aplicativo pelo dispositivo (por exemplo, arrastando o aplicativo para a opção "Desinstalar"). Mas aqui está a maneira correta de desinstalar:

Use o ./gradlew uninstallAllcomando Isso impedirá o Error: Activity class {HomeActivity} does not exist.erro.

Atualizar:

Se você é preguiçoso você pode usar a abreviatura para esta tarefa: ./gradlew uA.

Ou defina aliases para tarefas comuns de classificação no seu .bash_profile, pois isso economizará tempo, digitação e você não precisará se lembrar de todos os comandos nem se preocupar com erros de digitação. Eu sugiro fazer isso.


Por pior que fosse, ainda acho que foi melhor. Gradle é uma OMI de abominação.
— JJF 12/09

4
Esta é a única coisa que funcionou para mim com Android Studio 3.1 Canary 7.
— notificar

2
Ótima resposta. Alguns dispositivos parecem ter um problema com a desinstalação. Para mim, é o Xiaomi Mi Mix 2 com o EU Build. Eu acho que é um erro na versão Build do dispositivo.
— Opiatefuchs

11
Isso funciona para mim. Depois de executar ./gradlew uninstallAll
— Shanison 19/02/19

11
No início de 2020, essa era a única solução que funcionava para mim.
— PGMacDesign

73

Isso acontece quando você faz o seguinte

  • conecte seu dispositivo / emulador
  • execute o aplicativo no Android Studio (AS)
  • use / teste o aplicativo e desinstale-o do dispositivo enquanto ele ainda estiver conectado ao seu computador
  • tente executar o aplicativo novamente do AS

O AS acha que você ainda tem o aplicativo no seu dispositivo.

tl; dr - Para resolver isso, você pode simplesmente desconectar o dispositivo após desinstalar o aplicativo e reconectá-lo.


11
Embora não se confunda se o aplicativo não aparecer no Iniciador, verifique as configurações / Aplicativos -> "Todos" se o aplicativo estiver listado. Esse foi o caso do meu aplicativo e, após removê-lo, tudo funcionou bem novamente.
— Daniel Gilbert

11
Se ele não aparecer no Iniciador como o @DanielGilbert disse, você pode desinstalar facilmente com "adb uninstall package.name". Isso funcionou para mim também.
— 1513 Mike

Isso funcionou para mim também. Eu estava executando um projeto de amostra, que tem duas versões. Eu instalei a primeira versão e desinstalei-a para instalar a segunda versão. Perdi muito tempo para corrigir o erro. Esta não é a primeira vez que o desenvolvimento Android teve este tipo de problemas estranhos, insolúveis ...
— Malditos legumes

O meu caso. Desconecte e conecte o dispositivo - funcionou para mim! O aplicativo não estava no dispositivo, mas o AS não o instalou pensando que o aplicativo ainda está no meu dispositivo
— Victoria Klimova

35

O aplicativo já está instalado para outro usuário. Por favor, tente desinstalar o mesmo aplicativo para todo o usuário. Então tente.

Ou você pode tentar depois de executar o comando adb.

adb uninstall PACKAGE_NAME

em que PACKAGE_NAME é o nome completo, como com.example.myapp


Isso funciona! no meu caso, adb uninstall com.demoonde estava o nome do meu aplicativodemo
— Muhammad Ovi

com.demo será o seu nome do pacote
— Dipendra Sharma

3
A única resposta que funcionou! Android Studio 3.4.2, API nível 28
— ykonda 22/07/19

A única solução. Obrigado!
— Juan Ignacio Barisich

verifique se o dispositivo está conectado via comandoadb devices
— G. Ciardini

33

Eu tive o mesmo problema e foi assim que o corrigi.

Vá para Gradle> Tarefas> Instalar> DesinstalarTodos

insira a descrição da imagem aqui


11
Isso funciona para mim. Obrigado.
— Malwinder Singh 21/01

Isso funciona para mim também. Mas por que o problema acontece e como uninstallAllresolveria? Obrigado.
— LiuWenbin_NO.

Trabalhou para mim também!
— The Fluffy T Rex

Esta deve ser a resposta certa! Ótimo e eficaz
— HatemTmi

27

Eu tive o mesmo erro depois de renomear / refatorar. O que fiz foi adicionar o applicationIdatributo de propriedade ao meu arquivo build.gradle e definir seu valor para o pacote de aplicativos.

No build.gradle :

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

Por favor, explique como adicionar applicationId ao buidl.gradle!
— Realtebo #

Você também pode adicionar ID aplicativo para configurações do módulo de aplicação como uma alternativa
— Michael Kern

19

Tente alterar o nome da atividade em seu AndroidManifest.xmlarquivo.

No momento, ele diz:

<activity android:name="LandingActivity" >

Tente adicionar um ponto ao início do nome da atividade:

<activity android:name=".LandingActivity" >

Ou adicionando o nome do pacote ao início do nome da Atividade:

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

Também pode ser um problema que o nome do seu pacote tenha apenas dois componentes separados por pontos (o nome do seu pacote é "com.trackingeng"; um nome de pacote mais padrão seria "com.trackingeng.app")


2
@Siavash, exceto que não é Correct ™
— dcow 07/12/16

2
Como assim @dcow? A resposta aceita aqui não funcionou para mim, mas esta funcionou.
— Siavash

Qual? adicionando um ponto ou um nome de três níveis?
— Realtebo #

15

Siga as etapas abaixo Vá para Configuração móvel> Aplicativos> Seu aplicativo> Mais> Clique em Desinstalar aplicativo para todos os usuários.

Motivo: porque você está tendo vários usuários no telefone e desinstalou o aplicativo para apenas um.

DESFRUTAR:


Eu acho que a resposta selecionada deve adicionar isso também. Isso é o que funcionou para mim.
— jasxir

13

Acho que outro motivo para esse problema acontecer é que ele não é totalmente excluído para todos os usuários do dispositivo.

Vá para Configurações -> Aplicativos -> Seus aplicativos -> Clique nos 3 pontos no canto superior direito -> Desinstalar para todos os usuários

Funciona para mim. Acontece especialmente que você altera os ícones do aplicativo ou brinca com o arquivo AndroidManifest.xml.


11
Não acredito que isso funcionou. Eu tinha duas contas no meu dispositivo e ele foi instalado para o outro usuário.
— StarWind0

sim é um pouco chato, mas normalmente acontece quando o aplicativo está em desenvolvimento porque você pode querer ícones mudança de carga e outras coisas etc.
— Longa Dao

12

Para mim, o problema era que AndroidStudio pensava que o aplicativo ainda estava no dispositivo.

Para fixar isso:

  1. reinicie o adbdaemon ; em um terminal ou prompt de comando, digite:

    adb kill-server
    adb start-server
  2. tente iniciar seu aplicativo.

  3. se ainda não funcionar, verifique esta resposta .

verifique se o SDKplatform-tools do Android foi adicionado às variáveis ​​de caminho do sistema !


11

No meu caso, eu desinstalei o aplicativo do telefone depois que o problema começou, mas o comando abaixo funcionou para mim.

Execute o comando abaixo no terminal / cmd

adb uninstall <package_name>

package_name, algo como com.example.applicationname Em seguida, tente reinstalar o aplicativo. Deveria funcionar.


11
Isso funcionou para mim desde que eu havia instalado o apk via adb, mas de alguma forma a desinstalação pelo gerenciador de aplicativos do telefone deixou alguns vestígios.
— dekaru 12/01

9

para mim, no android 6, quando eu desinstalei o aplicativo, ele foi desativado em vez de ser removido do dispositivo.

Configurações> Aplicativos> clique no seu aplicativo e desinstale

isso corrigiu para mim


Isso funciona, mas mais alguns pontos. Se você excluí-lo via adb, não garante que o problema seja resolvido, caso você não veja este pacote via adb pm. Você precisa fazer isso com as mãos, localizá-lo em Configurações-> Aplicativo e escolher Excluir para todos os usuários. Depois que você pode instalá-lo novamente
— Silwester

9

O comando abaixo funcionou para mim. Em algum momento, a desinstalação parcial do aplicativo também causa isso.

Execute o comando abaixo no terminal / cmd

adb uninstall <package_name>

Em seguida, tente reinstalar o aplicativo. Deveria funcionar.


7

Esteja avisado de que se você tiver vários perfis definidos no dispositivo, seu aplicativo já poderá existir em um dos outros perfis.

A desinstalação do aplicativo de todos os perfis resolveu o problema para mim.


6

Para mim, era um problema muito específico: tenho um LG G5 para testar meu aplicativo e, para redefinir os dados de meus aplicativos, desinstalei-o no telefone, mas o telefone possui um recurso "agradável" para não desinstalar aplicativos imediatamente para que você possa reinstalá-los em um dia. Portanto, o aplicativo foi instalado, mas não pode ser usado ( desativado ) após a remoção completa do aplicativo do telefone que funcionava.


Trabalhou para mim. O LG G6 tem o mesmo "recurso" - não encontrei o caminho para desativá-lo.
— Cililing

6

No meu caso, foi porque o aplicativo que eu estava tentando iniciar foi instalado para um usuário diferente no dispositivo. Vá para Configurações -> Aplicativos (Todos os aplicativos) e selecione o aplicativo. Clique no menu excedente e selecione "Desinstalar para todos os usuários". Isso deve resolver o problema.


Isso também aconteceu com e eu tive que ir para Configurações> Aplicativos e notificações> Informações do aplicativo. Teve que "Desinstalar para todos os usuários" e instalar novamente.
— luckylukein

Me deparei com o mesmo problema e, provavelmente, a resposta deve ser atualizado com esta solução bem
— Panduka DeSilva

Este erro ocorreu quando eu configurei vários tipos de compilação no meu projeto.
— Rahul Rastogi

6

Eu uso o Android Studio 3.2 Beta 5, com o mesmo problema

Vamos para

File -> Invalidate Caches / Restart...

Problema resolvido para mim


6

Quando eu tenho esse problema, sempre tento essa solução e ela funciona.

Instant Run disable 

Build -> Clean Project

File -> Invalidate Caches / Restart

Mas eu encontrei uma exceção desta vez. Esta solução não funciona para mim. Então eu descubro que o problema é dinheiro emulador. Eu só faço Wipe datae Cold boot noweo problema está resolvido.

insira a descrição da imagem aqui


5

Caso alguém encontre o meu problema e não tenha sorte com as outras soluções ... Eu estava tentando iniciar uma atividade através do adb para FireTV enquanto depurava a integração do iniciador da Amazon. No entanto, meu projeto possuía 60 variantes de compilação diferentes (projeto de várias plataformas e aplicativos) e o ApplicationId não correspondia a nenhum caminho de classe, pois o pacote de tempo de execução (e caminhos de classe) era diferente do applicationId.

Eu estava tentando correr adb shell am start -n com.myappid.example.packageone.packagetwo/com.myappid.example.packageone.packagetwo.MySplashActivity

(É claro que eu tentei muitas combinações com.runtimepath.example desde que tive o desafio adicional de um applicationId diferente no meu build.gradle e outro em tempo de execução)

O que finalmente ajudou foi este post https://stackoverflow.com/a/36255727/5970652

O que revelou um formato diferente! com.myappid.example/com.runtimepath.example.packageone.packagetwo.MySplashActivity

Portanto, se você tiver um caminho de classe de tempo de execução diferente, tente especificar com o build.gradle applicationId antes da barra e o caminho de classe de tempo de execução posteriormente.

Você também pode obter esses valores BuildConfig.APPLICATION_IDe this.getLocalClassName()respectivamente se desejar registrá-los no logcat.


11
Este foi exatamente o meu problema! Fiquei frustrado por um tempo, mas uma vez coloquei o nome do pacote de aplicativos antes da barra e o nome completo do pacote / classe após a barra que funcionava.
— Chad Schultz

4

Até eu tive o mesmo problema, mas nenhuma das soluções acima funcionou para mim. O problema era que eu congelei o aplicativo em particular que estava tentando executar via Titanium Backup, devido ao qual obtive o erro acima. Eu tentei no Eclipse e no Android Studio.

Após a realização, desinstalei o aplicativo e o executei novamente.

Problema resolvido :-)


4

Eu gostaria de compartilhar o truque que ajudou no meu caso. Desinstalei o aplicativo do dispositivo e nada das operações de reinicialização limpa / reconstrução / Android Studio não ajudaram.

Como o Android Studio pensa que o aplicativo ainda está instalado no dispositivo e não o implanta, você pode forçar a instalação usando o ADB:

adb install -r <your_application_from.apk>

onde -rsignifica reinstalar o aplicativo, mantendo seus dados.


Esta é a única coisa que funcionou para mim, obrigado!
— Hugo

4

Eu tenho um Samsung Galaxy. A pesquisa nas configurações acima não funcionou porque não apareceu nas minhas configurações do Google Apps.

Encontrei o aplicativo no meu telefone digitando o nome do aplicativo no campo de pesquisa. Percebi que estava no perfil "Trabalho" (usando o Mobile @ Work) e o removi. Você pode encontrar as configurações do perfil em Configurações-> Perfil profissional-> Aplicativos

Espero que isso ajude alguém que pode não encontrá-lo da mesma maneira que muitas das outras respostas afirmaram que ele pode ser encontrado nas configurações.


11
OMG obrigado cara, você salvou o meu dia. Mesmo problema com fckn samsung
— Peter

4

Enfrentou este problema no android studio 3.5.1 Levei um dia para resolver esse problema, Tentei de tudo, incluindo limpar cache, reiniciar e renomear o nome do pacote também. Portanto, se alguma das opções acima não funcionou, tente isso.

Vá para gradle> Tarefas> Instalar> Desinstalar tudo

Aqui está o link: Tipo de erro 3: Classe de atividade {...} não existe


4

Algumas vezes o aplicativo é instalado no usuário Convidado no seu celular. Tente alternar Convidado e desinstale o aplicativo.

Além disso, tente executar o seguinte comando para desinstalar o pacote de desinstalação do aplicativo adb "Your package Name"


3

Eu também enfrentei o mesmo problema em algum lugar no passado. Na verdade, esses problemas ocorrem quando realizamos alguma refatoração, como renomear, mover arquivos dentro do projeto, etc. Renomear e mover arquivos exigem alterações no arquivo gradle; portanto, sempre que você renomear ou mover algum arquivo, limpe o projeto:

Compilar -> Limpar Projeto

A limpeza do projeto apenas remove os arquivos .class e recompila o projeto. Basicamente, força uma reconstrução do projeto.

Às vezes, esses tipos de erros não eram limpos no projeto de limpeza e tentavam desinstalar o aplicativo do dispositivo (seja emulador ou físico) e executá-lo novamente. Espero que isso ajude você, isso me ajuda 50% vezes.

Nota: - Sempre que houver algum erro, simplesmente não vá ao google, limpe o projeto, se isso não funcionar, faça o que você deseja no google.


3

Eu tive o mesmo problema e resolvi refatorando meu iniciador de atividades, basta alterar o nome da classe e ele funciona.


3

Eu enfrento o problema semelhante, siga as etapas abaixo.
isso vai te ajudar:

1- Limpe seu projeto
2- Exclua seu diretório de compilação
3- Reinicie seu Android Studio
4- Reconstrua o projeto
5- Ele será executado com sucesso.

obrigado


3

Eu tenho o LG Stylus e, no meu telefone de teste, o aplicativo não é removido permanentemente. Em Configurações -> Aplicativo, encontrei o aplicativo de depuração (que tento instalar e depurar pelo AS) com a desativação de anotação. Quando removo o aplicativo do meu telefone, o erro desapareceu.


Isso não parece mentir uma resposta para mim.
— mpaskov

3

No meu caso, houve o próximo motivo:

Eu tenho 2 usuários: eu e Convidado. e o aplicativo foi instalado nos dois, mas foi excluído apenas no início.

quando mudei para a tela Convidado e excluí o aplicativo de lá, o aplicativo foi instalado ok.

espero que isso ajude alguém :)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.