O INSTALL_FAILED_INSUFFICIENT_STORAGE
erro é a desgraça da vida de todo desenvolvedor de Android. Isso acontece independentemente do tamanho do aplicativo ou da quantidade de armazenamento disponível. A reinicialização do dispositivo de destino corrige o problema brevemente, mas ele volta em breve. Existem centenas (senão milhares) de postagens no quadro de mensagens de pessoas perguntando por que o problema ocorre, mas o pessoal do Google está frustrantemente silencioso sobre o assunto.
Existe uma solução simples. Se o seu dispositivo de teste está sendo executado Android 2.2 ou posterior, em seguida, adicione o android:installLocation
atributo de arquivo de manifesto do seu aplicativo, com o valor "preferExternal"
. Isso forçará a instalação do aplicativo no armazenamento externo do dispositivo, como o cartão SD do telefone.
Por exemplo:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.andrewsmith.android.darkness"
android:installLocation="preferExternal"
Isso é mais um curativo do que uma correção, e pode não ser o ideal se você quiser que o aplicativo final seja instalado na memória interna do dispositivo. Mas pelo menos isso tornará o processo de desenvolvimento muito menos frustrante.
fonte
Respostas:
Esta é apenas uma solução temporária e não uma correção real.
Depois de ter acontecido comigo e sem estar satisfeito com as respostas atuais, fui trabalhar tentando descobrir a partir da fonte do AOSP. Eu encontrei uma solução REAL .
Explicação
Primeiro, um pouco de (simplificado) histórico de como o Android instala e atualiza
O problema que muitos de nós enfrentamos ocorre quando o aplicativo é atualizado, mas a exclusão do APK antigo falha. O que por si só ainda não causa falha na atualização, mas causa a existência de dois arquivos APK
/data/app
.Na próxima vez que você tentar atualizar o aplicativo, o sistema não poderá mover seu arquivo temporário porque (1.apk) nem (2.apk) estão vazios. Como o arquivo # renameTo (File) não gera uma exceção, mas retorna um PackageManager booleano, não há como saber por que ele retorna INSTALL_FAILED_INSUFFICIENT_STORAGE, embora a falha não tenha nada a ver com a quantidade de espaço livre.
Solução
Corre:
OU
Desinstalar o aplicativo
Use seu método favorito para excluir AMBOS :
Certifique-se de que nada mais bloqueie instalações futuras de maneira semelhante. No meu caso, eu tinha um
/data/app-lib/<full.package.name>-1
diretório por aí! Nesse caso, uma instalação no cartão SD funcionou e uma mudança subseqüente na memória interna também. (Criando/data/app-lib/<full.package.name>
sem o-1
final.)Por que outras "soluções" funcionaram
O código para instalação no armazenamento externo é significativamente diferente e não apresenta os mesmos problemas
A desinstalação do aplicativo exclui apenas uma versão do arquivo APK
/data/app
. É por isso que você pode reinstalá-lo uma vez, mas não atualizá-lo.A quantidade de espaço livre em um emulador não é realmente relevante quando esse bug ocorre
fonte
function fix_app { adb shell "pm uninstall ${1}; rm -rf /data/app/${1}-*; su -c 'rm -rf /data/app-lib/${1}-*'" }
$ fix_app com.facebook.katana
android:installLocation="preferExternal"
mas em vão, nada está funcionando no meu caso. Estou usando um dispositivo real para teste. Qual é a solução nesse caso?/data/local/tmp
Você precisa aumentar a capacidade de memória do emulador do Android. Existem duas maneiras para isso:
Clique com o botão direito do mouse na raiz do seu projeto Android, vá em "Executar como" e depois em "Executar configurações ...". Localize o nó "Aplicativo Android" na árvore à esquerda e selecione seu projeto e vá para a guia "Destino" no lado direito da janela, procure o campo "Opções adicionais da linha de comando do emulador" (às vezes você ' será necessário aumentar a janela) e, finalmente, cole "-partition-size 1024" lá. Clique em Aplicar e depois em Executar para usar seu emulador.
Vá para Preferências do Eclipse e selecione “Launch” Add “-partition-size 1024” no campo “Default emulator option”. Clique em "Aplicar" e use seu emulador como de costume.
fonte
Obrigado por postar esta questão. Tenho algumas idéias adicionais que podem ajudar alguns desenvolvedores.
Estou depurando meu aplicativo em um dispositivo (não no emulador). O dispositivo tem 21 MB gratuitos
/data
(como revelado por "df" ao executar o "adb shell") e meu aplicativo tem apenas 5 MB. No entanto, descobri que, se eu excluísse outros aplicativos do dispositivo (sem reiniciar o telefone ou reiniciar o adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE desapareceria por um tempo e voltaria.Parece que a depuração do meu aplicativo de 5 MB requer mais 20 MB de espaço
/data
e, além disso, algo vazava toda vez que eu depurava o aplicativo.Então, eu fiz "adb shell" e listei o
/data
diretório INTEIRO comE olhei para a saída de 5000 linhas para ver para onde todo o espaço estava indo.
Descobri grandes quantidades de espaço desperdiçado no meu dispositivo no
/data/klog
diretório na forma de arquivos de log antigos de sessões de depuração de meses.Esses não eram meus arquivos de log: eles foram criados por alguma parte da infraestrutura do Android.
Excluí-os e salvei instantaneamente 58 MB, que não foram atribuídos no aplicativo Configurações a nenhum aplicativo específico. Eu tenho um dispositivo pequeno, então 58 MB é muito significativo (cerca de 40%).
Até o momento, não obtive o INSTALL_FAILED_INSUFFICIENT_STORAGE novamente depois de várias execuções. Vamos torcer para que esse seja o problema real, embora o OP sugira que seu dispositivo tenha muito espaço (mas não diga quanto).
Esperamos que alguns de vocês também consigam escapar do INSTALL_FAILED_INSUFFICIENT_STORAGE excluindo periodicamente
/data/klog/*
.Ou, você pode pelo menos fazer o
ls -a -l -R
em/data
para ver onde todo o seu espaço está indo, se de fato não há realmente alguns (oculto) problema de espaço.fonte
ls
o comando se tornals -alR
du
lista apenas pastas.O seguinte ajuda:
Abra um shell para o dispositivo
Navegue até o diretório temporário em que o APK recebido é copiado pela primeira vez
Listar os arquivos disponíveis e excluir conforme desejado
Até agora, isso foi confiável para mim em um dispositivo real.
EDIT: Isso acabou por não ser uma solução tão confiável quanto a acima.
Eu tentei várias soluções. Nada realmente ajudou. Finalmente eu encontrei um aplicativo chamado SD Maid . Isso ajudou.
Ele diz que a funcionalidade é limitada em dispositivos não raiz. O meu está enraizado, então seria bom ver as pessoas ouvirem eficazmente nesses cenários e, se foi apenas por acaso que funcionou para mim (é um problema imprevisível).
NOTA: Não tenho nada a ver com o aplicativo. Apenas encontrei com uma pesquisa.
fonte
Eu o resolvi incluindo a tag
android:installLocation="auto"
interna<manifest>
no arquivo AndroidManifest.xml.fonte
Error: ADB exited with exit code 1 adb: failed to install build\app\outputs\apk\app.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE] Error launching application on Android SDK built for x86.
Eu adicionei uma linha adicional ao arquivo de manifesto do aplicativo, que é
android:installLocation="preferExternal"
. usando essa linha, ele força a instalação do aplicativo no armazenamento externo. veja o exemplo abaixo,fonte
Um problema relacionado no emulador é quando não há mais espaço na
/data
partição.Por exemplo,
Aqui está uma amostra de exibição do
/data/app
diretório:Eu removi os arquivos APK extras . Parece que a cada instalação, você obtém um novo arquivo APK. Basta remover os arquivos APK extras.
Por exemplo,
fonte
No meu caso, a falha foi causada pelo
com.android.providers.media
aplicativo. Eu enfrentei isso no emulador android x86. O que eu fiz:Muito pouco espaço livre no
/data
Quase tudo foi consumido por um único aplicativo! É aplicativo do sistema, por isso considero melhor não excluí-lo. Em vez disso, limpei os dados do aplicativo.
O disco foi limpo e o aplicativo foi instalado com sucesso.
fonte
Sinto-me um pouco estranho ao escrever isso, mas não tenho 100% de certeza de que isso não seja verdade em alguns casos (funcionou para mim). Se você teve os seguintes sintomas:
Em seguida, tente o seguinte:
Desconectei o meu telefone e o deixei descansar por TODO O DIA. Minha bateria acabou um pouco. Depois disso, reconectei e comecei a depurar novamente. Tudo funcionou bem desta vez! E eu quero dizer realmente MUITO bem, como antes.
É possível que esse erro ocorra devido a algum hardware relacionado à bateria ? Ainda parece estranho pensar dessa maneira, mas agora continuo desconectando meu telefone de vez em quando (e durante a noite) e o problema não voltava.
fonte
Respondendo ao primeiro post deste tópico ...
Sintoma: Alguns aplicativos não são instalados, dizendo que não há espaço e, na realidade, há muito espaço livre no armazenamento interno e externo !!! Solução: desabilite a instalação externa por padrão.
Configurando a instalação externa por padrão com isto:
Torna a instalação impossível em muitos aplicativos que não podem ser instalados externamente (como adblock + mais ou menos)
Então a solução é
Ou
fonte
Eu tentei o seguinte:
Verifique se funciona da mesma forma com você.
fonte
O Samsung Galaxy Ace anuncia 158 MB de armazenamento interno em suas especificações, mas os principais aplicativos e serviços consomem cerca de 110 MB (usei o gerenciador de tarefas no dispositivo para inspecionar isso). Meu aplicativo tinha 52 MB, porque tinha muitos recursos. Depois de excluir alguns deles com até 45 MB, o aplicativo conseguiu instalar sem problemas. O dispositivo ainda estava me alertando que o armazenamento interno estava quase cheio e que eu deveria desinstalar alguns aplicativos, apesar de ter apenas um aplicativo instalado.
Depois de instalar uma versão de lançamento do pacote .apk e depois desinstalá-lo, meu dispositivo exibe 99 MB de espaço livre; portanto, pode haver informações de depuração que atrapalham o dispositivo, afinal. Veja a resposta de Louis Semprini .
fonte
No Eclipse,
Run -- > Debug Configurations --> Select "target",
e selecione um destino de emulador preferido para iniciar.Abaixo disso "opções adicionais da linha de comando do emulador", adicione isto:
Depois, feche o emulador e clique no ícone de depuração, que iniciará o emulador preferido que você selecionou.
Espero que ajude...!
fonte
Android Virtual Device Manager
usuários. Você pode definir o tamanho da partição como 1024 como "Armazenamento Interno" que representedisk.dataPartion.size
Encontrei este problema com o meu novo Nexus 4 e um APK criado com o Adobe AIR. Eu já tinha o android: installLocation = "preferExternal" no meu manifesto. Percebi que também estava ligando
adb install
com a-s
opção (Instalar pacote no armazenamento em massa compartilhado, como sdcard.), Que parecia um exagero.A remoção do
-s
sinalizadoradb install
corrigiu o problema para mim.fonte
Como esse problema ainda existe, pensei em acrescentar algo à resposta do RacZo para fins de desenvolvimento. Se você não estiver usando o plug-in do Eclipse ou, por qualquer motivo, não tiver a fonte, mas apenas o .apk, poderá aumentar o tamanho da partição na linha de comando usando a mesma opção ao iniciar o emulador:
Tanto quanto sei, esta opção não está documentada no developer.android.com, então pensei em publicá-la aqui para que as pessoas possam encontrar esta solução.
fonte
avd
Me deparei com essa pergunta porque estava recebendo esse erro usando o Sideload Wonder Machine para instalar aplicativos no meu telefone real. O problema foi que eu tinha vários arquivos .apk no diretório / payload. Eu pensei que isso era algo suportado, mas quando removi todos, exceto um .apk, o erro foi resolvido.
fonte
Basta desinstalar o aplicativo do emulador na linha de comando ou ir para configurações e desinstalar o aplicativo. Isso impedirá a ocorrência do erro.
fonte
Se você estiver usando um dispositivo real, você simplesmente ficará sem memória interna. Basta acessar as configurações do Android -> Aplicativos e mover alguns aplicativos para o cartão SD ou desinstalar alguns aplicativos.
Se você estiver usando o emulador, consulte a resposta do RacZo .
fonte
Me deparei com o mesmo erro quando tentei instalar em lote cerca de 50 aplicativos no diretório do cartão SD usando o shell do ADB após uma atualização completa da ROM:
Alguns deles foram instalados, mas muitos falharam com o erro INSTALL_FAILED_INSUFFICIENT_STORAGE. Todos os aplicativos com falha tinham espaço em seu nome. Eu os renomeei em lote e tentei novamente. Tudo funcionou desta vez. Não reinicializei nada. Pode ser que esse não seja o problema que vocês estão enfrentando, mas isso pode ajudar alguém a pesquisar com o mesmo problema que eu enfrentei.
fonte
Solução de emulador
Abra seu
.Android
diretório. Geralmente no seu diretório pessoal. Em seguida, vá paraavd
e abra o diretório que possui o nome do avd que você deseja alterar.Agora edite o
config.ini
arquivo e adicione a seguinte linha ou modifique a seguinte linha:disk.dataPartition.size=1024
Onde
1024
está o tamanho que você gostaria de usar em MB. Salve o arquivo e inicie seu emulador comwipe user data
marcado. Seu emulador agora deve ter o novo tamanho.fonte
A solução é simples.
Abra o AVD Manager. Edite seu AVD.
Na seção de hardware, existem algumas propriedades listadas com "Novo ..." e "Excluir" à direita.
Pressione Novo. Selecione o tamanho da partição de dados. Defina como "512 MB" (o MB é necessário). E você terminou. se você ainda tiver problemas, aumente também o sistema e as partições de cache usando o mesmo método.
Está tudo documentado aqui: http://developer.android.com/guide/developing/devices/managing-avds.html
fonte
Certifique-se de não conectar seu dispositivo Android com USB ao tentar executar o emulador
fonte
Se você estiver executando seu aplicativo em um emulador, e se esse problema persistir, verifique seu gerenciador de notificações. Se ele mostrar um ícone e uma notificação sobre "A memória do telefone está cheia", significa que você já instalou tantos aplicativos no emulador. Desinstale vários aplicativos que você não deseja atualmente em "Configurações >> Gerenciar aplicativos >> Selecione Aplicativo >> Desinstalar".
Esse conjunto.
Agora, execute novamente o programa.
fonte
Recebi esse erro hoje, ao usar meu telefone para testar / depurar com o Eclipse.
Meu erro foi o uso do caractere especial norueguês ("æ", "ø", "å") no nome do aplicativo. Quando refatorei o nome do aplicativo (usando "o" em vez de "ø"), o aplicativo foi instalado corretamente.
Provavelmente não é o seu problema, mas pode ser uma nota para outras pessoas que estão recebendo o mesmo erro.
fonte
Depois de tentar tudo o mais neste segmento, descobri que meu próprio problema era porque o caminho para o arquivo .apk era muito longo. Então, eu fui para o diretório em que o .apk estava e fiz:
ao invés de
E funcionou ... instalado muito bem.
Só pensei que isso poderia ajudar outra pessoa.
fonte
Gambiarra:
Compile como 2.1 sem
android:installLocation="preferExternal"
.OK?
Compile como 2.2, incluindo
android:installLocation="preferExternal"
.Isso ainda será instalado na versão SDK menor que 8 (a tag XML é ignorada).
fonte
No meu caso, foi corrigido aumentando a memória estendida do eclipse, alterando o valor de -Xmx768m no eclipse.ini
fonte
Acabei desinstalando o aplicativo do dispositivo e depois reinstalando-o novamente no Eclipse. Esse é um problema que recebo o tempo todo no meu dispositivo desde o uso regular, mas hoje recebi essa mensagem do desenvolvimento.
fonte
Eu também enfrentei o mesmo problema e fiz uma "redefinição de dados de fábrica" e funcionou bem depois disso.
fonte
Eu não tinha acesso root no meu telefone e não estou preparado para o meu aplicativo ser instalado no cartão SD. 15 MB de espaço estão disponíveis
/data/
e meu aplicativo tem menos de 2 MB.Por um tempo eu passei; limpando o projeto Eclipse e reiniciando o telefone, mas eventualmente isso parou de funcionar (provavelmente após uma atualização).
A limpeza do cache do meu aplicativo resolveu o problema para mim e não requer a reinicialização do telefone ou a desinstalação do aplicativo.
Existem aplicativos no mercado que você pode usar para limpar o cache de vários aplicativos ao mesmo tempo. Procure por "limpo".
fonte