在安卓上给手机存储卡划分区,实现存储卡内部存储空间和便携式存储设备共存 - Zapic's Blog
在安卓上给手机存储卡划分区,实现存储卡内部存储空间和便携式存储设备共存

手机内存空间开始吃紧了…
然后插了一张存储卡,但是遇到了两难的抉择:

  1. 格式化成便携式存储设备.只存歌曲和备份,剩下空间闲置不用,手机存储应用的空间仍然紧张.
  2. 格式化成内部存储空间,这样这张卡只能存储应用.虽然可以把手机存储迁移到存储卡里,但是无法在系统外读写,也没办法保存备份.

最后研究了一下,发现可以实现便携式存储空间和内部存储空间共存.
虽然没办法动态划分,但是也可以舒服一点了吧.

首先,这个功能只是是安卓6开始有的.
然后,手机必须root.
最后,存储卡不能太慢(写入大于20M/s),不然很影响体验.

先备份数据,格式化之后数据全部都会消失(常识来着).
然后,我拿的8G存储卡做的例子.
这样:

  1. 开个终端,并进入su.
  2. sm list-disk查看存储卡ID,一般回显就是disk:xxxxx,我的存储卡ID是disk:179_64.
  3. 然后计算一下你想拿多少空间做内部存储空间,这里我想分配2G,那么意味着6G的空间会分配个便携式存储设备,也就是6/8=75%.

那么就执行sm partition disk:179_64 mixed 75,稍等一下,再进入设置里看一下,就会发现原来的8G便携式存储设备,变成了6G,剩下2G被分配到了新的内部存储空间分区,与手机原来的空间并排显示.

  1. 最后把数据迁移回来就好了.

如果想把应用移动进存储卡,只需要在应用的存储空间页面更改已使用的存储空间就好了.

如果有的应用不允许改,强制移动应用到存储卡也很简单.
1.先get到应用包名,比如com.tencent.mobileqq.
2.get到分区后的内部存储空间的UUID,只需要执行sm list-volumes private.
3.pm move-package [包名] [UUID],然后稍等片刻.
就好了.