android 模拟器运行arm镜像

在Win10上使用最新版AndroidStudioElectricEel时,作者遇到AVD无法运行的问题。错误信息指出AVD的CPU架构arm64不被QEMU2模拟器在x86_64主机上支持。作者分析这可能是由于API级别超过28的Android版本不再允许主机和客体架构不匹配。降低到Android8.0的arm镜像可以解决问题,但此限制给开发者带来不便。作者考虑提交bug报告或自编译去除限制,并怀疑此举可能是为了性能考虑。

问题现象

win10上安装了最新的android studio

Android Studio Electric Eel | 2022.1.1
Build #AI-221.6008.13.2211.9477386, built on January 11, 2023
Runtime version: 11.0.15+0-b2043.56-8887301 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0

创建如下的avd设备

运行后模拟器提示无法运行,切换到命令行添加verbose参数运行模拟器

D:\Users\xxx\AppData\Local\emulator\emulator.exe -netdelay none -netspeed full -avd adv_debug  -verbose

终端提示如下:

PANIC: Avd's CPU Architecture 'arm64' is not supported by the QEMU2 emulator on x86_64 host

网上找了很多也没有找到具体原因。

分析

查看emulator的源码发现上述打印是在提交(99c2455f4efd32f2d661dceea46fbe836a6d14c4,)中加入的

按照提交注释是说apilevel > 28,就是新的android 9.0及以后版本上不在支持host和guest (android)不匹配的情况,说白了就是x86上只能跑x86版本的android,arm机器上只能跑arm版本的android镜像。具体为什么也没有说,但是我想说这个限制完全和qemu设计的初衷不匹配了,qemu本就是支持在一个实体cpu上模拟出不同架构的cpu,对于需要针对cpu相关的调试可能就没办法用模拟器验证调试了。

然后我用了android 8.0 版本的arm镜像确实可以运行起来,但是对于这个限制对于我们开发者来说还是很不方便。后面提一个bug咨询下,或者下载代码自己编译去掉限制看看有什么问题(有点怀疑是为了性能考虑)。

原因

待分析。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值