Erro "Aplicativo não instalado" no Android

425

Eu tenho um programa trabalhando no emulador do Android. De vez em quando eu tenho criado um .apk assinado e exportado para o meu HTC Desire para testar. Tudo está bem.

No meu .apk exportado mais recente, recebo a mensagem de erro 'Aplicativo não instalado' quando tento instalar o .apk. Ele roda bem nos emuladores.

Como tenho testado principalmente nos emuladores e exportado de vez em quando para um telefone real, não tenho certeza de quando isso aconteceu. Qual é a causa provável disso não ser instalado em um telefone físico, mas funcionando bem nos emuladores?

Tentei reiniciar o telefone e remover o .apk existente, não corrige a falha.

Entropy1024
fonte
5
Quando você diz que removeu o arquivo .apk existente, quer dizer que desinstalou o aplicativo do telefone? Caso contrário, desinstale o aplicativo antes de tentar instalá-lo novamente.
Telmo Marques
9
O que o TomS disse, corra adb uninstall your.package.namee depois adb install /path/to.apk. Não vejo por que isso não funcionaria. Você mudou alguma coisa no procedimento de assinatura?
Felix
2
Você tentou depurá-lo diretamente do eclipse no dispositivo conectado ao computador para ver se o log diz mais alguma coisa?
Javi
1
Eu removi o aplicativo usando a opção de desinstalação do gerenciador de aplicativos no telefone.
Entropy1024
Felix. De onde eu corro essa coisa adb?
Entropy1024

Respostas:

265

Principalmente para telefones mais antigos

Eu só encontrei o App not installederro ao tentar instalar um apk no meu telefone que roda no 4.4.2 aka KitKat, mas meu amigo não encontrou esse erro no telefone que roda no 6+. Tentei as outras soluções, como remover a versão antiga / depuração do aplicativo porque o apk era uma versão de lançamento, limpando os dados do aplicativo de depuração e até mesmo limpando todos os meus dados em cache. Por fim, percebi que tudo o que precisava fazer era selecionar as duas versões de assinatura ao criar meu apk assinado.

enter image description here

Antes de V2 (Full APK Signature)selecionar, mas depois de selecionar V1 Jar Signature, consegui instalar com êxito o APK assinado no meu dispositivo 4.4.2. Espero que isso ajude os outros!

Chris Gong
fonte
6
Leve em conta esta solução quando tiver um telefone mais antigo! Eu tenho um Galaxy S4 mini com Android 4.4.2 e esqueci de verificar a "assinatura V1" para que ele não possa ser instalado no dispositivo. Depois de verificado, o apk é instalado como um encanto.
Jose Ramon Garcia
1
@JoseRamonGarcia O engraçado é que eu tenho exatamente o mesmo telefone e a versão do Android haha! -Lo feliz funcionou para você
Chris Gong
1
Obrigado! O Android Studio deve fornecer mais informações sobre isso ao assinar o aplicativo, ou tornar mais óbvio o que ele faz quando você não marcaV1 (Jar Signature)
Melledijkstra
No meu caso eu tenho que adicionar esta configuração em arquivo de manifesto Android: installLocation = "InternalOnly"
Avinash Kumar
1
Eu originalmente assinei com a v2 quando me deparei com o problema. Então eu assinei apenas com a v1 e funcionou. Estou executando o sdk23 no meu telefone.
Âmbar
206

Para mim, no Android 9 (API 28), desabilitar o Google Play Protect do aplicativo Play Store funcionou, e pude me livrar do App not Installederro.

Para desativar o Google Play Protect. Abra o aplicativo "Play Store" => toque no botão Menu => selecione a opção "Play Protect" => Desative as opções "Verificar dispositivo em busca de ameaças à segurança".

Qasim
fonte
4
embora quando tentei instalar meu aplicativo pela primeira vez, fui solicitado pelo play protect dizendo que não era possível verificar se o aplicativo era seguro e pressione "instalar de qualquer maneira" para que o aplicativo ainda não fosse instalado. esta substituição funcionou
user2565663 15/02/19
Não tenho a Play Store no emulador do Android (API 28).
Jerry rodeio
3
Também é o caso do Android 8 (apenas para preencher a lacuna relatada entre 7 e 9).
Cleardemon 25/03/19
3
Isso funciona bem. Não se esqueça de reverter as configurações depois de instalado o apk.
Rahamath 28/03/19
Muito obrigado, resolveu problemas no meu Xiaomi redmi 5 Plus
Nicola Gallazzi
150

Eu tive um problema semelhante e foi porque estava tentando instalar um apk em um telefone com uma versão anterior do mesmo apk e os dois aplicativos não foram assinados com o mesmo certificado. Quero dizer, quando usei o mesmo certificado, fui capaz de substituir a instalação anterior, mas quando alterei o certificado entre as versões, a instalação não foi possível. Você está usando o mesmo certificado?

Javi
fonte
9
Sim, é o mesmo certificado. Eu acho que já tive isso antes. Tentei excluir o aplicativo existente no telefone e também tentei instalar uma versão não assinada. Ainda recebe a mesma mensagem de erro.
Entropy1024
2
Eu também tive o mesmo problema para isso (versão anterior com outro certificado) - para ser específico, eu o instalei implicitamente para usar o depurador. Revmoving resolvido (não o seu caso, como visto abaixo, mas vale a pena registrar aqui)
chesterbr
11
Este post tem mais de 30 respostas. O que eu recomendo é: sempre que enfrentar esse problema, observe os logs do dispositivo durante a instalação do aplicativo. use adb logcat. Você conhecerá a causa exata da falha na instalação. o registro do meu problema é "As assinaturas do pacote com.companyname.appname não correspondem à versão instalada anteriormente; ignorando!"
Manikandan
Eu mudei o nome do pacote. e funcionou. Percebi que havia testado vários aplicativos com o mesmo nome de pacote, portanto, o erro.
user30478
120

Claramente, existem muitas causas para esse problema. Para mim, a situação era a seguinte: eu havia implantado no meu nexus 7 (dispositivo real) de dentro do Android Studio (v1.3.2). Tudo funcionou bem. Criei um apk assinado e enviei para o meu Google Drive. Depois de desconectar meu nexus do usb, fui para as configurações / aplicativos e desinstalei meu aplicativo (App1). Abri o Google Drive, cliquei no App1.apk e optei por instalá-lo (é necessário garantir que você tenha permitido a instalação de aplicativos nas configurações). Então recebi a temida mensagem "App not Installed"

Solução para mim: volte para configurações / aplicativos e role por todos os aplicativos e na parte inferior havia uma versão pálida do meu App1 (observe que o App1 original estava no topo em ordem alfabética, que foi excluída como acima). Ao clicar na versão pálida, dizia "Não instalado para este usuário". (Eu configurei meu nexus para ter mais de um usuário). Mas no canto superior direito, há um botão de três pontos . Eu pressionei isso e dizia "Desinstalar para todos os usuários" . O que eu fiz e resolveu o problema. Agora eu era capaz de clicar em App1.apk e ele foi instalado sem o erro.

Astra Bear
fonte
1
Sim, eu tive vários motivos, e este foi um deles. Obrigado!
Alveoli
1
tem o mesmo problema. Eu tinha uma conta de convidado ativada e, ao remover o aplicativo, ele não foi removido de todos os usuários.
Filip Luchianenco
2
Isso foi realmente útil e eu instalei / desinstalei o aplicativo por 20 vezes antes de encontrá-lo. Muito obrigado! :-)
Rahul Arora
3
Se apenas o StackOverflow nos permitir votar mais de uma vez. Esta solução me ajudou quase um ano atrás. Eu votei e prontamente esqueci. Hoje tive o mesmo problema e me ajudou novamente. Tentei votar novamente e StackOverflow disse que eu já tinha. Ah bem.
Glenn
2
Obrigado. Eu também encontrei esse problema. Não é absolutamente óbvio, pela primeira vez, que a desinstalação do aplicativo o faz apenas para o usuário ativo atual. Para evitar entrar nas configurações todas as vezes, eu uso o comando adb uninstall your.package.nameque desinstala para todos os usuários.
Xavier
61

Eu enfrentei o problema ao atualizar meu android da 2.3.2 para a 3.0.1. Se for esse o caso, o IDE considerará automaticamente os seguintes pontos.

1.Não é possível instalar um aplicativo com o android: testOnly = "true" por meios convencionais, como um gerenciador de arquivos Android ou um download fora de um site

2.Android Studio define android: testOnly = "true" em APKs executados a partir de

se você executar o aplicativo conectando diretamente o dispositivo ao sistema, o apk será instalado e não funcionará.

se você enviou este apk por cópia da pasta de criação e depuração, ele nunca será instalado no dispositivo.

Solução : vá em Build ---> Build APK (s) ---> copie o compartilhamento de arquivo apk para sua equipe

então seu problema vai resolver.

Surya Reddy
fonte
1
Você salvou o meu trabalho! Obrigado!
img.simone 16/01
1
Oh Deus, demorei 3 horas ..
cuddlemeister
Funciona! Obrigado!
Peter
1
Isso aqui é a resposta para mim. Tão irritante que essa coisa simples não foi notificada morrendo descaradamente no programa ou através de qualquer mensagem de erro no dispositivo. valeu cara!
LFMekz
29

Eu enfrentei o mesmo problema. O problema foi a principal atividade no meu arquivo AndroidManifest.xml foi gravada duas vezes. Eu apaguei a duplicata.

Christophe
fonte
Obrigado pela dica! No meu caso android:exportedfoi definido como falso para lançador de atividade
ildar ishalin
21

Isso pode acontecer se você tiver declarado sua MainActivity duas vezes no AndroidManifest.xml.

Outro motivo possível: você alterou a atividade de lançamento. Dica: nunca faça isso com aplicativos já publicados! Razões discutidas no blog Android Developers .

Sergey Glotov
fonte
4
+1 android:nameatributo de qualquer Activity, Service, BroadcastReceivere assim por diante não pode ser alterado no arquivo de manifesto. Embora pareça ser o identificador particular do seu aplicativo, é uma API pública.
caw
Preciso alterar minha atividade de inicialização. Adicionei uma tela inicial e, dentro dela, tenho que baixar feeds antes de iniciar a atividade principal. Você tem uma solução para isso além de colocar a tela inicial dentro da atividade principal?
Chris Sim
2
Você pode usar uma tag <activity-alias> para lidar com isso!
Thiagolr
18

Eu tive o mesmo problema. Não percebi que um aplicativo deve ser assinado mesmo para teste.

Depois de autoassiná-lo, ele foi instalado corretamente.

code511788465541441
fonte
1
Mais informações aqui: stackoverflow.com/questions/4853011/…
Francisco Corrales Morales
14

Eu tive o mesmo problema e aqui está como resolvê-lo: Vá para o arquivo Manifest e verifique se você tem os atributos "Debuggable" e "Test Only" configurados como false. Funcionou para mim :)

Thinkcomplete
fonte
2
Não sei o que você quer dizer com 'Somente teste', mas definir depurável como true e assinar o apk funcionaram para mim!
ingh.am
não funcionou para mim. Eu usei:android:testOnly="false" android:debuggable="false"
Francisco Corrales Morales
você poderia explicar? Não tenho nenhum atributo, não sou verdadeiro nem falso, apenas não estou lá. Como é a linha?
precisa saber é
14

Para quem está usando o Android Studio 3.

A resposta de Suryanarayana Reddy está correta, pois não indica etapas para resolvê-la.

no seu AndroidManifest.xml, na tag do aplicativo, adicione testOnly="false" e faça android:debuggable="true"o seguinte:

<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"
    android:testOnly="false"
    android:debuggable="true"
    >

Edite
então na barra de menus do AndroidStudio Build> Build APK (s)

Akshay Mais
fonte
Obrigado! android:debuggable="true"leva a Error: Avoid hardcoding the debug mode; leaving it out allows debug and release builds to automatically assign one [HardcodedDebugMode]. Eu tentei android:testOnly="false", ambas Build > Build Bundl(s) / APK(s) > Build APK(s)e Build > Generate SignedBundle APK...com as versões de assinatura v1, v2 (como na captura de tela superior). Teve que remover o aplicativo anterior antes e instalar um novo.
CoolMind 15/10
Encontrou recentemente esse problema. Acabei de adicionar android: testOnly = "false" e Build -> Build Apks e pronto. Tudo ordenado. Obrigado! Não há necessidade de adicionar nenhuma outra propriedade do Android como android: debuggable = "true".
androidStud 31/10/19
12

Sei que este é um post antigo, mas para novos usuários pode ser útil. Eu tive o mesmo problema: meu aplicativo funcionou bem durante a depuração. Quando assinei o APK, recebi a mesma mensagem: "Aplicativo não instalado".

Corrigi a desinstalação do meu JDK (eu estava usando o jdk-6u14-windows-x64) e instalei um novo (jdk-6u29-windows-x64). Após exportar e assinar o APK novamente, tudo estava bem!

Resumindo, meu problema estava na versão JAVA. Obrigado Oracle !!

Joubert Vasconcelos
fonte
Este fixa-lo para mim ... mais informações stackoverflow.com/questions/6282169/...
Greg Ennis
2
Isso é incrivelmente estranho. Isso foi para um emulador ou dispositivo?
31812 Joe Plante
12

Meu problema era que eu tenho várias contas de usuário no dispositivo. Excluí o aplicativo em uma conta, mas ele ainda estava instalado na outra conta. Portanto, o espaço para nome colidiu e não foi instalado. A desinstalação do aplicativo de todos os usuários o corrigiu para mim.

Regra
fonte
2
No Application Manager, selecione o aplicativo (que aparecerá, mas será listado como desinstalado), selecione Mais e a opção Desinstalar para todos os usuários será exibida.
Casey Murray
9

Meu problema era: usei o Debug Apk, que foi gerado enquanto fazia o comando Executar do Android Studio

A solução foi: em vez de usar esse arquivo, limpe o projeto e clique em Compilar> Compilar APK (s) no Android Studio. Em seguida, você pode usar o APK gerado na pasta usual (app / build / outputs / apk / debug /)

O arquivo que foi gerado assim foi instalado sem problemas.

Adam Kis
fonte
7

Se o aplicativo não estiver sendo instalado, exclua o arquivo .android_secure/smdl2tmpl.asec do cartão SD.

Se a pasta .android_secureestiver vazia no gerenciador de arquivos, exclua-a do PC.

Nnamdi
fonte
5

No final, descobri que nenhum aplicativo estava sendo instalado com sucesso, não apenas o meu. Defino o padrão Instalar aplicativo do cartão SD como Automático. Isso consertou.

Entropy1024
fonte
1
Como você faz isso? Eu não estou achando essa opção em tudo no meu dispositivo
SoulRayder
O Huawei P8 Lite, Android 6.0, possui apenas: Avançado / Memória e armazenamento / local padrão: interno / SDCard Não ajudou.
Kaay
5

Se você tem uma versão anterior para esse aplicativo, tente apagá-la primeiro, agora meu problema foi resolvido por esse método.

Jose Luis De la Cruz
fonte
5

Eu também resolvi esse problema,

O problema foi que eu declarei minha atividade principal duas vezes, On como a primeira atividade a ser carregada e especifiquei também um filtro de intenção para ela.

Apenas certifique-se de não declarar suas atividades duas vezes.

Avi Mistriel
fonte
Se você declarar sua atividade duas vezes no Manifest.xmlarquivo, um erro de compilação será exibido, a menos que você tenha as mesmas atividades com o mesmo nome, mas em pacotes diferentes, MAS isso não funciona comigo, pois verifiquei tudo.
blueware
5

criar arquivo de armazenamento de chaves através da linha de comando

keytool -genkey -alias key_file_name.keystore -keyalg RSA -validity 1000000000000000 -keystore key_file_name.keystore

exportar apk através do Eclipse, clique com o botão direito do mouse em projeto Android Ferramentas Android> Exportar pacote de aplicativos assinados e forneça o local e a senha do keystore.

isso criará um apk assinado ao mesmo tempo em que o apk será zipaligned. E instalável.

Se você passar pela linha de comando para todos, algumas vezes poderá enfrentar o erro "Aplicativo não instalado". (O erro de aplicativo não instalado pode ocorrer não apenas ao usar a linha de comando. Também pode haver outros motivos)

Chinthaka Senanayaka
fonte
4

Eu tive o mesmo problema, ou seja, o aplicativo apareceu como sendo instalado, mas não foi iniciado quando o ícone foi tocado. Depois de um golpe de cabeça, descobri que havia estupidamente colocado 'android: exported = "false"' para minha atividade principal do iniciador no arquivo AndroidManifest .... Depois de removê-lo, o aplicativo foi iniciado.

mastDrinkNimbuPani
fonte
4

Meu problema foi semelhante ao do @Lunatikzx. Por causa da tag de permissão errada, que foi escrita como atributo do aplicativo:

<application
    android:permission="android.permission.WRITE_EXTERNAL_STORAGE"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:testOnly="false"
    android:debuggable="true">

O que o corrigiu para mim foi alterar a tag de permissão para separar a tag assim:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
SMGhost
fonte
4

O carregamento lateral de aplicativos de depuração para teste em um telefone físico funcionou de maneira confiável até que eu atualizei o telefone do Android Pie para o Android 10. Depois disso, o erro "Aplicativo não instalado" era exibido toda vez que eu tentava fazer o carregamento lateral do aplicativo.

Com base em um aviso no meu AndroidManifest.xml, mudei de ...

<application
    android:name=".App"
    android:allowBackup="true" ... />

para...

<application
    android:name=".App"
    android:allowBackup="false" ... />

Depois disso, fui capaz de carregar meu aplicativo de uma vez. Em seguida, encontrei o mesmo erro "Aplicativo não instalado" novamente. Ao allowBackupvoltar para true, ele funcionou novamente (pelo menos uma vez).

É óbvio pelo número de respostas e pela variação nas respostas que existem muitas razões para esse problema. Estou compartilhando isso, caso isso ajude outras pessoas.

Nelson Ferragut
fonte
Eu apenas tentei configuração android:allowBackup="true"para android:allowBackup="false"e ainda não sorte.
KRK
3

Verifique com a versão do Android.

Se você estiver instalando aplicativos que não sejam de mercado e com uma versão incompatível, receberá esse erro.

Ex: Aplicativo direcionado para 2.3.4 Seu dispositivo é 2.2. Você receberá esse erro.

Noby
fonte
onde nos arquivos de configuração gradle vejo a versão de destino do android? Eu não o vejo build.gradlenem no arquivo de manifesto do Android. A menos que compileSdkVersion(valor 23) ou minSdkVersion(16) ou targetSdkVersion(22) aponte de alguma forma para a configuração desejada. Minha galáxia está executando o Android 7.0 (e pedindo para atualizar, mas ainda não o permito). Não estou usando o estúdio android para construir meu aplicativo reagir nativo, mas simgradlew assembleRelease
pashute
3

O erro "Aplicativo não instalado" também pode ocorrer se o aplicativo foi instalado ou movido para o cartão SD e o cabo USB foi conectado, fazendo com que o cartão SD seja desmontado.

Desativar o armazenamento USB ou mover o aplicativo de volta para o armazenamento interno resolveria o problema nesse caso.

threeshinyapples
fonte
3

Eu também encontrei esse problema. Por favor, tente esta solução. Verifique se o nome do pacote do seu projeto é diferente do projeto anterior que já estava instalado no seu telefone celular. Eu acho que eles têm conflitos em seus nomes. Isso funciona em mim.

joepadz
fonte
2
Isso funcionará, mas não é a melhor solução, pois você terá milhões de aplicativos instalados. Veja algumas das outras respostas acima.
Astra Bear
3

Você também pode encontrar esse problema porque o fabricante do dispositivo não licenciou os aplicativos comerciais do Google, como Play Store, YouTube, Google Maps, etc. Siga esta resposta para resolver o problema.

Bobs
fonte
3

Aparentemente, isso também pode ser causado pela renomeação do APK antes de instalá-lo. Eu queria reduzir a quantidade de digitação que os usuários precisavam fazer para obter o aplicativo em nosso site, encurtando o nome do arquivo. Depois disso, eles não conseguiram instalá-lo.

Depois que voltei ao nome do arquivo original usado ao criar e assinar o pacote, fui capaz de atualizar o aplicativo instalado.

Michael Todd
fonte
Acho que durante a primeira vez que instalei, mudei o nome. Agora o padrão (app_release.apk) não é instalado. Talvez eu tente mudar ... hummm.
Pashute19 /
3

Usando o Android Studio, eu já havia instalado a versão de depuração não assinada do APK ( Build> Build APK ) e tive que desinstalá-lo antes de instalar a versão assinada ( Build Variants> Build Variant: release , Build> Generate Signed APK ).

Mrts
fonte
1
Acabei de perder duas horas com o mesmo problema. Meu aplicativo exibe a versão, por exemplo. "3.5.6", mas não mostra se é uma versão de depuração ou lançamento. Estive mexendo com muitos arquivos diferentes e perdi a noção de onde estava, e tentei atualizar um apk de depuração com um apk de lançamento. Eu acho que o Android costumava mostrar uma mensagem como "assinaturas de arquivos conflitantes", mas agora (pizza, 9.0) você obtém o "aplicativo não instalado", sem opção para encontrar o motivo. Uma lição dolorosa!
Stephen Hosking
3

para mim, a causa foi que eu tinha várias versões usando diferentes variantes de versão no mesmo telefone:

insira a descrição da imagem aqui

o que aconteceu foi que algumas dessas construções foram construídas por mim , outra foi enviada a mim por outro desenvolvedor .. tentar instalar os desenvolvedores enquanto eu tinha outras compilações (construídas por mim) causou o erro acima.

então a correção foi simples: delete todas as compilações do meu telefone (independentemente da variante de compilação) .. instale o apk enviado pelo meu colega .. e funcionou como um encanto

abbood
fonte
tive o mesmo problema, eu acho que a solução é sempre sinal constrói ao usar sabores
Nickmccomb
3

Eu enfrentei um problema semelhante hoje e no começo eu pensei que era o meu cartão SD que o corrompia. Depois de pesquisar e pesquisar, percebi que não selecionava a assinatura do jar v1, que é para dispositivos mais antigos que o Android 7.0 Nougat, então eu apliquei os dois essas assinaturas, selecionando as duas caixas de seleção e gerando um apk assinado e funcionou.

insira a descrição da imagem aqui

Link para a solução Android - Erro no aplicativo não instalado ao instalar um APK assinado - Como corrigir

Nelson Katale
fonte
Isso me ajudou em um dispositivo com Android 6
Stefan Zhelyazkov
Estou feliz que esta resposta tenha ajudado a resolver o problema. @ StefanZhelyazkov
Nelson Katale
2

Isso também pode ocorrer ao criar um widget da tela inicial e o arquivo XML do widget possui uma Atividade incorreta especificada em sua android:configurepropriedade.

TalkLittle
fonte