3 votes

Comment faire pour qu'Android utilise toujours la carte SD externe au lieu du stockage interne ?

J'ai créé un AVD en utilisant

 bin/avdmanager create avd -d "Nexus 5" -c 2G -n nexus_5 -k "system-images;android-29;google_apis;x86_64"

Le site -c 2G est censé créer une carte SD de 2 Go.

Quand je démarre l'émulateur, cependant, /sdcard semble pointer vers le stockage interne sur /data/media plutôt que sur le disque de 2 Go :

$ adb shell df -h
Filesystem                    Size  Used Avail Use% Mounted on
tmpfs                         996M  604K  996M   1% /dev
tmpfs                         996M     0  996M   0% /mnt
tmpfs                         996M     0  996M   0% /apex
/dev/block/dm-2               2.4G  2.3G   64M  98% /
/dev/block/dm-1               124M  123M  444K 100% /vendor
/dev/block/vdc                775M  302M  473M  39% /data
/data/media                   775M  302M  473M  39% /mnt/runtime/default/emulated
/dev/block/vold/public:253,80 1.9G  532M  1.4G  27% /mnt/media_rw/1400-1801
/mnt/media_rw/1400-1801       1.9G  532M  1.4G  27% /mnt/runtime/default/1400-1801

$ adb shell ls -l /sdcard /storage/self/primary  /mnt/user/0/primary
lrwxrwxrwx 1 root root 19 2020-12-01 13:29 /mnt/user/0/primary -> /storage/emulated/0
lrw-r--r-- 1 root root 21 2020-07-21 03:02 /sdcard -> /storage/self/primary
lrwxrwxrwx 1 root root 19 2020-12-01 13:28 /storage/self/primary -> /mnt/user/0/primary

$ adb shell mount | grep storage/emulated
/data/media on /storage/emulated type sdcardfs (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal)

Quand j'essaie de adb push données à /sdcard cela échoue car il n'y a pas assez d'espace disponible (sur le stockage interne).

Comment puis-je dire à l'émulateur d'utiliser la carte SD externe à la place ?

3 votes

C'est normal. /sdcard n'est pas physiquement une carte SD externe. Il s'agit d'un lien symbolique vers le stockage partagé externe émulé principal. Voir les détails dans Android.stackexchange.com/a/218469/218526 , Android.stackexchange.com/a/205494/218526 et Android.stackexchange.com/a/218338/218526

0 votes

Bon, je suppose que ma question est la suivante : comment faire pour qu'Android utilise l'appareil de 2 Go au lieu du plus petit. Comment puis-je configurer cela ?

1 votes

Si vous lisez les réponses que j'ai mises en lien, vous obtiendrez la réponse à votre question. Par défaut, Android n'utilise pas de stockage partagé externe secondaire. Mais les applications peuvent le faire, si elles le souhaitent.

2voto

Irfan Latif Points 16863

/sdcard n'est pas physiquement une carte SD externe mais un lien symétrique vers stockage partagé externe primaire . Voir les détails dans mes réponses à Le parcours de stockage d'Android y Qu'est-ce que /storage/emulated/0/ ?

D'après votre commentaire :

Comment faire pour qu'Android utilise le périphérique de 2 Go au lieu du plus petit. Comment puis-je configurer cela ?

Par défaut, Android n'utilise pas stockage secondaire externe partagé . Mais les applications le peuvent, si elles le veulent. Voir ma réponse à Comment enregistrer des fichiers sur une carte SD externe sur un Android non rooté ? .

Si vous voulez faire en sorte qu'Android utilise toujours la carte SD physique comme stockage partagé externe primaire vous devez modifier la configuration de votre ROM de la manière suivante Primaire émulé uniquement o Primaire émulé, secondaire physique a Primaire physique uniquement . C'est possible en modifiant le fstab fichier et quelques init 's .rc fichier. Suivez les liens de la documentation officielle ci-dessus pour obtenir des détails sur les changements de configuration.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X