[Android]更换EMMC后,userdata容量为何不正确

在Android的开发过程中,我们经常会碰到,更换了一个较大的EMMC芯片后,烧录完镜像,手机中userdata容量显示仍然和之前一样,并没有变大,具体是为什么呢?

方法/步骤

  1. 在Android最新的代码中,分区表partition.xml里面定义了宏:GROW_LAST_PARTITION_TO_FILL_DISK=true.

    这个宏的作用就是:动态分配data分区的大小;就是说EMMC的总容量减去其它分区的容量,剩下的都是data分区的。所以分区的大小不用修改,会自动适应。

    这一点可以通过adb shell -》cat /proc/partitions 看到类似如下图的内容,其中最大的分区mmcblk0p40就是data分区了。(这里的单位是KB)

    [Android]更换EMMC后,userdata容量为何不正确

  2. 那么既然data分区的实际大小没问题,为什么手机中看到的容量不对呢?

    这就需要提到文件系统的概念了,因为每次烧录手机的时候,是将data.img烧录到分区中,所以分区的文件系统中的容量信息都是包含在data.img中了。

    这个容量是通过文件/device/platform/BoardConfig.mk中的参数来定义的:

    BOARD_USERDATAIMAGE_PARTITION_SIZE := 1860632576 (单位是Byte)

  3. 所以,解决方法很简单,就是将BOARD_USERDATAIMAGE_PARTITION_SIZE 的值设置为我们在/proc/partitions 中看到的分区实际大小,也就是12460032(KB)x1024(Byte/KB)=12759072768(Byte)

  4. 注意1:其实在容量显示不对的状态下,我们对手机执行下恢复出厂设置也会变为正确的容量的。因为这个操作会重新根据分区大小对data分区进行格式化操作,不再以data.img中的容量为准了。

  5. 注意2:如果直接设置成分区实际容量无法启动的话,不妨设置一个比分区容量小10MB的值,因为有时文件系统需要一些空间才能启动。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值