Android模拟器系统分区无法启动空间

时间:2010-04-20 13:18:53

标签: android emulation adb

Android模拟器有一个奇怪的问题。我通过Android AVD管理器创建了一个虚拟设备(新创建的模拟器,平台2.1和API级别7)。我已尝试使用标准设置和添加的硬件参数,用于更大(256 MB)的设备RAM大小,但没有任何改变。

我需要将文件送到系统分区来测试项目(称为haggle),但由于某种原因,系统分区从开始就没有空间。

aa a@aaa /home/haggle-0.2-android
$ adb -s emulator-5554 shell

 # df
df
/dev: 47084K total, 0K used, 47084K available (block size 4096)
/sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size 4096)
/system: 73600K total, 73600K used, 0K available (block size 4096)
/data: 65536K total, 18464K used, 47072K available (block size 4096)
/cache: 65536K total, 1156K used, 64380K available (block size 4096)

如您所见,系统分区有0K可用空间。当连接非根HTC Nexus One并执行相同操作时,我会得到以下值:

/dev: 108896K total, 0K used, 108896K available (block size 4096)
/sqlite_stmt_journals: 4096K total, 0K used, 4096K available (block size 4096)
/system: 148480K total, 116364K used, 32116K available (block size 4096)
/data: 200960K total, 22296K used, 178664K available (block size 4096)
/cache: 97280K total, 1852K used, 95428K available (block size 4096)
/sdcard: 3864064K total, 118496K used, 3745568K available (block size 32768)

为什么模拟器上的系统分区从一开始就有0K可用空间,我该怎么做才能改变它?即使我使用mount / remount使分区可写,我也得到相同的0K值。

任何提示?

5 个答案:

答案 0 :(得分:28)

找到答案:)

启动模拟器时,您可以通过-partition-size x emulator_name指定分区大小。

通过终端完成。 例如:

emulator -partition-size 125 @AVD1

OR

emulator -partition-size 125 -avd AVD1

请注意,大小必须大于当前系统分区大小。 对于Android4.0.3模拟器,默认大小已经是168,因此将新分区大小设置为更大的值,如256

答案 1 :(得分:5)

如今,-partition-size更改/ system / data分区,但不更改/ system分区空间。

例如,如果要安装完整的GApp,则需要更多空间。

https://unix.stackexchange.com/questions/104790/how-to-setup-a-growable-loopback-device

中记录了在Unix中执行此操作的一般过程

简而言之:

  1. 制作system.img的副本,这样就不会修改SDK中的原始版本(cp system.img system-extended.img
  2. system-extended.img增加到所需的尺寸(例如,truncate system-extended.img -s 2G
  3. 调整内部ext4文件系统(resizefs system-extended.imgresize2fs system-extended.img
  4. 的大小
  5. 通过-system <path/to/system-extended.img>参数调用模拟器时使用新的img文件。 -writable-system参数也可以派上用场。

答案 2 :(得分:1)

我在尝试在Android Q(如果需要的话是Android TV)上@ssice的答案时遇到问题。

显然,system.img现在是GPT分区磁盘映像。

您可以通过运行file system.img来确认:

system.img: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x87,130,59), startsector 1, 2177023 sectors, extended partition table (last)

如果您也遇到这种情况,可以在Linux上执行以下操作:

  1. 调整system.img的大小:truncate -s 3G system.img
  2. 重新创建分区表并创建一个跨它的分区:
    • fdisk system.img
    • g用于新的GPT分区表
    • n用于新分区。选择分区号1;接受将覆盖整个磁盘的分区的默认设置
    • w用于保存更改
$ fdisk system.img

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): g
Created a new GPT disklabel (GUID: 2E6B87B6-5492-47E0-A164-A148E24445A0).

Command (m for help): n
Partition number (1-128, default 1):
First sector (2048-6291422, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-6291422, default 6291422):

Created a new partition 1 of type 'Linux filesystem' and of size 3 GiB.

Command (m for help): w
The partition table has been altered.
Syncing disks.
  1. 安装system.img作为回送设备
    • losetup -fP system.img
    • /dev/loopN中分配了/dev/loop1(例如,losetup -a | grep system.img)来抓取
  2. 调整文件系统大小:resize2fs /dev/loop1p1/dev/loop1分区1)

答案 3 :(得分:0)

我发现了问题。 SDK_MANAGER 文件夹位于我的D盘(D:/ასერ/?dwe + joan/SKD_MANAGER)中的NON-STANDARD字符目录中 这就是为什么它无法获得正确的分区大小。我将** SDK_MANAGER *移动到D:/ ** SDK_MANAGER *并解决了问题!

(所以,谁有错误消息,如“无效的系统分区大小”或“恐慌:无法打开avd1”,这篇文章可能有所帮助)

答案 4 :(得分:0)

对于通过源构建的Android 10模拟器,以下解决方案效果很好:

$ emulator -partition-size 8192 -writable-system

如果已经启动了模拟器,则必须清除并重新构建它:

$ make installclean
$ rm out/target/product/generic_x86_64/*qcow2
$ make
$ emulator -partition-size 8192 -writable-system

已在 aosp_car_x86_64 目标上成功测试。