Android 4.4 虚拟设备内部存储不会调整大小

Posted

技术标签:

【中文标题】Android 4.4 虚拟设备内部存储不会调整大小【英文标题】:Android 4.4 Virtual Device Internal Storage Will Not Resize 【发布时间】:2014-01-01 23:53:18 【问题描述】:

使用 AVD 管理器创建新的 android 4.4 虚拟设备时,我无法使内部存储空间大于 200MB。

512MB 是我要设置的内部存储大小。

我试过了:

在 AVD 管理器中将设备的内部存储设置为 512MB。 在 Eclipse 项目的 Debug Configurations 中,在 Target 选项卡下,将 Additional Emulator Command Line Options 设置为 -partition-size 512。 在 Eclipse Preferences 的 Android 下,我将 Default emulator options 设置为 -partition-size 512。 在 (User)/.android/avd/(device).avd/config.ini 下编辑我的虚拟设备的配置文件 然后设置disk.dataPartition.size为disk.dataPartition.size=512M 还尝试将其设置为 disk.dataPartition.size=512MB 还尝试将其设置为 data.dataPartition.size=512M

这发生在 ARM 和 Intel Atom x86 CPU 上。

现在,当我切换到 Android 3.0 (ARM) 时,我可以简单地使用 AVD 管理器调整它的大小,以满足我的心愿。 Android 4.4 有问题吗?有什么我错过的吗?或者可能的解决方法?

【问题讨论】:

以下 Android 问题针对此错误开放。截至 2014 年 9 月 15 日的当前状态已分配/分类。 code.google.com/p/android/issues/detail?id=75141 【参考方案1】:

现在模拟器文件系统是 ext4,我可以使用标准 Linux 工具重新调整 userdata.img 的大小。

# Navigate to AVD
cd ~/.android/avd/Nexus5
# Delete old image
rm userdata-qemu.*
# Re-size the image
resize2fs userdata.img 512M
# Start the emulator and enjoy
emulator @Nexus5

编辑 我也可以直接重新调整userdata-qemu.img 的大小,但我必须先运行e2fsck

 e2fsck -f userdata-qemu.img
 resize2fs userdata-qemu.img 512M

【讨论】:

有一个可用于 Cygwin 的 e2fsprogs 包。也许有一个 MinGW 端口。 在 Mac OS X 上,您可以使用 brew install e2fsprogs 使用自制软件包管理器安装这些工具。由于默认情况下它们没有符号链接到/usr/local,因此您应该使用它们的完整路径来运行它们,例如/usr/local/Cellar/e2fsprogs/1.42.9/sbin/resize2fs. 我使用了上述命令,但现在我的模拟器无法启动:( 这个,结合下面的 tune2fs 答案,然后让我的模拟器再次启动! 和 Matt 一样,我用过这个和 tune2fs,效果很好。我唯一需要调整 userdata-qemu.img 和 userdata.img 的大小。【参考方案2】:

即使上面的建议也可能导致 android 模拟器挂在启动徽标上。原因是 resize2fs 所做的更改通常是正确的,但被 android 认为是损坏的 fs 并阻止它以 rw 模式挂载它,这会挂起启动过程。

检查启动日志显示如下内容:

EXT4-fs error (device mtdblock1): ext4_mb_generate_buddy:741: group 2, 32366 clusters in bitmap, 32370 in gd

事件 e2fsck 没有为 android 修复它,为了解决它,我使用 tune2fs 来改变 android 应该如何继续挂载损坏的 fs 的方式。

tune2fs -e continue userdata-qemu.img

【讨论】:

谢谢,这与上面接受的答案相结合对我有用! 是的,我必须这样做才能让模拟器启动超过 Android 启动徽标。 太棒了!结合答案对我有用。没有 tun2fs sim 卡在 Android 启动映像中。【参考方案3】:

Someone13,这绝对是 Target 中的错误:“Android 4.4.2 - API Level 19”

我有同样的问题 - 无法在 Android SDK 的模拟器中更改设备的内部存储大小(即使在 config.ini 中使用“disk.dataPartition.size=xxxM”或使用命令提示符)在 Android SDK 的 Emulator 中使用 Android 4.4.2 时的参数“-partition-size xxx”)。

设置自定义大小的唯一方法是在用作目标时:Android 3.0 - API Level 11。

我的硬件:Windows 7 Ultimate SP1,RAM 4GB;酷睿双核 2.28GHz; GT630

【讨论】:

【参考方案4】:

如果您在 2016 年仍然遇到此问题,请尝试从 AVD 管理器中删除图像,然后重新添加模拟器。

似乎无论我做什么都无法调整模拟器的大小,但是当我删除图像然后使用 1GB 内部存储重新创建图像时,它就起作用了。

【讨论】:

【参考方案5】:

我能够创建此虚拟设备,也许更改您的设备类型或其他什么?

【讨论】:

对我不起作用。我使用了与您在图片中显示的完全相同的设置。我还尝试更新我的 Android 开发者工具并将 4.4 更新到 4.4.2。还是一样的问题。 @Someone13 你也更新了tiy sdk manager吗?下载最新版本并进行测试。【参考方案6】:

为了建立@Frohnzie 的答案,resize2fs 和 e2fsck 现在包含在 SDK Tools 中(您可能需要更新您的 SDK 工具才能看到它们),因此您不需要单独安装它们。它们位于 yourAndroidSDKFolder/tools/bin(Windows、Linux)或 yourAndroidSDKFolder/tools/bin64(Mac、Linux)下。

【讨论】:

不知道为什么这个答案被否决了。 +1,为我工作。这是一个示例(使用 Xamarin 安装的 Android SDK):~/Library/Developer/Xamarin/android-sdk-macosx/emulator/bin64/resize2fs ~/.android/avd/avdname.avd/userdata.img 1024M。如果您在 avd create 之后但在第一次启动模拟器之前运行,这是您唯一需要的命令。 答案中的路径不正确@NateCook 评论帮我找到了 resize2fs 如果找不到resize2fs,也可以通过homebrewbrew install e2fsprogs安装。有关该方法的更多信息,请点击此处:***.com/questions/20579606/…【参考方案7】:

Assaf G. 的回答很好。但我在以下链接中注意到第一个用户能够使用 内部存储 500MB 创建 Emulator。但他得到了一些exceptions,但与内部存储无关。 在另一个链接中,用户可以使用内部存储器 4096MB 创建emulator。但他正面临速度问题。所以我认为你必须尝试第一个链接中提供的规范

1.Android 4.4 Emulator

2.android emulator forever launching

【讨论】:

【参考方案8】:

对我来说,当我不小心在 Android Studio 中选择了 AOSP 4.4.2 模拟器时,这是一个问题。 Google Inc. x86 模拟器(下)似乎没有这个错误。

【讨论】:

【参考方案9】:

删除 /data/data/com.google.android.gms/files 将释放 200M+

【讨论】:

【参考方案10】:

在这里,似乎有一些问题,在低于 22 版的旧 android 工具中,这不起作用。我将android工具升级到23,这开始工作了。

我的配置是 API 级别 21 处理器:英特尔 X86 操作系统:Ubuntu Linux

【讨论】:

以上是关于Android 4.4 虚拟设备内部存储不会调整大小的主要内容,如果未能解决你的问题,请参考以下文章

Android 内部存储/外部存储 及 读写权限

Android14.2 外部文件存储和读取

缺少 Android 虚拟设备管理器选项

Android 4.4 KitKat 随机崩溃

适用于Android设备的Simulink支持包错误:“未被识别为内部或外部命令”

android-4.4_r1