Android 4.4虚拟设备内部存储空间无法调整大小

45

创建一个新的Android 4.4虚拟设备时,使用AVD Manager无法将内部存储设置为超过200MB。

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

我试过:

  • 在AVD Manager中将设备的内部存储设置为512MB。
  • 在Eclipse项目Debug Configurations下,在Target标签中,将Additional Emulator Command Line Options设置为-partition-size 512。
  • 在Eclipse首选项下的Android中,将默认模拟器选项设置为-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 Manager即可。Android 4.4是否存在问题?我有什么遗漏的吗?或者可能有一些解决方法吗?


3
以下Android问题在这个漏洞上仍然存在。截至2014年9月15日的当前状态为已指派/分类。https://code.google.com/p/android/issues/detail?id=75141 - jkwuc89
10个回答

57

现在模拟器文件系统是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

2
在Cygwin上有一个e2fsprogs软件包可用。也许有一个MinGW端口。 - Frohnzie
13
在 Mac OS X 操作系统中,您可以使用 homebrew 软件包管理器来安装这些工具,命令是 brew install e2fsprogs。由于它们默认没有被符号链接到 /usr/local 目录下,因此您应该使用它们的完整路径来运行它们,例如 /usr/local/Cellar/e2fsprogs/1.42.9/sbin/resize2fs - nerdinand
2
我使用了上述命令,但现在我的模拟器无法启动 :( - Kshitij Aggarwal
2
这个与下面的tune2fs答案结合起来使用,让我的模拟器再次启动了! - Matt
1
和Matt一样,我使用了这个命令和tune2fs,它完美地解决了我的问题。唯一需要注意的是要同时调整userdata-qemu.img和userdata.img两个文件的大小。 - Mitch ミッチ
显示剩余5条评论

29

即使按照上述建议进行操作,也可能会导致Android模拟器在启动徽标处挂起。原因是resize2fs所做的更改通常是正确的,但在Android中被视为损坏的文件系统,并且防止其以rw模式挂载,从而导致启动过程挂起。

检查引导日志会显示类似以下内容:

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

对于 Android,事件 e2fsck 无法修复它,为了解决这个问题,我使用 tune2fs 更改 Android 应该如何继续挂载损坏的文件系统。

tune2fs -e continue userdata-qemu.img

2
谢谢,这个结合上面被接受的答案对我很有帮助! - nerdinand
是的,我不得不这样做才能让模拟器在 Android 启动徽标后启动。 - Andrew Porritt
太棒了!结合这个答案对我很有帮助。没有tun2fs,模拟器一直卡在Android启动图像上。 - Moonwalker

5

Someone13,这绝对是"Android 4.4.2 - API Level 19"中的一个bug。

我也遇到了同样的问题-即使在Android SDK模拟器中使用"disk.dataPartition.size=xxxM"或命令提示符参数“-partition-size xxx”,都无法改变设备内部存储的大小,当使用Android 4.4.2时。

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

我的硬件配置:Windows 7 Ultimate SP1,RAM 4GB; Core Duo 2.28GHz; GT630


4

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

似乎无论我怎么做都无法调整模拟器的大小,但是当我删除图像并重新创建具有1GB内部存储的图像后,它就可以正常工作了。


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

1
不确定为什么这个答案被踩了。+1,对我有用。以下是一个示例(使用Xamarin安装的Android SDK):〜/ Library / Developer / Xamarin / android-sdk-macosx / emulator / bin64 / resize2fs〜/ .android / avd / avdname.avd / userdata.img 1024M。如果您在首次启动模拟器之前运行avd create,那么这是您唯一需要的命令。 - Nate Cook
答案中的路径不正确,@NateCook的评论帮助我找到了resize2fs。 - Faceles
如果您找不到resize2fs,您也可以通过homebrew安装brew install e2fsprogs。有关该方法的更多信息,请参见此处:https://dev59.com/N2Ij5IYBdhLWcg3wJCB-#mKifEYcBWogLw_1bkmcW - Nate Cook

1
我可以创建这个虚拟设备,也许可以更改您的设备类型或其他内容?

enter image description here


1
对我没用。我使用了你在图片中展示的完全相同的设定。我也尝试更新了我的Android开发工具,并将4.4更新到4.4.2。但问题仍然存在。 - Someone13
1
@Someone13 你也更新了tiy sdk管理器吗?下载最新版本并测试一下。 - Akshat Agarwal

0

对我来说,当我在Android Studio中意外选择了AOSP 4.4.2模拟器时,这是一个问题。Google Inc.的x86模拟器(如下图)似乎没有这个bug。

enter image description here


0

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

我的配置是 API级别21 CPU:Intel X86 操作系统:Ubuntu Linux


0

Assaf G.的回答很好。但是我注意到在以下链接中,第一个链接中的用户能够创建带有内部存储500MB模拟器。但他遇到了一些异常,但与内部存储无关。 而在另一个链接中,用户可以创建带有内部存储器4096MB模拟器。但他面临速度问题。因此,我认为您必须尝试使用第一个链接中提供的规格

1.Android 4.4 模拟器

2.android 模拟器启动失败


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接