L' INSTALL_FAILED_INSUFFICIENT_STORAGE
erreur est le fléau de la vie de chaque développeur Android. Cela se produit indépendamment de la taille de l'application ou de la quantité de stockage disponible. Le redémarrage du périphérique cible résout brièvement le problème, mais il revient rapidement. Il y a des centaines (sinon des milliers) de messages sur le babillard électronique de personnes demandant pourquoi le problème se produit, mais les gens de Google sont frustrants et silencieux sur la question.
Il existe une solution de contournement simple. Si votre appareil de test exécute Android 2.2 ou une version ultérieure, ajoutez l' android:installLocation
attribut au fichier manifeste de votre application, avec la valeur "preferExternal"
. Cela forcera l'application à être installée 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"
Il s'agit plus d'un pansement que d'un correctif, et il peut ne pas être idéal si vous souhaitez que votre application terminée s'installe sur la mémoire interne de l'appareil. Mais cela rendra au moins le processus de développement beaucoup moins frustrant.
la source
Réponses:
Il s'agit uniquement d'une solution de contournement temporaire et non d'une véritable solution.
Après que cela m'arrive et que je n'étais pas satisfait des réponses actuelles, je suis allé travailler pour essayer de le comprendre à partir de la source AOSP. J'ai trouvé une VRAIE solution.
Explication
Tout d'abord, un peu de contexte (simplifié) sur la façon dont les installations et les mises à jour d' Android
Le problème que la plupart d'entre nous rencontrons se produit lorsque l'application est mise à jour, mais la suppression de l'ancien APK échoue. Ce qui lui-même ne provoque pas encore l'échec de la mise à jour, mais 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 car ni (1.apk) ni (2.apk) ne sont vides. Étant donné que File # renameTo (File) ne génère pas d'exception mais renvoie à la place un PackageManager booléen, il n'a aucun moyen de dire pourquoi il renvoie INSTALL_FAILED_INSUFFICIENT_STORAGE même si l'échec n'a rien à voir avec la quantité d'espace libre.
Solution
Courir:
OU
Désinstaller l'application
Utilisez votre méthode préférée pour supprimer LES DEUX :
Assurez-vous que rien d'autre ne bloque les futures installations de la même manière. Dans mon cas, j'avais un
/data/app-lib/<full.package.name>-1
répertoire 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 également. (Créer/data/app-lib/<full.package.name>
sans la-1
fin.)Pourquoi d'autres "solutions" ont fonctionné
Le code d'installation sur un stockage externe est significativement différent ce qui ne pose pas les mêmes problèmes
La désinstallation de l'application supprime uniquement une version du fichier APK dans
/data/app
. C'est pourquoi vous pouvez le réinstaller une fois, mais pas le mettre à jour.La quantité d'espace libre dans un émulateur n'est pas vraiment pertinente lorsque ce bogue se produit
la source
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"
mais en vain, rien ne fonctionne dans mon cas. J'utilise un véritable appareil pour les tests. Quelle est la solution dans ce cas?/data/local/tmp
Vous devez augmenter la capacité de mémoire de l'émulateur Android. Il y a deux façons pour cela:
Cliquez avec le bouton droit sur la racine de votre projet Android, accédez à "Exécuter en tant que", puis accédez à "Exécuter les configurations ...". Localisez le nœud "Application Android" dans l'arborescence à gauche, puis sélectionnez votre projet et accédez à l'onglet "Cible" sur le côté droit de la fenêtre, recherchez le champ "Options d'émulation de ligne de commande supplémentaires" (parfois vous ' ll faudra agrandir la fenêtre) et enfin y coller "-partition-size 1024". Cliquez sur Appliquer puis sur Exécuter pour utiliser votre émulateur.
Accédez aux Préférences d' Eclipse , puis sélectionnez «Lancer» Ajouter «-partition-size 1024» dans le champ «Option d'émulateur par défaut». Cliquez sur «Appliquer» et utilisez votre émulateur comme d'habitude.
la source
Merci d'avoir posté cette question. J'ai quelques informations supplémentaires qui peuvent aider certains développeurs.
Je débogue mon application sur un appareil (pas l'émulateur). L'appareil dispose de 21 Mo d'espace libre
/data
(comme l'a révélé "df" lorsque vous faites "adb shell") et mon application ne fait que 5 Mo. Cependant, j'ai constaté que si je supprimais d'autres applications sur l'appareil (sans redémarrer le téléphone ni redémarrer adbd), INSTALL_FAILED_INSUFFICIENT_STORAGE disparaîtrait pendant un certain temps, puis reviendrait.Il semble donc que le débogage de mon application de 5 Mo nécessite plus de 20 Mo d'espace
/data
, et en plus quelque chose fuyait à chaque fois que je déboguais mon application.J'ai donc fait "adb shell" et répertorié le
/data
répertoire ENTIER avecEt j'ai regardé la sortie de 5000 lignes pour voir où allait tout l'espace.
J'ai découvert de grandes quantités d'espace perdu sur mon appareil dans le
/data/klog
répertoire sous la forme d'anciens fichiers journaux de sessions de débogage vieilles de plusieurs mois.Ce n'étaient pas mes fichiers journaux: ils ont été créés par une partie de l'infrastructure Android.
Je les ai supprimés et j'ai instantanément économisé 58 Mo qui n'étaient attribués dans l'application Paramètres à aucune application particulière. J'ai un petit appareil donc 58 Mo est très important (environ 40%).
Jusqu'à présent, je n'ai pas récupéré INSTALL_FAILED_INSUFFICIENT_STORAGE après plusieurs exécutions. Espérons que c'était le vrai problème, bien que l'OP suggère que son appareil avait beaucoup d'espace (mais n'a pas dit combien).
J'espère que certains d'entre vous pourront également échapper à INSTALL_FAILED_INSUFFICIENT_STORAGE en les supprimant périodiquement
/data/klog/*
.Ou, vous pouvez au moins faire l'
ls -a -l -R
in/data
pour voir où va tout votre espace, s'il y a vraiment un problème d'espace (caché).la source
ls
commande deviennels -alR
du
répertorie uniquement les dossiers.Les aides suivantes:
Ouvrez un shell sur l'appareil
Accédez au répertoire temporaire dans lequel l'APK entrant est copié pour la première fois
Répertoriez les fichiers disponibles et supprimez comme vous le souhaitez
Jusqu'à présent, cela a été fiable pour moi sur un appareil réel.
EDIT: Cela s'est avéré ne pas être une solution aussi fiable que celle ci-dessus.
J'ai essayé un certain nombre de solutions. Rien n'a vraiment aidé. Enfin, j'ai trouvé une application appelée SD Maid . Cela m'a aidé.
Il indique que la fonctionnalité est limitée aux appareils non rootés. Le mien est enraciné, donc ce serait bien de voir des gens parler de son efficacité dans ces scénarios et si ce n'était qu'un coup de chance qu'il a fonctionné pour moi (c'est un problème imprévisible de toute façon).
REMARQUE: je n'ai rien à voir avec l'application. Je viens de le trouver avec une recherche.
la source
Je l'ai résolu en incluant la balise
android:installLocation="auto"
inside<manifest>
dans le fichier AndroidManifest.xml.la source
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.
J'avais ajouté une ligne supplémentaire au fichier manifeste de l'application, qui est
android:installLocation="preferExternal"
. en utilisant cette ligne, il force à installer l'application sur le stockage externe. voir l'exemple ci-dessous,la source
Un problème connexe sur l'émulateur est quand il n'y a plus d'espace dans la
/data
partition.Par exemple,
Voici un exemple de vue du
/data/app
répertoire:J'ai supprimé les fichiers APK supplémentaires . Il semble qu'à chaque installation, vous obtenez un nouveau fichier APK. Supprimez simplement les fichiers APK supplémentaires.
Par exemple,
la source
Dans mon cas, l'échec a été causé par l'
com.android.providers.media
application. J'ai fait face à cela sur l'émulateur Android x86. Qu'est-ce que j'ai fait:Espace libre trop bas sur
/data
Presque tout a été consommé par une seule application! C'est une application système, donc je pense qu'il vaut mieux ne pas la supprimer. Au lieu de cela, j'ai nettoyé les données de l'application.
Le disque a été effacé et l'application a été installée avec succès.
la source
Je me sens un peu bizarre en écrivant ceci, mais je ne peux pas être sûr à 100% que ce n'est pas vrai dans certains cas (cela a fonctionné pour moi). Si vous aviez les symptômes suivants:
Ensuite, essayez ceci:
J'ai débranché mon téléphone et l'ai laissé reposer TOUT LE JOUR. Ma batterie s'est un peu déchargée. Après cela, je l'ai reconnecté et j'ai recommencé le débogage. Tout a bien fonctionné cette fois! Et je veux dire vraiment très bien, comme avant.
Est-il possible que cette erreur soit due à des éléments matériels liés à la batterie ? C'est toujours bizarre de penser de cette façon, mais maintenant je continue de déconnecter mon téléphone de temps en temps (et pour la nuit) et le problème ne revient pas.
la source
Répondre au tout premier post de ce sujet ...
Symptôme: certaines applications ne s'installent pas, disant qu'il n'y a pas d'espace et qu'en réalité il y a beaucoup d'espace libre sur le stockage interne et externe !!! Solution: désactivez l'installation externe par défaut.
Configuration de l'installation externe par défaut avec ceci:
Rend l'installation impossible sur de nombreuses applications qui ne peuvent pas être installées en externe (comme adblock + ou plus)
Ensuite, la solution est
Ou
la source
J'ai essayé ce qui suit:
Vérifiez si cela fonctionne de la même manière avec vous.
la source
Samsung Galaxy Ace annonce 158 Mo de stockage interne dans ses spécifications, mais les applications et services de base en consomment environ 110 Mo (j'ai utilisé le gestionnaire de tâches sur l'appareil pour l'inspecter). Mon application faisait 52 Mo, car elle avait beaucoup d'atouts. Une fois que j'ai supprimé certains d'entre eux jusqu'à 45 Mo, l'application a réussi à s'installer sans problème. L'appareil m'avertissait toujours que le stockage interne était presque plein, et je devrais désinstaller certaines applications, même si je n'avais qu'une seule application installée.
Après avoir installé une version finale du bundle .apk, puis l'avoir désinstallé, mon appareil affiche 99 Mo d'espace libre, il pourrait donc déboguer des informations encombrant l'appareil après tout. Voir la réponse de Louis Semprini .
la source
Dans Eclipse,
Run -- > Debug Configurations --> Select "target",
et sélectionnez une cible d'émulateur préférée à lancer.Ensuite, sous "Options de ligne de commande d'émulateur supplémentaires", ajoutez ceci:
Ensuite, fermez l'émulateur et cliquez sur l'icône de débogage, qui lancera l'émulateur préféré que vous avez sélectionné.
J'espère que cela aide...!
la source
Android Virtual Device Manager
utilisateurs. Vous pouvez définir la taille de la partition à 1024 en tant que «stockage interne», ce qui représentedisk.dataPartion.size
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 également
adb install
avec l'-s
option (Installer le package sur le stockage de masse partagé tel que sdcard.) Qui semblait exagéré.La suppression du
-s
drapeau deadb install
résolu le problème pour moi.la source
Comme ce problème existe toujours, j'ai pensé ajouter quelque chose à la réponse de RacZo à des fins de développement. Si vous n'utilisez pas le plugin Eclipse ou pour une raison quelconque, 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:
Pour autant que je sache, cette option n'est pas documentée sur developer.android.com, donc j'ai pensé la publier ici pour que les gens trouvent cette solution.
la source
avd
Je suis tombé sur cette question parce que j'obtenais cette erreur en utilisant Sideload Wonder Machine pour installer des applications sur mon téléphone réel. J'ai trouvé que le problème était que j'avais plusieurs fichiers .apk dans le répertoire / payload. Je pensais que c'était quelque chose qui était pris en charge, mais lorsque j'ai supprimé tous les fichiers .apk sauf un, l'erreur a disparu.
la source
Désinstallez simplement l'application de l'émulateur à partir de la ligne de commande ou accédez aux paramètres et désinstallez l'application. Cela empêchera l'erreur de se produire.
la source
Si vous utilisez un véritable appareil, vous n'avez tout simplement plus de mémoire interne. Accédez simplement aux paramètres Android -> Applications et déplacez certaines applications sur la carte SD ou désinstallez certaines applications.
Si vous utilisez l'émulateur, consultez la réponse de RacZo .
la source
Je suis tombé sur la même erreur lorsque j'ai essayé d'installer par lots environ 50 applications dans le répertoire de la carte SD à l'aide du shell ADB après une mise à jour complète de la ROM:
Certains d'entre eux ont été installés, mais beaucoup ont échoué avec l'erreur INSTALL_FAILED_INSUFFICIENT_STORAGE. Toutes les applications ayant échoué avaient de l'espace en leur nom. Je les ai renommés par lot et réessayé. Tout a fonctionné cette fois. Je n'ai pas redémarré ou quoi que ce soit. Peut-être que ce n'est pas le problème auquel vous êtes confrontés, mais cela pourrait aider quelqu'un à rechercher le même problème que moi.
la source
Solution d'émulation
Ouvrez votre
.Android
annuaire. Généralement dans votre répertoire personnel. Ensuite, allez dansavd
, puis ouvrez le répertoire portant le nom de l'avd que vous souhaitez modifier.config.ini
Modifiez maintenant le fichier et ajoutez la ligne suivante ou modifiez la ligne suivante:disk.dataPartition.size=1024
Quelle
1024
est la taille que vous souhaitez utiliser en Mo. Enregistrez le fichier, puis démarrez votre émulateur avecwipe user data
coché. Votre émulateur devrait maintenant avoir la nouvelle taille.la source
La solution est simple.
Ouvrez le gestionnaire AVD. Modifiez votre AVD.
Dans la section matériel, certaines propriétés sont répertoriées avec "Nouveau ..." et "Supprimer" à droite de celui-ci.
Appuyez sur Nouveau. Sélectionnez la taille de la partition de données. Réglez sur "512 Mo" (le Mo est requis). Et tu as fini. si vous rencontrez toujours des problèmes, augmentez également votre système et vos partitions de cache en utilisant la même méthode.
Tout est documenté ici: http://developer.android.com/guide/developing/devices/managing-avds.html
la source
Assurez-vous de ne pas connecter votre appareil Android avec USB tout en essayant d'exécuter l'émulateur
la source
Si vous exécutez votre application sur un émulateur et si ce problème persiste, consultez votre gestionnaire de notifications. S'il 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é autant d'applications sur votre émulateur. Désinstallez plusieurs applications que vous ne souhaitez pas actuellement dans "Paramètres >> Gérer l'application >> Sélectionnez l'application >> Désinstaller".
Cet ensemble.
Réexécutez maintenant le programme.
la source
J'ai eu cette erreur aujourd'hui, lorsque j'utilise mon téléphone pour tester / déboguer avec Eclipse.
Mon erreur est que j'ai utilisé le caractère spécial norvégien ("æ", "ø", "å") dans le nom de l'application. Lorsque j'ai refactorisé le nom de l'application (en utilisant "o" au lieu de "ø"), l'application a été installée correctement.
Ce n'est probablement pas votre problème, mais pourrait être noté pour d'autres personnes obtenant la même erreur.
la source
Après avoir essayé tout le reste de ce fil, j'ai découvert que mon propre problème était dû au fait que le chemin vers le fichier .apk était trop long. J'ai donc cd'ed dans le répertoire où se trouvait le .apk et j'ai fait:
au lieu de
Et cela a fonctionné ... installé très bien.
Je pensais juste que cela pourrait aider quelqu'un d'autre.
la source
Solution de contournement:
Compilez en 2.1 sans
android:installLocation="preferExternal"
.D'accord?
Compilez en 2.2, y compris
android:installLocation="preferExternal"
.Cela sera toujours installé sur la version SDK inférieure à 8 (la balise XML est ignorée).
la source
Dans mon cas , il a été réparé en augmentant la mémoire étendue de l' éclipse, en changeant la valeur de -Xmx768m dans eclipse.ini
la source
J'ai fini par désinstaller l'application de l'appareil, puis la réinstaller dans Eclipse. C'est un problème que j'obtiens tout le temps sur mon appareil à partir d'une utilisation régulière, mais aujourd'hui, j'ai reçu ce message du développement.
la source
Moi aussi, j'ai fait face au même problème, et j'ai fait une "réinitialisation des données d'usine", et cela a bien fonctionné après cela.
la source
Je n'avais pas d'accès root sur mon téléphone et je ne suis pas préparé pour que mon application soit installée sur la carte SD. 15 Mo d'espace sont disponibles sur
/data/
et ma demande est inférieure à 2 Mo.Pendant un certain temps, je m'en suis sorti; nettoyer le projet Eclipse et redémarrer le téléphone, mais finalement cela a cessé de fonctionner (probablement après une mise à jour).
Le nettoyage de mon cache d'application a résolu le problème pour moi et ne nécessite pas un redémarrage du téléphone ou une désinstallation de l'application.
Il existe des applications sur le marché que vous pouvez utiliser pour vider le cache de plusieurs applications à la fois. Recherchez «propre».
la source