Tout d'abord, les liens symboliques ne fonctionnent pas sur le stockage émulé d'Android. Une solution de contournement consiste à utiliser montages de liaison à la place. Voir cette réponse pour les détails.
Mais Avec Adoptable Storage, vous n'avez pas besoin de :
- Créer un lien symbolique vers la carte SD externe
- Déplacement manuel des données vers une carte SD externe
- Lier le montage d'un répertoire à partir d'une carte SD externe
Parce que ce que vous voyez comme /sdcard
o /storage/emulated/0
devrait déjà être sur la carte SD Adoptable.
Lorsque vous formatez une carte SD externe en tant que Stockage adoptif il est monté à /mnt/expand/[UUID]
qui contient une hiérarchie de fichiers très similaire à /data
partition, comme /data/app
, /data/data
y /data/media
etc. Lorsque vous migrer vos données vers le stockage adoptif nouvellement créé, les données de /data/media/
est déplacé vers /mnt/expand/[UUID]/media/
et le dernier est maintenant émulé et lié monté à /storage/emulated
(que les applications voient).
Vous pouvez le vérifier en exécutant df
o mount
sur une application terminale ou adb shell
.
Sans stockage adoptif :
~$ df --output=source,target
Filesystem Mounted on
/dev/block/dm-0 /data
/data/media /storage/emulated
/dev/block/vold/public:8,1 /mnt/media_rw/[UUID]
* dm-0
est crypté par FDE userdata
partition, vold
Le volume public est une carte SD externe ou un lecteur USB.
Avant de déplacer les données :
~$ df --output=source,target
Filesystem Mounted on
/dev/block/dm-0 /data
/data/media /storage/emulated
/dev/block/dm-1 /mnt/expand/[UUID]
* dm-1
est une carte SD Adoptable cryptée par FDE.
Après avoir déplacé les données :
~$ df --output=source,target
Filesystem Mounted on
/dev/block/dm-0 /data
/dev/block/dm-1 /mnt/expand/[UUID]
/mnt/expand/[UUID]/media /storage/emulated
* En fait /data/media
o /mnt/expand/[UUID]/media
est émulé en /mnt/runtime/[default|read|write]/emulated
qui est lié à /storage/emulated
.
Vous pouvez seulement déplacer les applications (ainsi que leurs données) vers Adoptable Storage qui ont installLocation
réglé sur preferExternal
o auto
par le développeur d'applications. En cas de auto
l'emplacement d'installation par défaut (défini à l'aide de pm set-install-location
) décide de l'endroit où l'application sera installée. Voir cette réponse pour les détails.
Si vous voulez plus d'espace libre, remplacez les grands répertoires (comme /data/media
, /data/app
y /data/data
) avec des montages (ou bind-mounts) à partir de partitions (ou répertoires) sur une carte SD externe. Cependant, il faut faire attention aux permissions (DAC et MAC), sinon les applications (ou même le système d'exploitation) peuvent se casser.
RELATION :