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咨询下,或者下载代码自己编译去掉限制看看有什么问题(有点怀疑是为了性能考虑)。

原因

待分析。

Genymotion模拟器是一款强大的Android开发工具,专为开发者提供高效、快速的Android虚拟设备环境。它基于Oracle的VirtualBox技术,支持在Windows、Mac OS X和Linux等操作系统上运行。Genymotion以其流畅的性能和高度的定制性赢得了开发者们的青睐。 "Genymotion模拟器兼容ARM"这个标题意味着Genymotion能够处理ARM架构的应用程序,ARMAndroid设备普遍采用的处理器架构。在某些情况下,由于大多数Android应用是针对ARM架构编译的,所以在基于x86架构的模拟器运行可能会出现问题。Genymotion通过内置的兼容性层解决了这个问题,使得开发者能够在Genymotion上无缝地测试和运行ARM应用,无需进行额外的转换或编译。 描述中提到的zip文件可能包含了一个特定版本的系统镜像或者特定的ARM兼容性补丁,用于增强Genymotion模拟器ARM应用的支持。当你将这个zip文件拖入正在运行模拟器时,Genymotion会自动检测并开始安装过程。用户界面会显示相应的提示,指导你完成安装。安装完成后,为了确保所有更改生效,你需要重启模拟器。这是为了确保新安装的组件能够正确加载,并且模拟器的所有部分都与新的配置同步。 "系统"这个文件可能是包含了Android系统的镜像文件,其中包括了操作系统的内核、库、框架以及其他必要的组成部分,这些都是让模拟器运行Android应用程序所必需的。而"META-INF"文件夹通常在归档文件(如ZIP)中用于存储元数据,如数字签名信息,这在软件分发和安装过程中用于验证文件的完整性和来源的合法性。 Genymotion模拟器的这个特性使得开发者可以在非ARM硬件上测试应用程序,这对于那些没有实际ARM设备的开发者来说是一大福音。它提供了与真实设备相似的测试环境,帮助开发者确保他们的应用在各种设备上都能正常工作。这个过程简化了开发流程,提高了工作效率,是Android开发中不可或缺的工具之一。通过持续更新和优化对ARM的支持,Genymotion保持了其在模拟器市场的领先地位。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值