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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

因版的字数限制,上半部分请跳转以下链接
传送门:Android工具分享,如何提高Android虚拟机的速度(一)
将 Android x86 VM 连接到 AVD 和 Eclipse

我们的目标是能够从 Eclipse 中使用 AVD 调用新的 VM 来测试和调试应用。为了做到这一点,网络配置必须允许主机(运行Eclispe的机器)和 VM 之间的连接。为此,在 VirtualBox 的 Network settings(网络设置)中我们有几个选择:

  • use Bridge mode(使用桥接模式):模式可行,但是需要宿主机配置 DHCP 服务器;
  • host only network(仅与宿主机有网络连接): 在 VM 和宿主机之间使用内部网络;这是最简单的方案。

一旦设置好网络,即可重启 VM 并进入命令行模式(Alt+F1),然后输入:

netcfg

该命令将输出 VM 当前的 IP。一般情况下,VM 大概是 192.168.56.101 这样的IP,而宿主机将会绑定为 192.168.56.1.

在宿主机打开一个命令行窗口,然后 cd 进入 android 的 platform-tools 目录。

./adb connect 192.168.56.101

该命令将会把 VM 注册成一个新设备:

现在,我们可以在 Eclipse 环境中直接调用 Android x86 VM 运行和调试应用程序了。

正如你所将要看到的,速度提升非常非常显著:

VM 启动只需 2 秒而不是 30 秒。 应用的运行和调试速度飞快(不会像使用 ARM 仿真器那样有延迟现象)。

添加 SD 卡

可以参照 http://www.android-x86.org/documents/sdcardhowto 所提供的文档。

将文件伪装成 SD 卡

从 Android 命令行运行:

dd if=/dev/zero of=/data/sdcard.img bs=1024 count=65536 (64MB image) losetup /dev/block/loop7 /data/sdcard.imgnewfs_msdos /dev/block/loop7

然后以 debug(调试)模式重启 VM,以 RW 模式重新挂载分区,然后编辑 menu.lst,向 kernel 中添加一个参数。

SDCARD=/data/sdcard.img使用独立的分区

这种玩法需要额外做一点工作。

首先需要在 VirtualBox 中创建一个新的硬盘,然后将其配属给 VM。

然后以调试模式启动 VM。使用 fdisk 创建一个新的分区。分区创建完成后,对它进行格式化:

newfs_msdos /dev/sdb1

现在编辑 menu.lst 文件添加参数:

SDCARD=sdb1将 Android_x86 用作测试环境的反响用法

目前为止,x86 VM 如期运作,除了速度之外我没有提到任何真正的差别。所有的 Android 项目得以正常部署。Android API 示例项目在 NDK 之外运行正常。

唯一的可见问题是 Gallery app(Cooliris)应用无法正常运行,使用了某个 nightly build 镜像之后,效果略微好转,但仍然有问题。

还有个问题是,在10%左右的情况下,VM 无法启动,必须对它进行复位操作。由于启动非常迅速,这不并不是什么大问题,因此我没有作深入研究。

速度

速度差别真的非常显而易见。

下面的表格显示了速度提升的大概情况:

Android ARM 仿真器的速度约只有 Nexus One 的一半,而 Android x86 VM 的速度大概要快上两倍。如何提高Android虚拟机的速度(一)


0 个回复

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