A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张然龙 于 2014-7-30 11:58 编辑

做了几天开发之后,我发现 Android 仿真器实在是我的心头之痛,因为它实在太慢了。

首先,它启动缓慢,而且即便使用快照(Snapshot)加速启动过程,该执行过程仍然非常缓慢,特别是如果使用了调试模式的话。

就算调整 Qemu 参数也收效甚微,仿真器依然非常慢,这可能是大多数 Android 开发人员想通过 USB 连接实体设备的原因了。

不管怎样,我想要找到一个解决方案,同时也是因为我想能够通过一辆“宝马”来验证某个应用,而不是通过一个缓慢的应用。

“仿真”对“模拟”

我不是苹果软件开发人员,但貌似 iPhone 模拟器不会有 Android 仿真器同样的问题。

导致该局面的原因之一由于 iPhone 仿真器使用的 CPU 指令和宿主机(x86)所使用的完全相同,因此它没有运行“真正的仿真器”。

相反,Android 仿真器在 x86 处理器之上模仿真正的 ARM 处理器。这造成了很大的开销。

至少,从快速测试和验证的目的出发,我不需要模仿一个 ARM 处理器,我只需要能够运行 Android 和我的应用就够了。

Android_x86

幸运的是,有个开源项目将 Android OS 移植到了 x86 CPU 之上:http://www.android-x86.org/

该项目提供了数个镜像文件,即使从逻辑上来说,他们无法与所有 Android SDK 发行版保持同步更新,但他们为 Android 2.3 这个令人关注的 target(目标)提供了镜像。

通过 VirtualBox 设置 Android_x86

第一步是下载一个 Android_x86 ISO 镜像。我使用了从 http://www.android-x86.org/download 下载的android-x86-2.3-RC1-eeepc.iso。

接下来是创建可运行该镜像的虚拟机(Virtual Machine)。

我用了 Virtual Box 来创建,但据我了解,使用 QEmu 也是可以的。

因此,在 Virtual Box 中你应该创建一台新的机器:

  • target OS(目标 OS): 选择 Linux
  • target OS version(目标 OS 版本): others
  • 我选择了 1GB 内存和 1 个 CPU(其他选项保留默认值)
  • 增加一个新的硬盘:VDI drive,动态大小,512M
  • 在 storage(存储)选项中添加一个指向所下载 iso 镜像的 CDROM

从 boot(启动)菜单中选择 install to hard disk(安装到硬盘)。

在设置过程中,进行如下操作:

  • 创建一个新的分区
  • 将它格式化成 ext3 格式
  • 选择该分区用作 Android 安装

一旦安装完成:

  • 关闭 VM(虚拟机)
  • 移除指向 ISO 的光驱(通过 VirtualBox 的配置对话框)

启动 VM;现在应该有一个可以运行的 Android x86 镜像了。

但由于默认情况下其配置是为 Eee PC 设定的,用于测试面向智能手机的应用来说并不非常理想。

我们将修改设置来匹配手机屏幕。

关闭虚拟机和 VirtualBox。

第一步是定义定制的分辨率模式。我定义了 3 种模式:

VBoxManage setextradata "Android2.3" "CustomVideoMode1" "320x480x16" VBoxManage setextradata "Android2.3" "CustomVideoMode2" "640x960x16" VBoxManage setextradata "Android2.3" "CustomVideoMode3" "480x720x16"

其中 "Android2.3" 是 VirtualBox 中虚拟机的名称。

现在已经新的模式已经声明好,可以开始使用它们了。为此我们需要修改 kernel 参数。

为了完成这项工作,我们需要重启 VM,并在 boot 菜单中选择Debug mode(调试模式),而后 Android 将会以命令行模式启动。

启动 VM。

启动之后,我们可以将 boot 分区以 read/write(读写)模式重新挂载,以便于修改 Grub 配置。

mount -o remount,rw /mnt

然后可以编辑 menu.lst 文件。

vi /mnt/grub/menu.lst

然后是复制第一个菜单条目(3行)并编辑 kernel 参数(第一个 "title" 条目及之后的两行)。

默认参数是:

quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DPI=240 SRC=/android-2.3-RC1

我使用的参数是:

quiet root=/dev/ram0 androidboot_hardware=generic_x86 acpi_sleep=s3_bios,s3_mode DPI=240 UVESA_MODE=480x720 SRC=/android-2.3-RC1

对该标题设定所要的参数。

如果希望能够在启动时选择分辨率,还可以使用:

quiet root=/dev/ram0 androidboot_hardware=generic_x86 acpi_sleep=s3_bios,s3_mode vga=ask SRC=/android-2.3-RC1

保存 menu.lst 文件(:wq)并使用 VirtualBox 菜单重启 VM。

现在可以启动一个外观类似手机的 Android VM了。

使用 VM 的快速提示:

  • 如果再 Android 屏幕上没有看到鼠标指针,可以通过 VirualBox 菜单禁止 mouse integration(鼠标整合)( Host Key + I)。
  • "Windows 键"相当于 Android 的 Home 按钮。
  • "Esc" 相当于 Android 的 Back 按钮
  • F2 相当于 Android 的 Menu 按钮
  • F3 相当于 Android 的 Search 按钮
  • Alt+F1 => 切换到控制台模式
  • Alt+F7 => 切换到图形界面模式



因为版的字数限制,下半部分内容请跳转以下链接
传送门: Android工具分享,如何提高Android虚拟机的速度(二)



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马