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

Jacob
fonte
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.

S1LENT WARRIOR
fonte
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.
Nicks
fonte
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.

Sakiboy
fonte
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.

Ankit
fonte
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

Dipendra Sharma
fonte
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

Yassin Ajdi
fonte
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"  
  }
}
Blue5hift
fonte
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")

Josh
fonte
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:

Abhishek
fonte
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.

Long Dao
fonte
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 !

Eric
fonte
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.

Bercove
fonte
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

Zain Ullah Muhammad
fonte
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.

Ronak Mehta
fonte
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.

Alex Styl
fonte
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.

Florian K
fonte
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.

ben_joseph
fonte
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

MakBeard
fonte
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

Md Imran Choudhury
fonte
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.

Blaze Gawlik
fonte
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 :-)

Build3r
fonte
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.

salpicado
fonte
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.

osoclever
fonte
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

kontashi35
fonte
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"

Narendrakumar
fonte
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.

lRadha
fonte
3

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

cheko506
fonte
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

Anurag Mishra
fonte
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.

Robert Grabiński
fonte
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 :)

Andriy Antonov
fonte