用vbox替代模拟器开发android应用

本文介绍了如何使用VirtualBox替代Android模拟器进行应用开发。通过Android-x86项目获取ISO,安装到VirtualBox中,并解决网络连接问题,使ADB能连接到虚拟机。详细步骤包括设置Host-only Adapter网络模式,通过adb连接虚拟机,以及处理虚拟机重启后的重新连接。此外,还提到了解决虚拟机无法上网的问题,通过设置默认网关和DNS。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    这里介绍一下怎么样用virtualbox虚拟机来代替android的模拟器来进行android应用开发。为啥要用vbox来代替模拟器?嗯,这是个问题……但是我不准备解释,^-^。

    使用android原生的源代码可以编译出能够在vbox虚拟机上运行的软件(具体方法可以参见我的另一篇博客“Android移植到Virtualbox手记 ”)。但是这样编译出来的软件存在不少问题, 比如没有鼠标光标,DHCP也存在一些问题。我推荐使用android-x86项目所提供的软件。该项目的网站是http://www.android-x86.org ,现在项目的完成度已经相当高,让人印象深刻。

    如果只是想体验一下x86的android,可以直接下载该网站所提供的ISO文件。如果要做开发,还是推荐下载源代码,自己编译。源代码的下载方法和编 译方法在该网站上有详细的介绍,我就不再罗嗦了,唯一需要说明的是,目前下载下来的源代码编译还会有一个错误,需要对opencore库打一个补丁(下载地址 )。这个补丁也是该项目提供的。

    通过源代码可以编译出来一个ISO文件,可以很顺利地安装到vbox虚拟机上。安装方法在网站上也有详细介绍。鼠标的用法与模拟器差不多,有几个主要的按键定义如下:

    菜单键 -- 104键盘的菜单键(在右Alt和右Ctrl键之间的那个键)

    返回键 -- ESC键

    Home键 -- 标准键盘的Home键或者104键盘的窗口键(在左Alt和左Ctrl键之间的那个键)

 

    好,现在假设你已经创建了一个vbox虚拟机,并且已经安装好了android系统。下面说明如何用这个虚拟机来开发应用。我的计算机装的是windows,linux应该也类似。

    其实要用虚拟机来开发应用,最关键的一个步骤是要让adb能连接到虚拟机。

    (1) 设置虚拟机的网络方式。

    需要将拟机的网络连接方式设置为Host-only Adapter,如下图。

   

 

    这样,在虚拟机启动后,将通过DHCP分配到一个IP地址192.168.56.xxx(我的是101,不知道是不是都一样)。有两种方法可以知道虚拟机分配了什么地址。

    第一种方法,在虚拟机启动后,在屏幕的左上角如果如果出现两个计算机叠在一起的图标,就说明网卡分配到了IP地址,用鼠标按住上方状态条拉下来,就可以看到所分配的IP地址,如下图。

   

    第二种方法,在虚拟机中按下alt+F1,会进入命令行界面,执行netcfg命令,会列出当前网络的信息,在其中可以看到eth0接口的IP地址。

    好了,下载你知道了虚拟机的IP地址,可以试一下通过主机ping虚拟机,看能不能ping通。如果通了,那么恭喜你,你的安装工作已经完成了,下面就是怎么用的问题了。

    (2) 使用adb连接虚拟机的android系统

    到windows的命令行方式下,转到android SDK的tools目录。什么,那位说你还没有安装SDK……@%#&*,好吧我承认我说漏了,你先回家装一下,装好再回来。

    执行下列命令:

    set ADBHOST=192.168.56.101(改成你的虚拟机的IP)

    adb devices

    执行第二个命令后,如果adb daemon能正常启动,并且打印出发现emulator-5554设备,就说明adb已经连上了虚拟机了。可以执行adb shell,连接到虚拟机的shell上试一下。

    (3) 好,现在adb已经连上虚拟机了,下面就可以通过eclipse开发应用了。开发方法与原来一样,只是在运行(或调试)时,直接选择 Run As-->Android Application即可,应用会被下载、安装到虚拟机上,就像运过来使用模拟器一样。不过这个速度就非模拟器可比了。

    (4) 如果虚拟机重启了,那么adb daemon会失去与虚拟机的连接,并且不会自动与新启动的系统连接。这时需要手动杀死daemon并重新启动:

    adb kill-server

    adb devices

    这样,adb又可以重新连上虚拟机了。

 

    好了,到这里本文的主要内容已经写完了,下列再补充一点。虚拟机在使用Host Only网络连接方式时,在默认情况下虚拟机是连不到外部网络的,因此在android中启动浏览器时会发现上不了网。这个问题的原因是vbox的 DHCP server在这种情况下没有为虚拟机配置缺省网关和DNS服务器。解决这个问题的方法是使用windows系统自身所提供的网络共享功能(不知道怎么用 的情自行学习),并为虚拟机手动配置缺省网关和DNS服务器:

    在Android图形界面下按下Alt+F1,进入命令行界面,快速执行下列命令(是的,要快速,否则图形界面很快就会重新启动):

    设置缺省网关:

    #route add default gw <ipaddress> dev eth0

    设置DNS:

    setprop net.dns1 <ipaddress>

    setprop net.dns2 <ipaddress>

    setprop net.dns3 <ipaddress>

    setprop net.dns4 <ipaddress>

    图形界面重启后,在打开浏览器,就会发现一切又都OK啦。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值