O que isso significa: Falha [INSTALL_FAILED_CONTAINER_ERROR]?

129

Tento implantar meu aplicativo e às vezes recebo este erro:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

Tentei pesquisar no Google, mas não encontrei o que significa o erro ou o que é causado por ele. Eu implanto via IDE (IntelliJ), o arquivo é copiado no dispositivo para o / data / local / tmp (Huawei Ideos não raiz, executando o 2.2), mas o gerenciador de pacotes não parece gostar. Antes de instalar o apk, eu já removi o aplicativo do dispositivo com antecedência. Também verifiquei se não havia um arquivo antigo em / data / local / tmp no dispositivo. Ainda estou recebendo esse erro agora. O pacote deve ser assinado com a chave de depuração, pois eu implanto via IDE 'executando' o aplicativo.

$ pwd 
/data/local/tmp 
$ ls -l 
-rw-rw-rw- shell    shell    17257686 2011-04-21 20:31 
com.company.shop 
$ pm install -r com.company.shop 
        pkg: com.company.shop 
Failure [INSTALL_FAILED_CONTAINER_ERROR]

O que significa e como resolvê-lo?

Editar / Atualizar:

Eu posso evitar o erro ao não permitir que o aplicativo seja instalado no sdcard, definindo

android:installLocation="internalOnly"

no manifesto. Tudo bem para desenvolvimento, mas para produção, não é exatamente o que eu quero - já que meu aplicativo é bastante grande com 17 MB; portanto, eu prefiro que esteja no sdcard. Como poder instalá-lo na memória externa sem fazer root (já que essa é a única maneira de excluir /mnt/secure/asec/smdl2tmp1.asec, que também parece ser uma solução).

Mathias Conradt
fonte
Apenas por curiosidade: você pode instalá-lo pm install -f com.company.shop?
Jakub Czaplicki
Há diversas variações sobre o INSTALL_FAILED_CONTAINER_ERRORproblema, para alguns deles ver a minha resposta aqui: stackoverflow.com/a/30343659/313113
Bitek
Para mim, era tão simples quanto o emulador "ficar sem espaço" (???) e eu tive que limpar dados no AVD Manager.
EpicPandaForce

Respostas:

44

remova este arquivo do seu dispositivo

/mnt/secure/asec/smdl2tmp1.asec

Editar / Atualizar por Mathias Conradt (OP):

Se você não tem acesso root, é necessário montar o sdcard e removê-lo via pc:

/.android_secure/smdl2tmp1.asec
Mathias Conradt
fonte
3
mas meu dispositivo não está enraizado e, olhando para a pasta segura, somente o root tem acesso. Eu era capaz de executar o aplicativo antes, só agora há algum tempo, não é possível executá-lo e isso gera o erro acima.
Mathias Conradt
1
btw - há também uma pasta / mnt / asec / que eu posso alcançar com os não-raiz, mas isso é vazio
Mathias Conradt
3
@Jazz Isso aconteceu comigo hoje. Eu realmente gostaria de saber por que / do que se trata. Excluir arquivo manualmente? Por que o eclipse não pôde fazer isso? Isso é um bug do telefone?
Erik
1
Estou tendo esse problema. Não consigo ver os arquivos / pastas usando o meu Mac. existe alguma outra maneira?
SleepNot
14
Isso funcionou, mas você poderia explicar por que funciona? O que há no misterioso arquivo smdl2tmp1.asec?
Alexander Pacha
222

Altere o local de instalação de

android:installLocation="preferExternal"

para dentro

android:installLocation="auto"

no AndroidManifest.xml do seu projeto.

Rene
fonte
12
Foi isso que fez por mim. Obrigado!
Jim McKeeth
Sim, isso fez isso por mim também. Obrigado!
Senthil Kumaran 08/12/12
22
mas eu quero preferirExternal ...? Como consertar isto?
Aiden Fry
2
@Sameer Nope, isso também ocorre em dispositivos reais - mas é inconsistente. Os principais são os dispositivos HTC Desire S e Nexus.
Aiden Fry
1
@AidenFry Use a solução user2445968 se quiser manter o preferExternal.
LG
32

Se você estiver usando um emulador, edite-o e adicione mais memória. Eu tive um problema como este e tudo o que fiz foi editar a memória do meu AVD de 200 MB para 1000 MB e o problema parece desaparecer ... Boa sorte.

Dan
fonte
Sim, aconteceu o mesmo comigo. Polegares para cima :)
NaXir
Além de aumentar a memória, também tive que limpar os dados do usuário e somente depois disso o novo tamanho foi refletido e o erro desapareceu.
Varun 24/03
2
Posso supor que você se refere ao armazenamento interno, e não à RAM?
Jonny
1
Aumentei a memória do meu AVD e limpei os dados !! e agora está funcionando.
Conheça Vora
7

Isso significa que houve uma instalação anterior que estava corrompida. Se você instalar no externo, sugiro que você formate o cartão SD e tente novamente.

dalbator
fonte
6

Eu tive esse erro repetidamente. Eu descobri que a maneira mais simples de evitar o erro completo é simplesmente formatar o cartão SD. Usando as ferramentas internas do telefone ou emuladores. Eu descobri que os cartões SD gerados automaticamente ou até mesmo fazendo seu próprio sdcard.iso falham e causam esse erro, a menos que sejam formatados pelas ferramentas internas do Android.

user2445968
fonte
1
Bem-vindo ao Stack Overflow! Obrigado pelo seu post! Por favor, não use assinaturas / slogans em suas postagens. Sua caixa de usuário conta como sua assinatura e você pode usar seu perfil para postar qualquer informação sobre você. FAQ sobre assinaturas / slogans
Andrew Barber
Resolvido isso com a mesma solução, pois o problema é causado por um erro ao gravar no SDCard, é melhor que o trabalho em geral do René se você deseja manter o android: installLocation = "preferExternal".
LG
Confirme. Erro no SD foi a razão para mim. Eu testei removendo "prefiro externo" do manifesto - está instalado ok.
djdance
4

Para mim, isso foi causado pela falta de espaço no cartão SD do meu emulador. Eu estava trabalhando com um projeto bastante grande e achei que 40 mb eram suficientes, mas mudei para 200 mb e o problema foi resolvido.

noisecapella
fonte
4

Tive o mesmo erro com vários .apkno Cyanogenmod 12.1 (Android 5.1.1) no meu Note 8 com uma segunda partição para o Link2SD. Consegui instalar os aplicativos forçando a instalação via adb como root:

adb root
adb install -f myapp.apk
Tobi G.
fonte
3

Recebi esta mensagem de erro do Android 5.0.1. Alterei o local de instalação preferido para "Cartão SD removível" em Configurações-> Aplicativos-> Local de instalação preferido.

Alterei a opção novamente para "Deixe o sistema decidir" e a mensagem de erro desapareceu.

nyxee
fonte
1
Esta parecia ser a solução para mim executando o Cyanogenmod 12 (Android 5.0.2). Essa abertura parecia estar forçando o aplicativo a instalar no cartão SD removível, mesmo que o manifesto do aplicativo especifique que ele não pode ser instalado lá.
Sam
1

Para mim, era o idioma do dispositivo. Alterei o idioma para o árabe para testar minha inscrição. Então eu recebi esse erro. Revertendo o idioma fez o truque.

Elyess Abouda
fonte
1

android: installLocation = "auto" funciona .. !!

Caso contrário, verifique uma vez o tamanho do espaço de armazenamento externo. [Memória disponível> tamanho do aplicativo] Se o espaço de armazenamento não for suficiente, também será gerado este erro.

Mallikarjungouda Annigeri
fonte
0

Eu tive um problema semelhante com o emulador. Acabou quando mudei o tipo de CPU do emulador de ARM para Intel.

Wytas
fonte
Isso realmente não ajuda o OP com o problema, pois a preocupação deles é fazê-lo funcionar em dispositivos do mundo real, muitos dos quais ainda usam CPUs ARM.
James Green,
0

em algumas situações, remover o libs/android-support-v4.jargera esse erro.

Amir Saniyan
fonte
0

Para mim, uma desinstalação de vários aplicativos resolveu o problema. Quando um armazenamento local possui memória suficiente, a implantação do APK é concluída com êxito. Mas geralmente eu simplesmente reinicio um gadget e a instalação é concluída. Além disso, alguns programas como o Clean Master podem ajudar. Simplesmente limpe os processos inúteis e feche os programas com o Clean Master e obtenha memória suficiente.

CoolMind
fonte
0

A reinicialização do meu dispositivo corrigiu o problema para mim.

theOzmic
fonte