130 votes

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

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

Failure 
[INSTALL_FAILED_CONTAINER_ERROR] 

J'ai essayé de le googler mais je ne trouve pas ce que l'erreur signifie ou ce qu'elle est. cause. Je déploie via l'IDE (IntelliJ), le fichier est copié sur le périphérique dans le répertoire /data/local/tmp. périphérique dans le répertoire /data/local/tmp (Huawei Ideos non rooté, fonctionnant en 2.2), mais le gestionnaire de paquets 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é Je me suis également assuré qu'il n'y avait pas d'ancien fichier sous /data/local/tmp sur l'appareil. Toujours J'obtiens cette erreur maintenant. Le paquet devrait être signé avec la clé de débogage, puisque je déploie via l'IDE en exécutant l'application. 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 :

J'arrive à éviter l'erreur en n'autorisant pas l'application à être installée sur la carte SD, en définissant les paramètres suivants

android:installLocation="internalOnly"

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

0 votes

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

0 votes

Il existe plusieurs variantes du INSTALL_FAILED_CONTAINER_ERROR problème, pour certains d'entre eux voir ma réponse ici : stackoverflow.com/a/30343659/313113

0 votes

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

224voto

Rene Points 2051

Changez l'emplacement d'installation de

android:installLocation="preferExternal"

en

android:installLocation="auto"

dans le fichier AndroidManifest.xml de votre projet.

12 votes

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

0 votes

Oui, ça l'a fait pour moi aussi. Merci !

22 votes

Mais je veux préférerExternal... ? Comment résoudre ce problème ?

45voto

Supprimer ce fichier de votre appareil

/mnt/secure/asec/smdl2tmp1.asec

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

Si vous n'avez pas d'accès Root, vous devez monter la sdcard et la retirer via le PC :

/.android_secure/smdl2tmp1.asec

32voto

Dan Points 189

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

0 votes

Oui, c'est arrivé pareil pour moi. Bravo :)

0 votes

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

2 votes

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

7voto

dalbator Points 69

Cela signifie qu'il y avait une installation antérieure qui était corrompue. Si vous installez sur une carte externe, je vous suggère de formater la carte SD et de réessayer.

4voto

Tobi G. Points 31

J'ai eu la même erreur avec plusieurs .apk sur Cyanogenmod 12.1 (Android 5.1.1) sur mon Note 8 avec une deuxième partition pour Link2SD. J'ai pu installer les apps en forçant l'installation via adb en tant que Root :

adb root
adb install -f myapp.apk

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X