使用像VMWare/VirtualBox这样的虚拟机进行调试?

20

我正在开发一款Android应用程序,但是我对我的模拟器的性能感到不满。我已经在VMware和VirtualBox中都安装了一个Android PC版本

我可以将其用作模拟器吗?如果可以,如何操作?如何将ADB连接到运行PC Android的虚拟机上?

我在某个论坛上看到要使用这种方法,但是我的VMs Android没有特定的IP地址。

我该如何连接呢?

5个回答

12

解决方案:

我强烈建议使用Android x86,因为它比Android模拟器快得多。通过Android x86 4.2,您可以安装和使用任何应用程序,并像在平板电脑上一样与“Google Play”同步。

使用最新的Android X86 4.2 Jelly Bean和Virtual Box

我找到了不同的连接Internet和adb的方法。

步骤1:选择适配器

情况1:仅限Internet {NAT适配器}

最简单的解决方案是只使用NAT适配器,如果主机连接到Internet,则会直接连接到Internet,但是您将无法使用此设置进行adb连接。在这里,您将获得公共IP,因此无法连接到主机计算机。

NAT adapter

情况2:仅限adb {Host Only Adapter}

最简单的解决方案是只使用Host Only Adapter

Host Only Adapter Settings

注意:由于DHCP服务器设置的原因,默认的Host Only适配器可能无法工作,因此要么创建新的HostOnlyAdapter,要么针对现有的适配器运行DHCP服务器

情况3:adb和Internet都需要{Bridge Adapter}

在这种情况下,您必须进行细心处理。

如果您使用LAN进行Internet连接,则应使用带有以太网卡的桥接适配器,它将为您提供本地IP,并且虚拟机将使用主机机器连接到Internet。

如果您使用WiFi,则只需通过选择WiFi适配器执行相同操作。

对于其他类型的连接,您应该按照同样的方式进行操作。

Bridge Adapter

步骤2:与adb连接

要检查IP地址,只需按Alt+F1 {进入控制台} [要切换回图形视图,请按Alt+F7]。

然后会看到控制台窗口,输入netcfg

它将显示IP地址。

现在转到您的主机上并打开命令提示符,移至adb目录,键入

 adb connect {your ip address}

示例

adb connect 192.168.1.51

注意:如果adb未运行或未响应,您可以执行以下操作

adb kill-server

adb start-server 

你可以检查连接到adb的设备

adb devices

1
非常好的解释。非常感谢。 - Demir

11

根据您编辑的问题,如果您想将其连接到ADB,则需要检查虚拟机的IP地址:假设您使用VMWare Player;

在虚拟机中按下 ALT-F1,使用 ifconfig 命令查看分配给网络设备(通常为 eth0)的IP地址。然后可以按 ALT-F7 返回到Android UI。

接下来,在您的主机PC上执行 adb connect [ANDROID_X86_IP] 命令将SDK调试器连接到Android x86 VM;例如:adb connect 192.168.1.100:5555

然后您应该能够看到已连接的设备列表,并能够用于调试。

ADB通常位于计算机用户文件夹的子文件夹中: ~/Android/Sdk/platform-tools。建议将其添加到您的路径中,这样您就可以在终端中随时访问它。我个人在 ~/.bash_profile 中使用以下代码:

#add Android platform-tools directory
PATH=~/android-sdks/platform-tools:$PATH
export PATH
如果ADB第一次失败,您可以尝试使用adb kill-server ; adb start-server重置ADB。
如果您想进一步了解,请查看Android-x86网站。它也有许多可供下载的磁盘映像

1

这并不是对你问题的直接回答,但你是否看到了增加模拟器性能的技巧(阅读为什么Android模拟器很慢?我们如何加速Android模拟器?

a) 使用Intel Atom x86而不是ARM

b) 使用hw.gpu.enabled

我认为这使得模拟器在性能上与真实设备相当可比。

更新1

一般来说,想法是配置Android PC使用tcp/ip进行adb连接。您可能需要在VMWare或VirtualBox上调整网络设置。

有用的链接(试图实现您想要的)

无网络连接 - 在 VMWare Fusion 上运行 Android-x86 http://lkubaski.wordpress.com/2012/08/15/在 VMWare Player 上启用网络的运行 Android/ http://www.transdroid.org/2011/01/26/techpost-debugging-against-a-virtual-machine-android/


我已经检查了许多关于提高模拟器速度的门户网站,但它们都不起作用。尽管在虚拟机上运行应用程序时速度更快,但主要问题是如何解决而不是寻找替代方案。 - Trikaldarshiii
明白了。虚拟机比模拟器在Intel Atom x86上运行得更快有点奇怪。我相信它也使用了虚拟化技术(所以它们应该是可比较的)。让我查一下VMWare或VirtualBox的信息,然后再回复你。 - Victor Ronin

1
  1. 在VMware上安装Android x86

  2. 运行Android终端并输入命令"ifconfig eth0"

  3. Windows用户需设置环境变量:C:\Users\user-name\AppData\Local\Android\sdk\platform-tools

  4. "adb connect虚拟机IP地址":5555,现在可以在VMware上运行应用程序了

-2
为了节省时间: http://aztcs.org/meeting_notes/winhardsig/Android-vm/Android-VMwarePlayer-Win.pdf 这是一个很好的链接,可以帮助你开始使用VMWARE。
如果你安装在以下目录/opt/android-sdk-linux中, 请设置路径变量。
export ANDROID_HOME=/opt/android-sdk-linux

export PATH=${PATH}:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

执行路径后,如果您在控制台中键入"android"并看到应用程序,则说明您的路径设置正确。

创建一个Hello World应用程序(如果您有问题,请正确安装SDK)

运行Hello World应用程序

在VM中按ALT-F1并使用netcfg命令了解分配给eth0设备的IP地址。然后,您可以按ALT-F7返回Android UI。然后,在您的主机PC上,执行adb connect [ANDROID_X86_IP]以将SDK调试器连接到Android x86 VM;例如:adb connect 192.168.1.100:5555。如果有问题,请先停止服务adb kill-server;再启动服务adb start-server。

在控制台中更改目录至/android-sdks/platform-tools,然后键入:

./adb connect 192.168.1.100 (请注意,需要192.168.1.100,它默认端口为5555)

我必须使用./adb前缀,然后配置VMWARE实例。

避免使用XAML让我感觉轻松自在。


2
对不起,但第一个链接很糟糕。 - 0x5C91

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