Android7.1+3288 存储显示与实际EMMC size不一致问题

RK原生的SDK,注释了INTERNAL_STORAGE_SIZE_PATHS,导致根本读不到EMMC大小,
即使打开,也会导致读取的大小和实际有少许差距,比如8G的EMMC,实际显示大小是7.45G

使用新实现的getPrimaryStorageSize,可以获取到实际大小,而且是1024计算值,也就是实际表示值,
比如8G的EMMC,显示共8.00G

diff --git a/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java b/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
old mode 100644
new mode 100755
index 8e24caf…0b9a5c9
— a/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
+++ b/rk3288_mid_7.1/frameworks/base/core/java/android/os/FileUtils.java
@@ -752,4 +752,17 @@ public class FileUtils {
public static @Nullable File newFileOrNull(@Nullable String path) {
return (path != null) ? new File(path) : null;
}
+

  •   public static long roundStorageSize(long size) {
    
  •    long val = 1;
    
  •    long pow = 1;
    
  •    while ((val * pow) < size) {
    
  •        val <<= 1;
    
  •        if (val > 512) {
    
  •            val = 1;
    
  •            pow *= 1024;
    
  •        }
    
  •    }
    
  •    return val * pow;
    
  • }
    }
    diff --git a/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java b/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
    old mode 100644
    new mode 100755
    index b10c7cd…226ace2
    — a/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
    +++ b/rk3288_mid_7.1/frameworks/base/core/java/android/os/storage/StorageManager.java
    @@ -140,6 +140,8 @@ public class StorageManager {
    private static final String[] INTERNAL_STORAGE_SIZE_PATHS = {
    //"/sys/block/mmcblk0/size",
    //"/sys/block/sda/size"

  •           "/sys/block/mmcblk1/size",//8GB
    
  •        "/sys/block/mmcblk2/size",//16GB
    

    };
    private static final String[] INTERNAL_STORAGE_SIZE_PATHS_ALTERNATIVE = {
    “/sys/block/mmcblk1/size”,
    @@ -938,6 +940,7 @@ public class StorageManager {
    }

    /** {@hide} */

  •   /*
    

    public long getPrimaryStorageSize() {
    if(alternative_path){
    for (String path : INTERNAL_STORAGE_SIZE_PATHS_ALTERNATIVE) {
    @@ -956,8 +959,12 @@ public class StorageManager {
    }
    }
    return 0;

  • }*/

  • /** {@hide} */

  • public long getPrimaryStorageSize() {

  •    return FileUtils.roundStorageSize(Environment.getDataDirectory().getTotalSpace()
    
  •            + Environment.getRootDirectory().getTotalSpace());
    

    }

  • private long readLong(String path) {
    try (final FileInputStream fis = new FileInputStream(path);
    final BufferedReader reader = new BufferedReader(new InputStreamReader(fis))😉 {
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将RK3288 Android 7.1 SDK编译打包成update.img卡启动,可以按照以下步骤进行操作: 1. 进入SDK根目录,并执行以下命令: ``` source build/envsetup.sh ``` 这个命令会加载SDK环境变量和编译脚本。 2. 执行以下命令,选择编译目标和编译类型: ``` lunch rk3288-eng ``` 这个命令会显示一个菜单,让你选择编译目标和编译类型。选择适合你设备的编译目标和编译类型。 3. 执行以下命令,开始编译Android系统: ``` make -j4 ``` 这个命令会使用4个线程进行编译,加快编译速度。根据你的电脑性能和SDK配置,这个过程可能需要几个小时甚至更长时间。 4. 编译完成后,进入SDK根目录下的rockdev目录,并将你的设备插入电脑的USB接口。执行以下命令,检查你的设备是否被正确识别: ``` ./mkupdate.sh -l ``` 这个命令会列出你的设备的相关信息,包括设备名称、ID、型号等。 5. 执行以下命令,生成update.img文件: ``` ./mkupdate.sh ``` 这个命令会将Android系统打包成update.img文件,并存储在rockdev/Image目录下。 6. 将生成的update.img文件拷贝到SD卡中,并将SD卡插入到RK3288设备的SD卡槽中。 7. 关闭RK3288设备,按住设备的烧录键不放,并同时按下设备的电源键,等待设备进入烧录模式。 8. 使用rkdeveloptool等烧录工具将update.img文件烧录到设备的EMMC存储器中。 9. 烧录完成后,断开设备的电源并拔掉SD卡。重新启动设备,如果一切正常,设备应该能够从EMMC存储器中启动并运行最新的Android系统。 注意,这个过程中可能会涉及到一些设备和系统的配置参数,具体操作步骤可能会因设备型号和SDK版本而有所不同。因此,建议你在进行操作前先备份好你的数据和系统,避免误操作导致数据丢失或系统不稳定。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九月天-深圳专业软硬件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值