Solution pour installer L'erreur de stockage insuffisante échoué sur Android [fermé]

l'erreur INSTALL_FAILED_INSUFFICIENT_STORAGE est le fléau de la vie de chaque développeur Android. Il se produit indépendamment de la taille de l'application, ou combien de stockage est disponible. Redémarrer le périphérique cible corrige le problème brièvement, mais il revient bientôt. Il y a des centaines (si ce n'est des milliers) de messages affichés sur le babillard électronique par des gens qui se demandent pourquoi le problème se produit, mais les gens de Google se taisent de manière frustrante sur la question.

il y a une solution simple. Si votre appareil de test fonctionne sous Android 2.2 ou plus tard, ajoutez l'attribut android:installLocation au fichier manifeste de votre demande, avec la valeur "preferExternal" . Cela obligera l'application à être installé sur le stockage externe de l'appareil, comme la carte SD d'un téléphone.

par exemple:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.andrewsmith.android.darkness"
          android:installLocation="preferExternal"

c'est plus un pansement qu'un correctif, et il peut ne pas être idéal si vous voulez que votre application terminée à installer sur la mémoire interne de l'appareil. Mais cela rendra au moins le processus de développement beaucoup moins frustrant.

449
demandé sur Andrew Smith 2011-01-17 03:50:45

30 réponses

Ce n'est qu'une solution temporaire et pas une vraie solution.

après que cela m'est arrivé et n'étant pas satisfait des réponses actuelles je suis allé travailler j'essaie de trouver la source de L'AOSP. J'ai trouvé une solution réelle .

explication

tout d'abord, un peu de fond (simplifié) sur la façon dont Android installe et met à jour

La première fois qu'une application est installée:

  1. le APK le fichier est enregistré comme

    / data/app / -1.apk (1.apk)

quand l'application doit être mise à jour:

  1. La mise à jour du fichier APK est enregistré en tant que:

    /data/app / -2.apk, paragraphe 2.apk)

  2. la première version (1.apk) est supprimé.

Sur notre prochaine mise à jour(s):

  1. La nouvelle APK est enregistré en tant que (1.apk) et (2.apk) est supprimé (répéter pour toujours).

le problème que la plupart d'entre nous avons se produit lorsque l'application est mise à jour, mais la suppression de L'ancienne APK échoue. Qui lui-même ne provoque pas encore l'échec de la mise à jour, mais il provoque qu'il y a deux fichiers APK dans /data/app .

la prochaine fois que vous essayez de mettre à jour l'application le système ne peut pas déplacer son fichier temporaire parce que ni l'un ni l'autre (1.apk) ni l'alinéa 2.apk) sont vides. Puisque le fichier#renameTo (File) ne jette pas d'exception mais retourne plutôt un PackageManager booléen, il n'a aucun moyen de dire pourquoi il retourne INSTALL_FAILED_INSUFFICIENT_STORAGE même si l'échec n'a rien à voir avec la quantité de l'espace libre.

Solution

Run:

adb shell "pm uninstall <full.packge.name>"
adb shell "rm -rf /data/app/<full.package.name>-*"

OU

désinstaller l'application

utilisez votre méthode préférée pour supprimer les deux :

/ data / app/ < full.paquet.nom > -1.apk

/ data / app/ < full.paquet.nom > -2.apk

assurez-vous que rien sinon, bloque les futures installations de la même manière. Dans mon cas, j'avais un répertoire /data/app-lib/<full.package.name>-1 qui traînait! Dans ce cas, une installation sur la "carte SD a fonctionné, et un déplacement ultérieur vers la mémoire interne, aussi. (Création de /data/app-lib/<full.package.name> sans la fin de -1 .)

pourquoi d'autres " solutions "ont fonctionné

  • mêmes problèmes

  • désinstaller l'application ne supprime qu'une version du fichier APK dans /data/app . C'est pourquoi vous pouvez le réinstaller une fois, mais pas de mise à jour.

  • la quantité d'espace libre dans un émulateur n'est pas vraiment pertinente lorsque ce bug se produit

143
répondu gabcas 2015-02-12 09:09:41

vous devez augmenter la capacité de mémoire de L'émulateur Android. Il y a deux façons pour cela:

  1. cliquez avec le bouton droit de la souris sur la racine de votre projet Android, Allez à" Run As "puis allez à" Run Configurations...". Localisez le noeud "application Android" dans l'arbre à gauche, puis sélectionnez votre projet et allez à L'onglet" Cible " sur le côté droit de la fenêtre regarder vers le bas pour le champ "Options supplémentaires de ligne de commande de L'émulateur" (parfois vous aurez besoin pour rendre la fenêtre plus) et enfin coller "-partition-taille 1024". Cliquez sur Appliquer, puis exécutez pour utiliser votre émulateur.

  2. passez à Préférences D'Eclipse , puis sélectionnez" Lancer "ajouter"- partition-size 1024 "dans le champ" Default emulator option". Cliquez sur "Appliquer" et utilisez votre émulateur comme d'habitude.

98
répondu RacZo 2013-12-21 15:01:10

Merci d'avoir posté cette question. J'ai quelques idées supplémentaires qui peuvent aider certains développeurs.

je débogue mon application sur un périphérique (pas l'émulateur). L'appareil dispose de 21 Mo libres sur /data (comme révélé par" df "lors de la réalisation de" adb shell") et mon application est seulement 5 Mo. Cependant, je me suis rendu compte que si je supprimais d'autres applications sur le périphérique (sans redémarrer le téléphone ou redémarrer adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE disparaîtrait pendant un certain temps et puis revenir.

il semble donc que le débogage de mon application de 5 Mo nécessite plus de 20 Mo d'espace dans /data , et en plus quelque chose fuyait chaque fois que j'ai débogué mon application.

donc j'ai fait "adb shell" et j'ai listé tout le répertoire /data avec

cd /data
ls -a -l -R

Et j'ai regardé le 5000-sortie ligne pour voir où tout l'espace.

j'ai découvert de grandes quantités d'espace gaspillé sur mon appareil dans le /data/klog répertoire sous la forme de vieux fichiers de logs de plusieurs mois de sessions de débogage.

ce n'étaient pas mes fichiers log: ils ont été créés par une partie de L'infrastructure Android.

je les ai supprimés et ai instantanément sauvé 58 Mo qui n'a pas été attribué dans les Paramètres app à une application particulière. J'ai un petit appareil donc 58 Mo est très significatif (environ 40%).

Jusqu'à présent, je n'ai pas obtenu INSTALL_FAILED_INSUFFICIENT_STORAGE again after many runs. Espérons qu'était la vraie question, bien que l'OP suggère que son appareil avait beaucoup d'espace (mais ne le dis pas combien).

avec un peu de chance, certains d'entre vous pourront également échapper à INSTALL_FAILED_INSUFFICIENT_STORAGE en supprimant périodiquement /data/klog/* .

ou, vous pouvez au moins faire le ls -a -l -R dans /data pour voir où va tout votre espace, si en effet il y a vraiment) problème d'espace.

26
répondu Louis Semprini 2013-12-21 15:09:20

les aides suivantes:

  • ouvrir un réservoir du dispositif

    adb shell
    
  • naviguez vers le répertoire temp où L'APK entrant est copié pour la première fois

    cd /data/local/tmp
    
  • liste des fichiers disponibles et supprimer comme désiré

    rm * // use at your own risk, good practice to list files first
    

cela a été fiable pour moi jusqu'à présent sur un dispositif réel.


EDIT: il s'est avéré que ce n'était pas une solution aussi fiable que celle ci-dessus.

j'ai essayé un certain nombre de solutions. Rien de vraiment aidé. Finalement j'ai trouvé une application appelée SD Maid . Cela a aidé.

il est dit que la fonctionnalité est limitée sur les appareils non enracinés. Le mien est enracinée si il serait bon de voir entendre des gens efficaces, c'est dans ces scénarios et si c'était juste un hasard que cela a fonctionné pour moi (c'est un problème imprévisible de toute façon).

NOTE: Je n'ai rien à voir avec l'application. Viens de le trouver avec une recherche.

16
répondu Saad Farooq 2013-01-21 10:45:35

j'ai résolu en incluant les android:installLocation="auto" à l'intérieur <manifest> tag dans AndroidManifest.fichier xml.

15
répondu Steph 2014-02-27 11:51:03

j'avais ajouté une ligne supplémentaire au manifeste de la demande, soit android:installLocation="preferExternal" . en utilisant cette ligne, il oblige à installer l'application sur le stockage externe. voir l'exemple ci-dessous,

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nasir.phonegap"
    android:installLocation="preferExternal" >
14
répondu nasirkhan 2012-04-06 10:31:22

une question connexe sur l'émulateur est quand il n'y a plus d'espace dans la partition /data .

par exemple,

% adb shell df

Filesystem             Size   Used   Free   Blksize
/dev                   252M    32K   252M   4096
/mnt/asec              252M     0K   252M   4096
/mnt/obb               252M     0K   252M   4096
/system                154M   154M     0K   4096
/data                   64M    57M     6M   4096
/cache                  64M     1M    62M   4096

voici un exemple de vue du répertoire /data/app :

% adb shell ls -l /data/app

-rw-r--r-- system   system      19949 2011-10-12 17:09 CubeLiveWallpapers.apk
-rw-r--r-- system   system      27670 2011-10-12 17:09 GestureBuilder.apk
-rw-r--r-- system   system      34341 2011-10-12 17:09 SoftKeyboard.apk
-rw-r--r-- system   system      20151 2011-10-12 17:09 WidgetPreview.apk

j'ai supprimé les fichiers supplémentaires APK . Il semble à chaque installation que vous obtenez un nouveau fichier APK. Il suffit de supprimer les fichiers APK supplémentaires.

par exemple,

adb shell rm /data/app/com.brooklynmarathon.calendarapi2-1.apk
8
répondu Ralph Yozzo 2013-12-21 15:06:36

dans mon cas, l'échec a été causé par com.android.providers.media app. J'ai affronté ça sur l'émulateur android x86. Qu'est-ce que j'ai fait:

$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M   209M    14M   4096
....

espace libre trop faible sur /data

$ adb shell du /data
...
409870  /data/data/com.android.providers.media
...

presque tout a été consommé par application unique! C'est une application système, donc je préfère ne pas l'effacer. Au lieu de ça, j'ai nettoyé les données de l'application.

$ adb shell pm clear com.android.providers.media
Success
$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M     8M   215M   4096
...
Le disque

a été effacé et app installé avec succès.

7
répondu Sergey Fedorov 2014-06-16 14:21:54

je me sens un peu bizarre d'écrire cela, mais je ne peux pas être sûr à 100% que c'est pas vrai dans certains cas (cela a fonctionné pour moi). Si vous avez les symptômes suivants:

  • Vous avez travaillé à l'aide d'un dispositif physique (dans mon cas, le Samsung Galaxy Ace),
  • Vous avez été développer pour un couple de jours d'affilée,
  • Votre téléphone est connecté tout le temps le jour et la nuit.
  • vous avez commencé à avoir cette erreur après quelques jours, et ça a continué à empirer.
  • aucune parmi les autres réponses, a travaillé pour vous.
  • vous êtes aussi résigné que moi...

alors, essayez ceci:

  • Débranchez votre téléphone lorsque vous ne travaillez pas!

j'ai débranché mon téléphone et l'ai laissé reposer pour TOUTE LA JOURNÉE. Ma batterie s'est estompé un peu. Après cela, je l'ai reconnecté et j'ai recommencé à déboguer. Tout a bien fonctionné cette fois-ci! Et je veux dire vraiment très bien, comme avant.

est-il possible que cette erreur soit due à quelque chose matériel lié à la batterie ? Cela semble toujours bizarre de penser de cette façon, mais maintenant je continue à déconnecter mon téléphone de temps en temps (et pour la nuit) et le problème n'est pas revenu.

6
répondu wrygiel 2012-06-13 06:55:01

en réponse au tout premier message de ce sujet...

symptôme: certaines applications ne s'installent pas, en disant qu'il n'y a pas d'espace et en réalité il y a beaucoup d'espace libre sur le stockage interne et externe !!! Solution: désactiver l'installation externe par défaut.

réglage de l'installation externe par défaut avec ceci:

adb shell pm set-install-location 2

rend l'installation impossible sur de nombreuses applications qui ne peuvent pas s'installer à l'extérieur (comme adblock + ou so)

puis la solution est

adb shell pm set-install-location 0

ou

adb shell pm set-install-location 1

0: auto (if one is full - or irrelevant !!! - it select the other)
1: internal
2: external
5
répondu dan 2013-03-23 11:37:05

Samsung Galaxy Ace annonce 158 Mo de stockage interne dans ses spécifications, mais les applications et services de base consomment environ 110 Mo de cela (j'ai utilisé le Gestionnaire des tâches sur l'appareil pour inspecter ce). Mon application était de 52 Mo, parce qu'elle avait beaucoup d'atouts. Une fois que j'ai supprimé certains de ces jusqu'à 45 Mo, l'application a réussi à installer sans problème. L'appareil m'avertissait encore que le stockage interne était presque plein, et je devrais désinstaller certaines applications, même bien que je n'ai installé qu'une seule application.

après l'installation d'une version de la .APK bundle et ensuite la désinstaller, mon périphérique affiche 99 Mo d'espace libre, donc il pourrait être déboguer des informations encombrant le périphérique après tout. Voir réponse de Louis Semprini .

5
répondu snez 2017-05-23 12:26:33

Dans Eclipse,

Run -- > Debug Configurations --> Select "target", et sélectionnez une cible d'émulateur à lancer.

puis au-dessous de" options supplémentaires de ligne de commande de l'émulateur", ajouter ceci:

-partition-taille 1024

fermez alors l'émulateur et cliquez sur l'icône de débogage, qui lancera l'émulateur préféré que vous avez sélectionné.

enter image description here

J'espère que ça aidera...!

4
répondu Mehul Patel 2012-07-17 07:29:24

j'ai rencontré ce problème avec mon nouveau Nexus 4 et un APK construit avec Adobe AIR. J'avais déjà android:installLocation="preferExternal" dans mon manifeste. J'ai remarqué que j'appelais aussi adb install avec l'option -s (installer le paquet sur le stockage de masse partagé tel que sdcard.) qui semblait exagéré.

La mention

qui enlevait le drapeau -s de la mention adb install a réglé la question pour moi.

3
répondu Sarah Northway 2013-08-09 18:15:12

je suis tombé sur cette question parce que je recevais cette erreur en utilisant le Sideload Wonder Machine pour installer des applications sur mon téléphone réel. J'ai trouvé le problème était que j'avais plusieurs .fichiers apk dans le répertoire /payload. Je pensais que c'était quelque chose qui était soutenu, mais quand j'ai enlevé tous sauf un .apk, l'erreur a disparu.

2
répondu KC Baltz 2011-04-14 16:57:52

il suffit de désinstaller l'application à partir de l'émulateur soit à partir de la ligne de commande ou aller aux paramètres et désinstaller l'application. Cela arrêtera l'erreur de venir.

2
répondu Nagendra 2012-09-23 13:30:11

si vous utilisez un vrai appareil, vous n'avez plus de mémoire interne. Il suffit d'aller à Paramètres Android -> Applications , et déplacer certaines applications à la carte SD ou désinstaller certaines applications.

si vous utilisez l'émulateur, voir réponse de RacZo .

2
répondu marmor 2017-05-23 12:18:24

j'ai rencontré la même erreur lorsque j'ai essayé d'installer par lots environ 50 applications dans le répertoire carte SD en utilisant le ADB shell après une mise à jour complète du ROM:

for x in *.apk; do pm install -r $x; done

certains d'entre eux ont été installés, mais beaucoup ont échoué avec L'erreur INSTALL_FAILED_INSUFFICIENT_STORAGE. Toutes les applications avaient échoué espace dans leur nom. Je les ai renommés et j'ai essayé à nouveau. Tout a bien fonctionné cette fois. Je n'ai pas redémarré ou quoi que ce soit. Peut-être que c'est pas le problème auquel vous êtes confrontés, mais ça pourrait aider quelqu'un qui cherche avec le même problème que moi.

2
répondu TechNetizen 2013-12-21 15:13:19

Émulateur solution

ouvrez votre répertoire .Android . Habituellement dans votre répertoire personnel. Puis allez dans avd et ouvrez le répertoire qui a le nom de l'avd que vous souhaitez changer.

éditez maintenant le fichier config.ini et ajoutez la ligne suivante ou modifiez la ligne suivante:

disk.dataPartition.size=1024

1024 est la taille que vous souhaitez utiliser en MO. Enregistrez le fichier puis démarrez votre émulateur avec wipe user data coché. Votre émulateur devriez maintenant avoir la nouvelle taille.

1
répondu prolink007 2012-02-09 20:02:17

la solution est simple.

ouvrez le directeur AVD. Modifiez votre AVD.

dans la section hardware, il y a des propriétés listées avec" New..."et "Supprimer" à droite de celui-ci.

Appuyez Sur Nouveau. Sélectionnez la taille de la Partition de données. Réglé sur "512" (MO). Et vous avez terminé. si vous avez encore des problèmes, augmentez les partitions de votre système et de votre cache en utilisant la même méthode.

tout est documenté ici: http://developer.android.com/guide/developing/devices/managing-avds.html

1
répondu Zaid Daghestani 2012-03-16 07:47:46

assurez-vous de ne pas connecter votre appareil android avec usb tout en essayant d'exécuter l'émulateur

1
répondu Sharpless512 2012-04-20 12:03:18

si vous utilisez votre application sur un émulateur, et si ce problème persiste, vérifiez votre gestionnaire de notification. Si elle vous montre une icône et une notification sur "la mémoire du téléphone est pleine", cela signifie que vous avez déjà installé tant d'applications sur votre émulateur. Désinstallez plusieurs applications que vous ne voulez pas actuellement à partir de "Paramètres >> Gérer L'Application >> Sélectionner L'Application >> Désinstaller".

À Cet Ensemble.

Maintenant, exécutez de nouveau le programme.

1
répondu Rax 2012-04-23 14:55:01

j'ai eu cette erreur aujourd'hui, en utilisant mon téléphone pour tester/déboguer avec Eclipse.

mon erreur a été que j'ai utilisé le caractère spécial Norvégien ("æ"," ø"," å") dans le nom de la demande. Lorsque j'ai modifié le nom de l'application (en utilisant "o" au lieu de "ø") l'application a été installée correctement..

probablement pas votre problème, mais pourrait être une note pour d'autres personnes ayant la même erreur.

1
répondu EirikO 2013-02-16 20:44:56

Après avoir essayé tout le reste dans ce fil, j'ai trouvé mon problème était que le chemin à la .le dossier apk était trop long. Donc j'ai cd'ed à l'annuaire où le .apk était dans et a fait:

cd /Very/Long/Path/To/Package/
adb install mypackage.apk

au lieu de

adb install /Very/Long/Path/To/Package/mypackage.apk

et ça a marché...installé juste fine.

j'ai pensé que ça pourrait aider quelqu'un d'autre.

1
répondu Alma 2013-06-08 00:46:50

j'ai essayé la suivante:

  • redémarré mon appareil
  • supprimé précédent APK
  • Reconstruire mon APK
  • désinstaller ma copie précédente dans le périphérique
  • reinstaller

vérifiez si cela fonctionne de même avec vous.

1
répondu CoolRunning 2013-12-21 15:13:38

comme cette question existe toujours, j'ai pensé ajouter quelque chose à réponse de RacZo à des fins de développement. Si vous n'utilisez pas le plugin Eclipse ou pour quelque raison que ce soit, vous n'avez pas la source, mais juste le .apk, vous pouvez augmenter la taille de la partition à partir de la ligne de commande en utilisant la même option lorsque vous lancez l'émulateur:

emulator -avd <emulator name> -partition-size 1024

pour autant que je sache, cette option n'est pas documentée à developer.android.com je l'ai posté ici pour que les gens trouvent cette solution.

1
répondu DrBwaa 2017-05-23 12:34:45

dans mon cas, il a été corrigé en augmentant la mémoire étendue d'eclipse, en changeant la valeur de - Xmx768m dans eclipse.ini

0
répondu santhosh 2012-10-27 05:35:28

j'ai fini par désinstaller l'application de l'appareil et par la réinstaller dans Eclipse. C'est un problème que je reçois tout le temps sur mon appareil de l'utilisation régulière, mais aujourd'hui, j'ai reçu ce message de développement.

0
répondu Roberto 2013-05-14 05:07:34

solution de contournement:

compiler comme 2.1 sans android:installLocation="preferExternal" .

OK?

compilé comme 2.2 y compris android:installLocation="preferExternal" .

cela s'installera encore sur la version SDK inférieure à 8 (la balise XML est ignorée).

0
répondu Team Pannous 2013-12-21 14:59:51

moi aussi j'ai fait face au même problème, et j'ai fait une "réinitialisation de données D'usine", et ça a bien fonctionné après ça.

0
répondu Monish 2013-12-21 15:01:44

Je n'avais pas l'accès root sur mon téléphone et je ne suis pas préparé pour mon application à être installé sur la carte SD. 15 Mo d'espace est disponible sur /data/ et ma demande est inférieure à 2 Mo.

pendant un certain temps, je me suis débrouillé; nettoyer le projet Eclipse et redémarrer le téléphone, mais finalement cela a cessé de fonctionner (probablement après une mise à jour).

nettoyer mon cache d'application a résolu le problème pour moi et ne nécessite pas redémarrage du téléphone ou désinstallation de l'application.

il y a des applications sur le marché que vous pouvez utiliser pour vider le cache de plusieurs applications à la fois. Recherche pour "nettoyer".

0
répondu J0hnG4lt 2013-12-21 15:10:19