web-dev-qa-db-fra.com

y a-t-il une taille maximale pour Android stockage interne alloué pour une application?

Je veux enregistrer un fichier json avec toutes les données d'application (quelque chose de similaire aux préférences) mais je ne sais pas quelle est la taille limite, car si l'application ne peut pas utiliser ce fichier, elle ne fonctionnera probablement pas. Ces informations sont-elles connues à l'avance et le système d'exploitation réserve de l'espace pour votre application ou son en fonction de la taille disponible.

Mise à jour: je ne me soucie pas vraiment du stockage externe car il n'est pas toujours disponible dans l'appareil et pourrait être changé (carte SD) et je pourrais vérifier stockage interne en utilisant cela mais ce n'est pas ce que je veux savoir , Qu'est-ce que je veux savoir s'il y a une taille de mémoire allouée pour le stockage interne de l'appareil?

37
Jimmy

Si vous utilisez Environment.getExternalStorageDirectory() (ou Context.getExternalFilesDir() pour l'API niveau 8 et plus) comme emplacement pour votre fichier json, alors je pense que la taille sera limitée par l'espace disponible dans le stockage externe (généralement une carte SD). Pour la plupart des appareils, je crois qu'il n'y a pas de limites fixes intégrées dans Android pour le stockage de fichiers externes. (Le stockage interne est une question différente. Les fabricants d'appareils peuvent imposer des limites assez restrictives, peut-être aussi faibles que 100 Mo partagés) parmi toutes les applications.)

MISE À JOUR: Notez que selon la définition de compatibilité pour Android 2. (Section 7.6.1), les appareils devraient avoir un peu de mémoire:

Les implémentations de périphérique DOIVENT avoir au moins 150 Mo de stockage non volatile disponible pour les données utilisateur. Autrement dit, la partition/data DOIT être d'au moins 150 Mo.

Au-delà des exigences ci-dessus, les implémentations des appareils DEVRAIENT avoir au moins 1 Go de stockage non volatile disponible pour les données utilisateur. Notez que cette exigence plus élevée devrait devenir un minimum strict dans une future version d'Android. Les implémentations d'appareils sont fortement encouragées à répondre à ces exigences maintenant, sinon elles peuvent ne pas être éligibles à la compatibilité pour une future version d'Android.

Cet espace est partagé par toutes les applications, il peut donc se remplir. Il n'y a pas de stockage minimum garanti disponible pour chaque application. (Un tel minimum garanti serait sans valeur pour les applications qui ont besoin de stocker plus que le minimum et serait un gaspillage pour les applications qui stockent moins.)

Modifier : à partir de la définition de compatibilité pour Android 4.

Les implémentations de périphérique DOIVENT avoir au moins 350 Mo de stockage non volatile disponible pour les données utilisateur. Autrement dit, la partition/data DOIT être d'au moins 350 Mo.

De la définition de compatibilité pour Android 4.

Les implémentations de périphérique DOIVENT avoir au moins 512 Mo de stockage non volatile disponible pour les données utilisateur. Autrement dit, la partition/data DOIT être d'au moins 512 Mo.

Fait intéressant, la recommandation selon laquelle les implémentations DEVRAIENT fournir au moins 1 Go est restée la même.

41
Ted Hopp

Je ne l'ai jamais vu limiter une seule application, et je l'ai testé avec la sauvegarde de fichiers vidéo assez volumineux (200 Mo) dans le dossier Fichiers de l'application auparavant.

Pour le stockage interne, je pense que vous n'êtes limité que par la quantité de stockage interne disponible pour toutes les applications à partager. Ce qui, comme l'a mentionné @Ted Hopp, est plutôt petit sur certains des appareils plus anciens et bas de gamme. Mais sur les appareils plus récents et haut de gamme, ils ont commencé à l'augmenter à un montant raisonnable, même si l'appareil a beaucoup d'espace, il pourrait toujours être utilisé par d'autres applications (vous devez donc tester ce qui se passera dans ce scénario).

Il convient également de souligner que si vous utilisez un stockage externe tel que la carte SD, votre fichier json serait techniquement modifiable par l'utilisateur. Ils pouvaient l'ouvrir dans un éditeur de texte et commencer à modifier les valeurs brutes s'ils le souhaitaient. (Cela est également possible si vous choisissez d'utiliser le stockage interne, mais cela nécessiterait un périphérique enraciné, alors que s'il est stocké sur la carte SD ne nécessiterait pas de root)

Donc, si vous stockez des informations que vous préférez que l'utilisateur n'ait pas la possibilité de modifier manuellement, vous voudrez peut-être en tenir compte.

17
FoamyGuy

Je pense qu'il y a une limite stricte d'environ 3,61 Go.

J'ai actuellement termux installé sur mon onglet. Termux exécute un terminal linux où je peux installer nodejs et npm. Créant ainsi essentiellement un environnement de développement. J'ai installé des packages sans trop de problèmes d'espace, sauf lorsque la mémoire interne de mon appareil est vraiment faible. Mais récemment. Je pense que j'ai atteint cette limite, ce qui m'a amené à cette question et a frappé sur cette page.

Le stockage de mon appareil est bien au-delà de 1 Go et je l'ai utilisé avec un espace aussi bas que 200 Mo sans ce problème. Mais mon installation termux est passée à 3,61 Go. J'ai récemment commencé avec du fil et il semble que le fil soit un porc de l'espace. J'installais un paquet et il s'est soudainement connecté: error Could not write file "/data/data/com.termux/files/home/dev/ide/theia/yarn-error.log": "ENOSPC: no space left on device Donc, cela a écrasé l'installation et j'ai pensé que je n'avais vraiment plus d'espace, mais ce n'était pas le cas. Une inspection plus approfondie montre que j'ai encore l'espace susmentionné dans le stockage interne et que le fil a accumulé 750 Mo, dont npm seulement environ 500 Mo dans le cache. J'utilise npm depuis, mais j'avais juste besoin d'utiliser du fil car l'installation de Theia ne se terminait pas bien avec npm. Theia semble utiliser le fil comme gestionnaire de paquets. 3,61 Go semble donc être la limite stricte pour les données app +.

En supprimant certains packages et en réduisant l'espace utilisé par d'autres packages redondants, je gagne de l'espace pour créer des fichiers et installer à ma guise, mais dès que j'atteins à nouveau 3,61 Go !!! boom!!! ça y est, je ne peux plus créer de fichiers.

Je ne pense pas que ce soit bien documenté, mais cela se produit.

J'utilise Lollipop (Android 5.1)

Pour affirmer cela, quelqu'un d'autre devrait essayer d'utiliser une application qui crée de très gros fichiers dans son sandbox interne. Pas dans le stockage interne, mais dans sa zone de données privées. Je suis sûr que vous atteindrez probablement cette limite stricte.

1
Emmanuel Mahuni

Il y a certainement un plafond d'environ 3,5 Go par application dans/sdcard/Android/data /, au moins sur certains appareils. Cela vaut également pour les images fournies par Google pour l'émulateur officiel Android. J'ai remarqué cela lorsque j'ai eu à plusieurs reprises des erreurs de "manque d'espace disque" dans un certain Android = application construite avec Unity qui télécharge un grand nombre d'images, de vidéos et de données audio. Chaque fois que cela se produisait lorsque le dossier à l'emplacement susmentionné atteignait environ 3,5 Go. Aucun espace de nettoyage ne résoudrait ce problème. ce comportement, cependant.