Qu'est-ce que cela signifie: Échec [INSTALL_FAILED_CONTAINER_ERROR]?


129

J'essaye de déployer mon application et j'obtiens parfois cette erreur:

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

J'ai essayé de le rechercher sur Google, mais je ne trouve pas ce que signifie l'erreur ou ce qui la cause. Je déploie via IDE (IntelliJ), le fichier est copié sur l'appareil dans / data / local / tmp (Huawei Ideos sans racine, exécutant 2.2), mais le gestionnaire de packages ne semble pas l'apprécier. Avant d'installer l'apk, j'ai déjà supprimé l'application de l'appareil au préalable. Je me suis également assuré qu'il n'y avait pas d'ancien fichier sous / data / local / tmp sur l'appareil. Je reçois toujours cette erreur maintenant. Le package doit être signé avec la clé de débogage, car je déploie via IDE en «exécutant» l'application.

$ 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]

Qu'est-ce que cela signifie et comment le résoudre?

Modifier / mettre à jour:

Je peux éviter l'erreur lorsque je n'autorise pas l'installation de l'application sur la carte SD, le réglage

android:installLocation="internalOnly"

dans le manifeste. C'est correct pour le développement, mais pour la production, ce n'est pas vraiment ce que je veux - puisque mon application est assez grande avec 17 Mo; donc je préfère qu'il soit sur sdcard. Comment pouvoir l'installer sur la mémoire externe sans enracinement (puisque c'est le seul moyen de supprimer /mnt/secure/asec/smdl2tmp1.asec, ce qui semble également être une solution).


Juste par curiosité: pouvez-vous l'installer par pm install -f com.company.shop?
Jakub Czaplicki

Il existe plusieurs variantes du INSTALL_FAILED_CONTAINER_ERRORproblème, pour certaines d'entre elles, voir ma réponse ici: stackoverflow.com/a/30343659/313113
bitek

Pour moi, c'était aussi simple que l'émulateur "à court d'espace" (???) et j'ai dû effacer les données dans AVD Manager.
EpicPandaForce

Réponses:


44

supprimer ce fichier de votre appareil

/mnt/secure/asec/smdl2tmp1.asec

Edition / mise à jour par Mathias Conradt (OP):

Si vous ne disposez pas d'un accès root, vous devez monter la carte SD et la supprimer via PC:

/.android_secure/smdl2tmp1.asec

3
mais mon appareil n'est pas enraciné, et en regardant le dossier sécurisé, seul root a accès. J'ai pu exécuter l'application auparavant, seulement maintenant depuis un certain temps, je ne peux pas l'exécuter et cela donne l'erreur ci-dessus.
Mathias Conradt

1
btw - il y a aussi un dossier / mnt / asec / que je peux atteindre avec non-root, mais c'est vide
Mathias Conradt

3
@Jazz Cela m'est arrivé aujourd'hui. J'aimerais vraiment savoir pourquoi / de quoi il s'agit. Supprimer le fichier manuellement? Pourquoi l'éclipse ne pourrait-elle pas faire cela? Est-ce un bug de téléphone?
Erik

1
Im ayant ce problème. Je ne peux pas voir les fichiers / dossiers sur mon Mac. Est-ce qu'il y a un autre moyen?
SleepNot

14
Cela a fonctionné, mais pouvez-vous expliquer pourquoi? Que contient le mystérieux fichier smdl2tmp1.asec?
Alexander Pacha

222

Changez l'emplacement d'installation de

android:installLocation="preferExternal"

dans

android:installLocation="auto"

dans AndroidManifest.xml de votre projet.


12
C'est ce qui l'a fait pour moi. Merci!
Jim McKeeth

Oui, cela l'a fait pour moi aussi. Merci!
Senthil Kumaran

22
mais je veux préférerExterne ...? Comment régler ceci?
Aiden Fry

2
@Sameer non, cela se produit aussi sur de vrais appareils - mais c'est incohérent. Les principaux sont les appareils HTC Desire S et Nexus.
Aiden Fry le

1
@AidenFry Utilisez la solution user2445968 si vous souhaitez conserver preferExternal.
LG

32

Si vous utilisez un émulateur, modifiez-le et ajoutez plus de mémoire. J'ai eu un problème comme celui-ci et je n'ai fait que modifier la mémoire de mon AVD de 200 Mo à 1000 Mo et le problème semble disparaître ... Bonne chance.


Oui, c'est la même chose avec moi. Thumbs up :)
NaXir

En plus d'augmenter la mémoire, j'ai également dû effacer les données utilisateur et seulement après cela, la nouvelle taille s'est reflétée et l'erreur a disparu.
Varun

2
Puis-je supposer que vous faites référence au stockage interne et non à la RAM?
Jonny

1
J'ai augmenté la mémoire de mon AVD, puis j'ai effacé les données !! et maintenant ça marche.
Rencontrez Vora

7

Cela signifie qu'une installation antérieure était corrompue. Si vous installez sur un périphérique externe, je vous suggère de formater la carte SD et de réessayer.


6

J'ai eu cette erreur à plusieurs reprises. J'ai trouvé le moyen le plus simple d'éviter l'erreur dans son intégralité est de simplement formater la carte SD. Utilisation des outils internes du téléphone ou des émulateurs. J'ai constaté que les cartes SD générées automatiquement ou même la création de votre propre sdcard.iso échouaient et provoquaient cette erreur à moins qu'elles ne soient formées par les outils Android internes.


1
Bienvenue dans Stack Overflow! Merci pour votre message! Veuillez ne pas utiliser de signatures / slogans dans vos messages. Votre boîte utilisateur compte comme votre signature et vous pouvez utiliser votre profil pour publier toute information vous concernant que vous aimez. FAQ sur les signatures / slogans
Andrew Barber

Résolu cela avec la même solution, car le problème est causé par une erreur d'écriture sur la carte SD, il vaut mieux que le workaorund de René f vous voulez garder android: installLocation = "preferExternal".
LG

Confirmer. Une erreur sur SD était la raison pour moi. Je l'ai testé en supprimant "prefer external" du manifeste - il est bien installé.
djdance le

4

Pour moi, cela a été causé par un manque d'espace sur la carte SD de mon émulateur. Je travaillais sur un projet assez volumineux et j'avais pensé que 40 Mo suffisaient, mais je l'ai changé en 200 Mo et le problème a disparu.


4

Eu la même erreur avec divers .apksur Cyanogenmod 12.1 (Android 5.1.1) sur ma note 8 avec une deuxième partition pour Link2SD. J'ai pu installer les applications en forçant l'installation via adb en tant que root:

adb root
adb install -f myapp.apk

3

J'ai reçu ce message d'erreur d'Android 5.0.1. J'avais changé l'emplacement d'installation préféré en "Carte SD amovible" via Paramètres-> Applications-> Emplacement d'installation préféré.

J'ai changé l'option de nouveau à "Laisser le système décider" et le message d'erreur a disparu.


1
Cela m'a semblé être la solution pour moi sous Cyanogenmod 12 (Android 5.0.2). Cette ouverture semblait obliger l'application à s'installer sur la carte SD amovible même si le manifeste de l'application spécifiait qu'elle ne pouvait pas être installée là-bas.
Sam

1

Pour moi, c'était la langue de l'appareil. J'ai changé la langue en arabe pour tester mon application. Ensuite, j'ai eu cette erreur. Le retour à la langue a fait l'affaire.


1

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

Sinon, vérifiez une fois la taille de votre espace de stockage externe. [Mémoire disponible> taille de l'application] Si l'espace de stockage n'est pas suffisant, cette erreur est également générée.


0

J'ai eu un problème similaire avec l'émulateur. Il avait disparu lorsque j'ai changé le type de processeur de l'émulateur d'ARM à Intel.


Cela n'aide pas vraiment l'OP à résoudre son problème, car son souci est de le faire fonctionner sur des appareils du monde réel, dont beaucoup utilisent encore des processeurs ARM.
James Green

0

dans certaines situations, la suppression de libs/android-support-v4.jargénère cette erreur.


0

Pour moi, une désinstallation de plusieurs applications a résolu le problème. Lorsqu'un stockage local a eu suffisamment de mémoire, un déploiement d'APK s'est terminé avec succès. Mais en général, je redémarre simplement un gadget et l'installation se termine. En outre, certains programmes comme Clean Master peuvent vous aider. Nettoyez souvent les processus inutiles et fermez les programmes avec Clean Master et obtenez suffisamment de mémoire.


0

Le redémarrage de mon appareil a résolu le problème pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.