使用HAXM加速的Android x86模拟器(和一些问题)

装了个Android SDK r17,看文档说可以支持在windows下加速emulator-x86模拟器,于是去Intel的官网装了个加速外挂(IntelHaxm),和Intel发布的2.3.7系统镜像。用html5的benchmark测试一下,发现模拟器的速度真的有明显的提高:

1. 安装IntelHaxm前:x86是2fps左右

2. 安装IntelHaxm后:arm是2fps左右,x86是13fps

界面的速度相差不大,但如果是用来测试游戏(例如3D渲染)的话,加速的效果会比较明显,感觉速度可以跟以前在vmware上跑Android-x86有得拼。很推荐用来调试3D。

 

注意:

1. 并不是所有Android程序都可以运行在加速模式的x86模拟器下,如果程序的AndroidManifest.xml指定android:installLocation="preferExternal",则安装失败,提示

Installation error: INSTALL_FAILED_CONTAINER_ERROR

http://code.google.com/p/android/issues/detail?id=27872

如果是android:installLocation="auto"或缺省都可以安装,但无法移动到SD卡。

 

2. 多次旋转后可能无法改变重力方向(除非退出应用程序)

 

(不过Android官方出的x86的4.0.3系统没有这两个问题)

 

 

----------------------

以下是相关链接:

1. Intel官网出的镜像和加速器:(20150416:注意,现在最新的r05不支持XP,只有r03和之前版本支持XP,详细见下)

http://developer.android.com/guide/developing/devices/emulator.html

http://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager/

http://software.intel.com/en-us/android/

http://software.intel.com/en-us/articles/android-237-gingerbread-x86-emulator-image-add-on/

下载addon_intel_sysimg_2.3.7_api-10.zip

和extra_intel_haxm-windows.zip

 

2. 因为最近Android官网的下载连接不到(4/14貌似可以正常下载更新了,请尽量用SDK管理器下载),所以Android SDK r17的组件是在这里下载的(sdk入门包http://dl.google.com/android/android-sdk_r17-windows.zip则是用迅雷下载的),然后自己解压到一起:(20150416:建议使用最新版本的SDK,下载请使用代理或host工具,20150608:请使用最新的sdk安装包,因为很可能旧的SDK Manager无法更新最新的组件或直接无法显示组件,需要重新下载新的SDK Manager,最好的做法是重新安装一个新的环境(多个ADT共存),在使用一段时间后再切换过去以避免升级错误造成的麻烦)

http://sourceforge.net/projects/standalonesdk/files/

* 目录/tools: android-sdk_r17-windows.zip 解压,包括顶层目录的AVD Manager.exe和SDK Manager.exe

* 目录/platform-tools:platform-tools_r11-windows.zip解压

* 目录/platforms:android-2.3.3_r02-linux.zip解压,作为其中的一个子目录

* 目录/add-ons:addon_intel_sysimg_2.3.7_api-10.zip解压,作为其中的一个子目录

最后一定要运行extra_intel_haxm-windows.zip内的安装程序,安装一个服务,否则emulator-x86.exe是不加速的。

 

3. 测试页面(桌面环境下为60fps):

http://html5-benchmark.com/

安装和运行avd的方式略,这里我安装了两个avd,一个叫intel,另一个叫arm,分别对应x86和arm的CPU。

下面是我在xp下的测试截图:

 

(1)x86(IntelHaxm加速后,模拟器速度明显加快)

 


 

 

 

---------------------------------------------

 

 

(2)x86(IntelHaxm加速前)

 


 

 

---------------------------------------------

 

(3)arm(IntelHaxm加速后,但模拟器速度没有影响)

 


 

 

 

 

20120524:

Android官方自己放出了x86的镜像(Android 4.0.3),默认的屏幕相对于上面那个要慢些,不过如果选择QVGA则是最快(达到20fps)。平板虽然也比较慢,居然和默认的手机屏幕差不多快(7fps左右)。

 

最值得高兴的事情是,它没有intel发布的2.3.7镜像的那两个bug——

可以正常转屏,

也可以正常安装

android:installLocation="preferExternal"

的应用程序。

 

默认的WVGA800(7fps)


 

QVGA(20fps)

 


 

平板(7fps)


 

结论:速度跟屏幕密度有关,如果想跑快些,就选QVGA(低密度)吧。

 

 

 

 

 

20120615

可以使用的命令行启动方式(Windows下):

>emulator-x86 -show-kernel -noskin -dpi-device 480 -avd intel

(-dpi-device可以缺省,也可以按实际情况设置——数值越小,屏幕密度越大)

 

 

20120621:

貌似加速过的Android 4.0.3镜像也有一些问题(安装多次会不成功?),所以习惯上我仍然是用2.3的ROM(个人喜好而已)进行加速的模拟。

其实HAXM加速还有一个大问题,就是启动过后XP系统无法正常休眠(我觉得可能和读写硬盘有关)

 

 

 

 20130522:

1. HAXM貌似只能用于加速intel较新的CPU,对AMD的CPU无效(20150416:准确说应该是支持VT-x, EM64T, and Execute Disable Bit虚拟化技术的CPU,i3的CPU基本都支持了,写这篇文章的时候2012年已经很普及)。

2. 高版本的Android x86 ROM(例如4.1.2),可能会出现这样的情况:

用AVD Manager.exe启动会出错,无法运行模拟器;

但用命令行却可以运行(在控制台中使用emulator-x86 -avd <AVD名称>)。

猜测可能是因为AVD Manager.exe实际上调用了Java虚拟机,致使虚拟内存不足。

 

 

20131026:

附csdn论坛上提供的代理服务器IP(打开SDK Manager.exe,在Tools->Options中设置)

HTTP Proxy Server: 203.208.46.180

HTTP Proxy Port: 80

然后勾选下方的Force https://

(仅供参考,不保证能用) 

 (2015-04-16:貌似已经失效,勿使用,建议使用hosts工具或加速代理)

(20150716:国内镜像下载链接汇总:

http://www.androiddevtools.cn

 

 

20140401:

有时候4.4的ROM用虚拟机可以上网,但2.3的不可以,可以用以下方式解决

> adb shell

进入命令行,然后执行

# getprop

查看其中有一个系统属性

[net.dns1]: [10.0.2.3]

把这个属性改为另一个值

# setprop net.dns1 10.0.2.4

4.4的ROM之所以没有问题,是因为它默认有两个DNS:net.dns1和net.dns2,

分别是10.0.2.3和10.0.2.4

(20150805补注:

如果模拟器重启,这个设置可能会消失

另外出现上不网的情况还有可能是:启动的时候禁用了网卡(或拔掉),但后来又连上(或激活了网卡),这时只要重启一下模拟器即可(确保系统启动过程中是有网络的)

)

 

20140604

启动模拟器时出现PANIC: Could not open: <AVD名称>

见:http://www.dotblogs.com.tw/nethawk/archive/2013/04/21/102043.aspx

解决办法是在启动模拟器之前指定环境变量(或者添加到全局环境变量中)

set ANDROID_SDK_HOME=D:\Users\Administrator

这个变量的值所在路径就是.android目录所在路径(或者参考AVD Manager界面上显示的路径)

 

 20140715

模拟器无法转屏(转屏后显示内容不会旋转)

Android - Emulator in landscape mode, screen does not rotate

http://stackoverflow.com/questions/7394447/android-emulator-in-landscape-mode-screen-does-not-rotate

原因好像是新版的SDK Tool(AVD管理器)在创建AVD的时候默认不勾选hardware keyboard present选项,如果要打开的话需要在Android Virtual Device Manager中按Edit按钮勾选该选项。

(这个也解决在Android模拟器中无法用硬件键盘代替软键盘的问题)

 

 20150131

安装HAXM提示错误:Intel Execute disable Bit(XD)is not turned on

 

可能没有开启BIOS设置中的虚拟化开关,

也可能是C:\boot.ini中包含了/NOEXECUTE=alwaysOff,去除这个参数即可

下面那篇文章是把alwaysOff替换成OPTIN,其实只要删除就可以了。

 

写道
http://bbs.shouyoudao.com/b/forum.php?mod=viewthread&tid=78&extra=page%3D1
intel Execute disable Bit(XD)没开启的解决办法

1,先进去bios找到intel Execute disable Bit(XD)这项修改成Enabled。
需要修改的项:Intel(R)Virtualization Tech (中文:因特尔虚拟化技术)把默认Disabled (中文:关闭)状态修改为Enabled(中文:开启)。
如果看到Execute-DisableBit Capability (中文:执行禁用位功能)这项显示为disabled(中文:关闭)也要修改成Enabled(中文:开启)。
注意:第一种方法不可用的情况下(即电脑BIOS里没有Intel execute disable bit 这项时使用第2种方法)

2,如果电脑bios界面没有intel Execute disable Bit(XD)这项, 右击“我的电脑”-属性-高级
点击“启动和故障修复”的“设置“按钮
点击“编辑”可见到如下所示的文档:
Multi(0)disk(0)rdisk(0)partion(1)\WINDOWS="Microsoft Windows XP Proressional" /NOEXECUTE=OPTIN /FASTDETECT /NOEXECUTE=alwaysOff
把NOEXECUTE=alwaysOff修改为NOEXECUTE=OPTIN,修改后为
Multi(0)disk(0)rdisk(0)partion(1)\WINDOWS="Microsoft Windows XP Proressional" /NOEXECUTE=OPTIN /FASTDETECT /NOEXECUTE=OPTIN

 

 

 

 

 

2015/04/16

有时候模拟器(一般是android 2.3.3的intel CPU的rom)启动后的分辨率不对(程序图标看上去偏小),如果要恢复正常的分辨率,可以尝试在命令行中添加-dpi-device 480参数(或更大的数字),

 

如果要重现这种不正常情况,可以用-dpi-device 1

 

2015/04/16

似乎intel后来发布的版本(从r04开始)不支持XP,如果要支持Windows XP,需要安装r03(貌似)

http://software.intel.com/sites/default/files/haxm-windows_r03.zip

(或者在网上搜索haxm-windows_r03)

 

 

 

(以下个人见解)

高版本的rom(例如android 4.x)因为模拟器做了较大的优化,所以直接跑ARM版ROM也不会非常卡(虽然仍然会慢)

速度比较大概是这样

HAXM+Intel x86+android 2.3.x 比 ARM 7 + android 4.x 快 (HAXM比较流畅)

ARM 7 + android 4.x 比 ARM + android 2.3.x 快一些(只要是ARM都卡,但4.x会容易接受一些,2.3.x慢得难以忍受)

HAXM+Intel x86+android 2.3.x 比 HAXM + Intel x86 + android 4.x 快(4.x加速效果很差)

 

 

 (20150420)

创建平板(tablet)的avd时,需要指定VM Heap为96(默认的16M太小,程序很容易崩溃,用系统的Launcher启动器时会出错)

 

 

 

 

(TODO)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值