Android 模拟器随 Android Studio 提供。
25.3.0 之前的模拟器版本是作为 Android SDK 工具的一部分分发的。
要确保您拥有最新版本,请检查 SDK 管理器以获取更新。
要下载 Android 模拟器的早期版本,请参阅模拟器下载存档。
有关 25.3.0 之前模拟器版本的发布说明,请参阅 Android SDK 工具发布说明。
要查看 Android 模拟器最新版本中已修复的问题,请参阅已解决的问题。
有关已知问题和故障排除,请参阅模拟器故障排除。
35.5.10 稳定版(2025 年 5 月 6 日)
添加了额外的 CPU 兼容性检查并附带错误消息(例如:磁盘空间不足)
修复了与 Vulkan 内存管理和无效用例相关的错误
在终端上运行时,Vulkan 快照支持得到正确检查和跳过
添加了对 VK_KHR_multiview 扩展和 A1R5G5B5 纹理格式的支持
添加了 Pixel 9a AVD
35.4.9 稳定版(2025 年 2 月 25 日)
在扩展控件中添加了用于访客 GLES 驱动程序首选项的下拉菜单
[Bug Fix]问题 #389330750:向模拟器发送包含 Ñ 字符的短信时,消息会被分割
[Bug Fix]问题 #382180488:函数 "emuglConfig_get_vulkan_hardware_gpu_support_info" 因未检测到 Vulkan 设备而崩溃
注意: Android XR 模拟器仅在 Studio 的 Canary 版本中可用
35.3.11 稳定版(2025 年 1 月 9 日)
[Bug Fix]问题 #368059211:Android Auto OS 使用 Car Service API 对 VHAL 的编程访问无法正常工作
[Bug Fix]问题 #348598513:模拟器在多线程锁中存在不必要的线程不安全公共方法
[Bug Fix]问题 #356896486:在使用 -feature -Vulkan 运行时,真正禁用 Vulkan API 调用
35.4.4 Canary 版(2024 年 12 月 12 日)
全新 Android XR 模拟器
我们添加了一个新的实验性 Android XR 模拟器,用于开发和测试使用 Jetpack XR SDK 为头戴式设备构建的应用。请参阅 Jetpack XR SDK 设置,了解有关安装 Android XR 模拟器和设置开发环境的信息。
Android XR 模拟器是一个实验性工具。尽管如此,我们还是决定提前与您分享,以便您及早进行测试。请注意可能出现的问题,尤其是在某些 Windows GPU 和驱动程序配置上。现有 2D 移动应用的兼容性测试也可能出现问题。您的反馈将帮助我们改进并指导未来的功能优先级。
到目前为止,Android XR 模拟器已在以下硬件配置上进行过测试:
- Mac (ARM)
- Windows 11
- nVidia GPU,4GB 显存,驱动程序版本 553.35 或更高版本
- 16 GB 内存或更多
- 8 核或更多
已知问题
模拟器 - 稳定性与性能
- 在某些 Windows 配置上,启动或运行应用程序时可能会发生严重的系统锁死或崩溃。请务必按照 Android Studio 开发者指南启用 WHPX。
- 在暂停-恢复周期后(例如合上笔记本电脑再打开),笔记本电脑上的 AVD 或 UI 元素无响应。
- 从“主屏幕模式”切换到“全屏模式”时偶尔崩溃
- Gemini API 尚不可用;Gemini API 启动模板应用将崩溃。
模拟器 - 模拟输入和输出
- 搜索和编辑字段的虚拟键盘在视野中可能仅部分可见
使用鼠标和键盘无法在 z 方向(屏幕内外)移动元素
AVD 麦克风主机音频输入不稳定可能导致 AVD 重启和崩溃。
声音有时有静电或失真。
当相机移出虚拟客厅时,渲染错误可见。
Windows 配置显示颜色比平时暗。
在 macOS 上,模拟器空闲并锁定屏幕后,音频不再起作用。(重启模拟器即可恢复。)
当主机更改 Wi-Fi 时,网络连接中断。
启用大写锁定后,仍键入小写字母。
在某些 UI 元素上使用触控板进行拖动滚动可能无法按设计工作。如果不行,请改用鼠标滚轮滚动。
在某些 Windows 系统配置上,Chrome 中的文本、UI 和其他故障模糊不清。可能的解决方法:启用 WHP。
模拟器 - 模拟平面和锚点
锚点有时不会在相同位置附近重新生成
- 可移动窗格可能不会锚定到墙壁或天花板
- 模拟平面与直通模式下 3D 房间的物理布局不匹配
- 虚拟房间中锚定对象的整体受限区域
- Windows 上直通视图中可见的小伪影
- 在某些情况下,放置锚点可能导致应用崩溃
- 在 Windows 上将应用移近地面时,应用顶部可能会出现黑线
- 模拟器 - 其他
模拟器仅以“独立”模式启动。“嵌入式”模式(嵌入式 UI)尚不支持。
- 在 Windows 上使用模拟器登录账户可能会导致模拟器停止响应
- 窗口的 UI 内容在调整大小后可能会消失(解决方法:按“Home”按钮)
- 在 JXRCore ActivityPanelTest 应用中,辅助面板最初不显示
- 快速设置项可能会在长时间后从系统设置中消失。
- 模拟器 UI 最初可能会出现在屏幕区域之外。如果出现这种情况,稍微调整模拟器窗口的大小,它应该会重新回到原位。
- 在 Windows 上使用 Chrome 远程桌面时,模拟器可能无法启动
- OpenXR 目前不支持在模拟器上运行,OpenXR 应用可能会导致模拟器崩溃
- 在 Windows 上使用 Android Studio 扩展设置提交错误报告时,偶尔出现故障
- 在 Mac 上,设置应用中的“返回”图标只有在光标悬停在其附近时才能正确显示
- 在某些情况下,当“Baseline Profile”模块作为 XR 模板项目的一部分使用时,构建可能会出错
- “XR Talkback”辅助功能目前仅部分集成到模拟器中
- Scene Viewer 应用
在 Scene Viewer 中移动元素可能导致其崩溃。为了解决此问题,在尝试移动元素之前,请稍微将头部位置移离其初始位置(例如,通过平移、推拉、WASD 等)。
- 如果 3D 模型的实际尺寸小于或大于比例最小和最大限制(目前分别设置为 20 厘米和 70 米),则 1:1 实际尺寸功能将无法正常工作
- 3D 模型在加载后的第一帧可能会跳动
- 35.2.10(2024 年 10 月 1 日)
新增了 Pixel AVD,包括 Pixel 9、Pixel 9 Pro、Pixel 9 Pro XL 和 Pixel 9 Pro Fold
- 新增了 Vanilla Ice Cream(API 35)的平板电脑系统映像
- 35.1.20(2024 年 8 月 29 日)
新增 Pixel 8a AVD
- 可折叠设备的各种错误修复
- Qt 更新以及 Qt 相关崩溃和死机的修复
- [Bug Fix] 修复了 Windows 上使用 Vulkan 的应用程序崩溃和冻结的问题
- 34.2.16(2024 年 7 月 9 日)
[Bug Fix] Pixel Fold 折叠/展开时出现的 UI 冻结
- [Bug Fix] Mac M1 上 Android 版本显示为 Android Vanilla Ice Cream Preview 而非 API 35 的问题。
- [Bug Fix] 问题 #296162661:Pixel C 平板电脑模拟器上 HasSystemFeature FEATURE_SENSOR_HINGE_ANGLE 返回 true
- 34.2.15(2024 年 5 月 31 日)
与 swangle 模式和广告商清理相关的各种崩溃修复
- 34.2.14(2024 年 5 月 20 日)
使用 Android Studio Jellyfish Stable Patch 1 进行测试。
[Bug Fix] 快照有时在嵌入式模拟器上挂起
- [Bug Fix] 快照上的“否”和“取消”按钮无法正常工作
- [Bug Fix] 方向键按钮无法正常工作
- [Bug Fix] 修复了 Windows 上在某些情况下使用 ANGLE 的 GPU 模式时阻止模拟器启动的问题,并在日志中返回错误消息“Failed to initialize GL emulation”。请注意,使用选项
-gpu swangle_indirect
从命令行启动模拟器在此版本中可能仍会生成此错误。如果您仍想在此版本中使用命令行在 Windows 上启动模拟器并使用软件图形渲染,请使用-gpu swiftshader_indirect
- [Bug Fix] 键盘上的位置快捷键加载的地图无法使用
- [Bug Fix] 设置位置时,“保存路线”对话框缺失
- 34.2.13(2024 年 4 月 30 日)
使用 Android Studio Jellyfish Stable 进行测试。
更新到 Qt 6.5.3
- 与模拟器扩展控件中位置功能使用的 Google 地图 API 更新兼容,该更新将于 5 月底发生。
- 高影响崩溃修复
- Pixel AVD 的各种修复
- 更新用于软件渲染的图形库
- [Bug Fix]问题 225541819 在 x86_64 上启动 Chrome 会导致模拟器崩溃
- [Bug Fix]问题 314614435
-http-proxy
开关解析不正确 - 34.1.20(2024 年 4 月 1 日)
使用 Android Studio Iguana Stable 进行测试。
[Bug Fix] 问题 #314614435:修复 -http-proxy
开关解析不正确的问题
- 34.1.19(2024 年 3 月 7 日)
[Bug Fix] 问题 #312677259:修复了调整窗口大小后嵌入式模拟器屏幕冻结的问题。
[Bug Fix] 问题 #314614435:修复 -http-proxy
开关解析不正确的问题
- 34.1.18(2024 年 2 月 29 日)
模拟器中添加了设备,包括:
[Bug Fix] 问题 #314614435:修复 -http-proxy
开关解析不正确的问题
- Pixel Fold
- Pixel Tablet
- Pixel 8
- Pixel 8 Pro
- Pixel 7a
- gRPC 集成测试:gRPC 端点现在可用于在模拟器内运行的仪表化测试,这将能够测试真实场景。此功能使开发人员能够安全地与 Android 模拟器中托管的 gRPC 端点进行交互,通过 Android 仪表化测试。
- 各种错误修复
- Bug Fix:可折叠设备可用性改进
- Bug Fix:旋转后调整模拟器位置
- 崩溃修复
- 33.1.24(2023 年 12 月 28 日)
使用 Android Studio Hedgehog Stable 和 Iguana Beta 1 进行测试。
修复模拟器网络摄像头问题,该问题不允许以 mp4 格式进行屏幕录制。
- 修复 Pixel Fold AVD 在屏幕录制期间展开时模拟器崩溃的问题。
- 修复 Pixel Fold 显示不同的手机皮肤,带有分离键盘且无法使用的问题(已在 Windows、Mac Intel 和 Linux 上修复)
- 修复独立模式下虚拟传感器外观故障(已在 Windows、Mac Intel 和 Linux 上修复)
- 修复了一些崩溃,尤其是在关闭模拟器时
- 33.1.23(2023 年 11 月 30 日)
使用 Android Studio Giraffe Patch 4 和 Hedgehog Stable 进行测试。
新的可折叠实现,可更好地模拟 Pixel Fold 设备,支持最新的 API 34
- 图形后端升级:我们已为图形后端实现了 gfxstream 协议,此增强功能提升了系统的整体图形性能和稳定性。此外,从 API 34 的系统映像开始引入 Vulkan 1.3 支持
- 功能请求:禁用双指缩放手势或重新分配其热键的选项
- [Bug Fix] 问题 #302562962 修复了在 MacOS Sonoma 上使用模拟器网络摄像头时崩溃的问题
- [Bug Fix] 问题 #293503871 修复了重启模拟器后“麦克风”设置未保存的问题
- [Bug Fix] 问题 #270386314 修复了 AVD 屏幕最小化后侧边栏保持打开状态的动画错误
- [Bug Fix] 问题 #154896775 修复了错误提交工具
- 32.1.15(2023 年 8 月 29 日)
使用 Android Studio Giraffe Patch 1 和 Hedgehog Canary 16 进行测试。
遵守 AAE 模拟器中传感器的 GAS 硬件要求
- [Bug Fix] 问题 #266201208 API 33 上无法发送希伯来语短信
- [Bug Fix] 问题 #257097404 在 API 29 和 30 上,主机唤醒后模拟器不显示正确时间
- [Bug Fix] 问题 #228201899 在 Android 模拟器扩展控件中无法看到 Google 地图
- 32.1.14(2023 年 6 月 27 日)
使用 Android Studio Hedgehog Canary 8、Giraffe Beta 5 和 Flamingo Stable 进行测试。
修复模拟器相机方向和失真。
- [Bug Fix] 问题 #257097404 “主机唤醒后模拟器不显示正确时间”。此错误在 API 29 和 API 30 上仍然可重现。
- [Bug Fix] 问题 #243456582 “API 30 之后的 Android 版本可能无法在 Mac M1 机器上正确启动”
- 32.1.13(2023 年 5 月 22 日)
使用 Android Studio Hedgehog Canary 2、Giraffe Beta 1 和 Flamingo Stable 进行测试。
添加对 Pixel Fold 和 Pixel Tablet AVD 的支持。
- 改进 gLinux 崩溃问题。
- [Bug Fix] 问题 #215231636 “API 30 以上的模拟器在英特尔 12 代处理器上无法工作”。
- [Bug Fix] 问题 #275397905 Android 模拟器 M1 在反复将光标焦点移入移出模拟器时出现高水平崩溃。
- 已知问题:当存在较新模拟器的崩溃报告时,AVD 启动失败。有关详细信息,请参阅模拟器故障排除。
- 32.1.12(2023 年 3 月 21 日)
使用 Android Studio Giraffe Canary 10、Flamingo RC 和 Electric Eel Patch 2 进行测试。
[Bug Fix] 问题 #267647323 从 Android Studio 启动的模拟器网络无法工作
- [Bug Fix] 问题 #268498686 模拟器屏幕闪烁
- [Bug Fix] 问题 #270034824 更新到 33.1.1 版本后模拟器性能下降
- [Bug Fix] 问题 #225541819 在 x86_64 上启动 Chrome 会导致模拟器崩溃
- [Bug Fix] 问题 #257097404 主机唤醒后模拟器不显示正确时间
- 添加对 Apple M1 设备的崩溃报告
- 32.1.11(2023 年 2 月 8 日)
使用 Android Studio Giraffe Canary 2、Flamingo Beta 1 和 Electric Eel Patch 1 进行测试。
注意: Android 14 仅兼容模拟器 32 及更高版本。
- 嵌入式模拟器中的鼠标支持
- Virtio-snd 改进
- 在安装过程中解压 Android 模拟器时禁用符号链接的使用
- 修复 emulator-check 中的崩溃
- 31.3.14(2022 年 12 月 13 日)
使用 Android Studio Dolphin、Electric Eel RC1 和 Flamingo Canary 9 进行测试。
[Bug Fix] 修复登录 Play 商店时 AVD 崩溃的问题。
- 31.3.13(2022 年 10 月 27 日)
使用 Android Studio Dolphin、Electric Eel Beta 2 和 Flamingo Canary 5 进行测试。
[Bug Fix] 问题 #249948338: 时区参数不生效
- [Bug Fix] 问题 #249366543: 模拟器 -dns-server 选项在 API 31 之后无法工作
- 31.3.12(2022 年 10 月 10 日)
使用 Android Studio Dolphin 和 Electric Eel Beta 1 进行测试。
此更新包括以下改进和修复:
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 增加 API 24 及更高版本的磁盘大小
- 31.3.11(2022 年 9 月 23 日)
使用 Android Studio Dolphin 和 Electric Eel Canary 10 进行测试。
[Bug Fix] 嵌入式模拟器 AVD 在扩展控件窗口中崩溃
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- [Bug Fix] 问题 #183139207: 与模拟器激活麦克风相关的音频问题
- [Bug Fix] 问题 #229764024: 导致 UI 行为问题的 AVD 粘滞触摸错误
- [Bug Fix] 在 Mac M1 上启动 API 33 AVD 时出现错误。
- [Bug Fix] 问题 #243053479: 更新模拟器后网络速度变慢
- [Bug Fix] 问题 #244617627: Windows 和 Linux 上地图位置功能失灵
- [Bug Fix] 问题 #232971796: 扩展控件 > 手机页面上“呼叫设备”按钮无法使用
- 将 Android 模拟器更新到 minigbm
- 构建脚本迁移到 Python3
- 31.3.10(2022 年 8 月 18 日)
使用 Android Studio Dolphin Beta 5 和 Electric Eel Canary 9 进行测试。
模拟器的独立下载现已可用。如果您在使用此最新稳定版本时遇到任何问题或崩溃,请提交错误,并考虑从模拟器下载存档下载之前可用的版本。
Windows 上更好的 Unicode 路径支持
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 更好地处理模拟器关闭,以便同一 AVD 的新启动可以成功。
- 更新了可折叠 AVD 设计和默认设置
- 更新了 Wear 模拟器按钮
- gRPC 音频流改进
- 添加了可调整大小的模拟器控制台命令
- API 31 的 Chrome 修复
- [Bug Fix] Google 帐户身份验证因 GmsCore v21.42.18 失败
- 31.2.10(2022 年 4 月 20 日)
使用 Android Studio Dolphin Canary 8 和 Chipmunk RC 1 进行测试。
添加了用于加载 Vulkan 函数并带回退的实用程序
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- [Bug Fix] 修复 gcc8 构建错误
- 31.2.9(2022 年 3 月 23 日)
使用 Android Studio Dolphin Canary 7 进行测试。
此更新包括以下修复:
[Bug Fix] 忽略在 M1 上保存快照时的内存压力
- 31.2.8(2022 年 2 月 7 日)
使用 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 进行测试。
[Bug Fix] 无法登录应用程序
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- [Bug Fix] 问题 #215368358: 英特尔平台上的“adb reboot”将导致 avd 崩溃,并显示“vcpu shutdown request”
- 31.2.7(2022 年 2 月 1 日)
[Bug Fix] M1 机器上模拟器挂起错误。
[Bug Fix] 无法登录应用程序
[Bug Fix] 忽略在 M1 上保存快照时的内存压力
- 31.2.6(2022 年 1 月 20 日)
使用 Android Studio Arctic Fox、Bumblebee Beta 4 和 Chipmunk Canary 6 进行测试。
向 Wear OS 模拟器添加了 Wear 按钮。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 使 VHAL 选项卡中的所有车辆属性都可编辑。
- [Bug Fix] Google 帐户身份验证因 GmsCore v21.42.18 失败。
- [Bug Fix] Netshaper 无法与 VirtioWifi 良好配合。
- [Bug Fix] 事件鼠标控制台命令无效。
- 为本地 AVD 创建添加了 KVM 检查。
- 31.1.3(2022 年 1 月 18 日)
为 Fuchsia 启用了控制台端口。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 调整多显示器窗口大小时,忽略方向。
- Wi-Fi:添加了基于 MAT mac 地址过滤单播数据包的支持。
- Wi-Fi:修复了 vmnet 使用时崩溃的问题。
- 30.9.5(2021 年 12 月 15 日)
新增了轻松调整窗口大小至桌面或平板电脑大小的功能。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 新增了对兼容主机设备多点触控输入的支持。
- VirtioWifi:新增了对 tap 网络的支援。
- 为 Wear 系统映像启用了旋转输入。
- 修复了 gRPC 音频配置问题。
- 更新了 SensorReplay 模拟器回放以支持标准 Android 传感器。
- 通过 USB 直通将模拟器连接到外围设备和设备。
- 30.4.5(2021 年 2 月 23 日)
macOS:修复了音频输入失真问题。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 添加了对用户空间中 virtio-vsock 的支持。
- 未来的系统映像将使用 virtio-console 进行 logcat 和内核消息。
- 加快 Vulkan 渲染速度。
- 添加了在测试失败时进行快照调试的支持。
- virtio-gpu:更新了定义以支持最新的 blob 资源枚举。
- 添加了对 'asg' 类型图形传输的快照支持。
- macOS:添加了对 macOS SDK 11.1+ 构建的支持。
- KVMclock 在较新的系统映像上默认启用。
- 为 Wear 模拟器添加了心率传感器支持。
- 移除了 libportability Vulkan 后端。
- 调制解调器模拟器中添加了更多功能支持。
- 30.0.26(2020 年 8 月 16 日)
此更新包括多项新功能、对现有功能的改进和错误修复。
支持带虚拟铰链传感器和 3D 视图的可折叠设备
增加了对可折叠设备的铰链传感器支持。这需要未来的 Android 11 系统映像和 AVD 配置。3D 可折叠视图和铰链参数现已与现有可折叠预设集成。例如,以下可用于 7.3 英寸可折叠 AVD 的 config.ini
文件
可折叠设备现在还带有一个子类型参数。现在可以使用
config.ini
属性hw.sensor.hinge.sub_type = hinge/fold
。请参阅 使用 Android 模拟器开发 Android 11 博客文章以了解更多信息。hw.sensor.hinge = yes hw.sensor.hinge.count = 1 hw.sensor.hinge.type = 1 hw.sensor.hinge.ranges = 180-360 hw.sensor.hinge.defaults = 180 hw.sensor.hinge.areas = 54.7-0 hw.sensor.posture_list=4, 3 hw.sensor.hinge_angles_posture_definitions=210-360, 180-210 hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
铰链传感器现已默认启用。
如果配置了可折叠设备,模拟器现在会向访客发送铰链角度传感器更新和姿态变化。现有可折叠设备现在会在工具栏的折叠或展开按钮被按下时更新铰链传感器角度和姿态。
适用于 ARM64 主机的模拟器
Linux 模拟器源代码现在支持从 x86_64 到 arm64 主机的交叉编译,从而可以在 KVM 虚拟化下运行 arm64 系统映像。目前,仅支持 -gpu swiftshader_indirect
(Swiftshader arm64 主机渲染),但兼容的主机 GPU libEGL/libGLESv2 库也可以通过替换 lib64/gles_swiftshader 并使用 -gpu swiftshader_indirect
重新启动来使用。快照可能也无法工作(在命令行中添加 -no-snapshot
)。说明
对 Apple Silicon 的支持正在进行中。
mkdir emu cd emu repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1 repo sync -qcj 12 cd external/qemu pip install absl-py pip install urlfetch sudo apt-get install crossbuild-essential-arm64 python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
virtio-gpu 支持
在主机端添加了对即将推出的 virtio-gpu 主机一致性 blob 资源的支持。
- 由于模拟器渲染的工作方式,我们现在在 vcpu 线程中处理 virtio-gpu virtqueue(因为渲染无论如何都会卸载到其他线程)。virtio-gpu 渲染将在未来的系统映像和模拟器版本中启用。
- 在未来的系统映像中,模拟器将能够使用基于 virtio-gpu 的堆栈运行所有图形。
- 其他新功能和增强功能
USB 直通功能现已在 Windows 上通过 -qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>
提供。(这应该已经在 Linux 和 macOS 上运行)
- WebRTC 库已更新至 M83。
- 模拟器现在支持通过 WebRTC 在容器中进行音频流传输。
- darwinn 管道端点已移除。
- CUDA VPx 视频解码现已可用,如果硬件中支持 CUDA VPx 解码,可通过环境变量
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
启用。 - 在 macOS 上,Android 访客内部现已支持 SSE 4.1 和 4.2。
- 在 macOS 上,INVTSC 现已默认启用。这可以提高访客时间测量的准确性。
- 我们现在会在指标中跟踪用户选择了哪个扩展控制面板。
- 当访客内核版本 >= 5.4(R 系统映像或更高版本)时,Linux 模拟器现在使用 KVM 半虚拟化时钟。
- 模拟器现在使用 LZ4 解压访客内核,使其与现代内核管道兼容。
- 添加了控制台命令以获取模拟器 AVD 目录、Studio 嵌入式用例中的发现文件路径以及快照路径
为了更容易地节省垂直屏幕空间,我们添加了一个选项,可在扩展控件 > 设置中隐藏当前 AVD 的设备框架。要全局隐藏所有 AVD 的设备框架,我们提供了
NoDeviceFrame
功能标志,可以通过从命令行启动模拟器并使用-feature NoDevice
frame 激活,或者将其锁定,将NoDeviceFrame = on
添加到~/.android/advancedFeatures.ini
(如果此文件尚不存在,请创建它)。adb emu avd path # Obtains path to AVD directory adb emu avd discoverypath # Obtains path to discovery file adb emu avd snapshotspath # Obtains path to snapshots folder adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
在蜂窝页面中添加了一个下拉项,用于打开和关闭计费支持,对于不支持 5G 计费切换的旧系统映像,此操作无效。
还添加了用于相同目的的控制台命令:
gsm meter on|off
- 工具链/构建已升级到 C++17。
修复:嵌入式模拟器
剪贴板现在应该可以工作了。
- 修复了模拟器中大写字符以小写字符形式传递的问题。
- 修复了从 Windows 中的 Unicode 路径加载控制台令牌的问题。
- 修复了 Linux 上的
SO_REUSEPORT
错误消息。 - 修复了通过 gRPC 发送快照命令以及在 Android Studio 嵌入式模拟器中按下快照保存按钮时,快照损坏的问题。
- 在使用嵌入在 Studio 中的 Linux 模拟器时,我们发现如果通过 Chrome 远程桌面完成此操作,则存在
XDG_RUNTIME_DIR
未设置的错误,并且由于模拟器发现文件放置在XDG_RUNTIME_DIR
中,可能导致嵌入式模拟器无法显示。您可以查看 Chrome 问题跟踪器中相应问题的状态。 作为一种解决方法,模拟器现在退回到使用基于用户 UID 的可能不同目录中的发现文件:
/run/user/<uid>
。嵌入式模拟器:带圆角/刘海的设备现在可以正确更改其布局,以便为圆角和刘海留出空间。这需要冷启动这些模拟器。
gRPC 端点现在支持向设备发送短信。
一般修复
我们已经看到 Windows 模拟器在 Riot Vanguard 激活时存在兼容性问题。Windows 模拟器现在会检测 Vanguard 反作弊,如果检测到 Vanguard,则会弹出警告消息。
- 修复了 Windows 上的
FD_SETSIZE
错误。我们现在使用WSAEventSelect()
而不是select()
来建立到回环服务器的非阻塞连接。 - 添加了 F16C CPUID 功能支持到 Linux 模拟器,并修复了通过 NDK 转换运行某些 ARM64 应用程序的问题;macOS/Windows 正在进行中。
- 修复了 gpx/kml 路线回放以遵循时间戳的问题。
- 修复了 MacOs 上启动时图标弹跳的问题。
- 如果在
config.ini
中设置了hw.audioInput=no
和hw.audioOutput=no
,模拟器音频现在将正确禁用。 - 修复了一个问题,即当模拟器窗口最小化而扩展控件窗口打开但不活动时,扩展控件窗口会在调整模拟器窗口大小时继续显示。我们将在未来的更新中完全移除此行为(活动扩展控件窗口的情况)。
- 修复了模拟器启动时 Wi-Fi 未连接的偶发性错误。
- 修复了模拟器发出具有长或不确定超时时间的 shell 命令时退出挂起的问题。
- 更新了 pc-bios,修复了更好地支持传递给
-initrd
的大图像;以前的 BIOS 使用了一种非常低效的方法。 - 修复了在使用
-wifi-server-port
选项时终止期间发生的崩溃。 - 模拟器现在在将不支持的选项传递给
-prop
时打印警告(仅支持 qemu.* 属性)。 - 在 Windows 上构建模拟器时,写入文件时出现偶发性失败的可能性应该会降低。有关详细信息,请参阅 Windows 构建说明。
- 禁用了可折叠 AVD 的缩放按钮,该按钮导致了一些问题。
- 模拟器现在正确报告从设备重启后的启动时间。
- Linux:在 KVM 权限不足的情况下,模拟器现在会更及时地打印调试说明。
- 修复了模拟器在没有加速的情况下无法启动最新系统映像的问题。
- 修复了从启动完成检测器启动时发生的内存损坏或崩溃。
- 修复了长时间屏幕录制会话期间的内存泄漏。
- 模拟器图标已更新,以反映 Studio 4.1 品牌。
- 增加了对 Windows 上远程会话检测的更好支持。
- 修复:图形和视频解码
修复了最新 Asphalt 9 游戏渲染为黑屏的问题。
- 删除了有关使用
NULL
刷新映射缓冲区的垃圾信息。 - 修复了访客 Vulkan 应用退出时,在销毁 Vulkan 状态时出现的竞态条件。
- Vulkan ASTC/ETC2 模拟着色器现在已烘焙到 libOpenglRender 库中。这将比从文件系统读取更可靠。
- 修复了 Vulkan 中的一个问题,即如果在主机上运行 Vulkan 1.0 实例,
vkGetImageMemoryRequirements2KHR
会错误地清除返回的VkMemoryRequirements2
结构体的pNext
字段。 - 修复了 Vulkan 渲染器中的内存泄漏。
- 修复了最近的一个回归问题,即 GLSL ES 1.00 着色器中包含类似
isampler2D
的变量名无法编译。 - 更新了 ANGLE 着色器转换器,其中包含各种修复,解决了 Linux 上可能无法编译着色器的问题。
- 如果基本帧缓冲 blit 着色器编译失败,我们现在会使模拟器崩溃,以便跟踪此现象。
- 更新了 ANGLE 着色器转换器以跟上上游 ANGLE。这修复了转换和常量折叠使用非方形矩阵的 OpenGL ES 着色器时内存损坏的问题。着色器转换器现在是一个单独的共享库,
libshadertranslator.dll
。 - 修复了某些 GPU 驱动程序上 Vulkan 初始化时遇到的问题,即某些 1.1 设备函数未找到。
- Vulkan:我们已恢复使用预构建加载器,因为偏爱系统 Vulkan 加载器在某些设置中导致了问题;我们将找出更好的解决方案。
- 修复了使用 Vulkan 外部内存时,它可能导入了主机上不匹配的内存类型索引的问题。
- 修复了在模拟
GL_ALIASED_POINT_SIZE_RANGE
时出现的问题,其中枚举在主机上不受支持。 - 修复了在某些主机 GPU 上,Skia 着色器因与
GL_EXT_shader_framebuffer_fetch
相关的错误而无法编译的问题。 - 由于我们的 D3D9 ANGLE 渲染器副本在几个版本前已被移除,如果用户在 UI 偏好设置中选择了该渲染器,我们现在也会自动将其切换到 d3d11 ANGLE。
- 在 Windows 上,WGL 初始化中添加了更多调试信息,以便跟踪失败。
- 当
hw.gltransport=virtio-gpu-pipe
时,通过在从主机到访客的传输中不进行主机自旋来提高性能。 - 增加了更多调试日志,用于 OpenGLES 仿真初始化失败的情况。
- 修复了加载快照后 YouTube 视频闪烁或不显示的问题。
- 目前已恢复使用软件解码 libvpx,因为我们发现 CUDA 硬件解码 libvpx 存在问题。如果您在主机端有受支持的 CUDA 硬件解码实现,可以通过环境变量
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
重新启用 libvpx 的硬件解码。 - 30.0.10(2020 年 4 月 30 日)
此更新包括直接在 Android Studio 中运行模拟器的支持,以及默认情况下激活自由窗口模式的虚拟设备。
在 Android Studio 中运行模拟器
Android 模拟器现在可以直接在 Android Studio 中运行。使用此功能可以节省屏幕空间,使用热键在模拟器和编辑器窗口之间快速导航,并在单个应用程序窗口中组织您的 IDE 和模拟器工作流。
自由窗口模式
您现在可以在 Android Studio 中创建虚拟设备时,选择 13.5 英寸自由形式平板电脑硬件配置文件,从而创建启用自由形式窗口模式的 AVD。此硬件配置文件需要 Android 11 开发者预览版 3 或更高版本的系统映像。
由于将焦点转移到 Window Manager 的问题,目前自由窗口的调整大小功能已损坏。这将在未来的 Android 11 系统映像版本中解决。
已知问题
30.0.0(2020 年 2 月 19 日)
此更新包括 Android 11(API 级别 30)系统映像,以及运行 ARM 二进制文件时的性能改进。
Android 11 系统映像
您现在可以通过选择任何可用的 API 级别 30 系统映像来创建运行 Android 11 的 AVD。
x86:包括 x86 和 ARMv7 ABI。
- x86_64:包括 x86、x86_64、ARMv7 和 ARM64 ABI。
- 支持 Android 9 和 11 系统映像上的 ARM 二进制文件
如果您以前因为应用依赖 ARM 二进制文件而无法使用 Android 模拟器,那么您现在可以使用 Android 9 x86 系统映像或任何 Android 11 系统映像来运行您的应用——不再需要下载特定的系统映像来运行 ARM 二进制文件。这些 Android 9 和 Android 11 系统映像默认支持 ARM,并且与完全 ARM 模拟相比,性能得到了显著提高。
某些 ARMv7 二进制文件无法在 Android 11 x86 和 x86_64 系统映像上运行。当目标为 Android 11 时,请考虑为 ARM64 构建。
已知问题
- 29.0.11(2019 年 5 月 29 日)
Windows:模拟器现在依赖我们提供的 libgcc
DLL,而不是静态编译 libgcc
。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- Linux:在 gRPC API 中添加了 logcat 支持。有关 gRPC 的更多信息,请参阅 gRPC 流式模拟器 (Linux)。
- 模拟器现在包含 32 位 x86 访客的无头构建 (
qemu-system-i386
)。此功能使 API 级别 26 及更低版本的 x86 32 位映像能够使用无头构建运行。请注意,对于 API 27 及更高版本的 32 位 x86 访客,模拟器使用 64 位引擎 (qemu-system-x86_64
),因为在这些系统映像中,虽然用户空间是 32 位,但内核是 64 位。Android Studio 使用内核来选择模拟引擎。 - 您现在可以使用
ANDROID_QT_LIB_PATH
环境变量指定自定义 Qt 库路径。 - 您现在可以运行使用 QEMU1 的旧二进制文件的模拟器,如果 QEMU1 可执行文件 (
emulator[64]-[x86|arm|etc]
) 放置在模拟器目录中。 - Windows:修复了一个可能导致模拟器有时无法启动并显示“vCPU shutdown request”消息的问题。
- 修复了 Vulkan 中模拟压缩纹理中不必要的管道屏障问题。
- 修复了使用分块传输编码时 HTTP 代理请求发生的错误。有关详细信息,请参阅提交详情。
- 29.0.9(2019 年 5 月 7 日)
Windows:修复了模拟器上虚拟场景相机和网络摄像头无法工作的问题。
[Bug Fix] 忽略在 M1 上保存快照时的内存压力
- 29.0.8(2019 年 5 月 6 日)
当有访客服务枚举和设置每个显示器时,添加了对多个虚拟硬件显示器的支持。多个虚拟硬件显示器将包含在未来的模拟器系统映像更新中。
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 添加了一个新的命令行选项:
-delay-adb
。此选项会阻止 ADB 数据包的处理,直到访客完成启动(冷启动)。此选项有助于解决在 CI 环境中使用模拟器时可能发生的问题,该环境会重启模拟器并同时使用 DDMS。 - 修复了加载快照时
glIsRenderbuffer
返回不正确值的问题。 - 修复了 Android 访客重启时某些过时状态的问题。
- Windows:修复了当 Windows 用户名包含非 ASCII 字符或空格时,模拟器无法启动的问题。
- 快照 UI 已针对车载系统映像禁用,因为这些系统映像目前不支持快照。
已知问题
- 29.0.6(2019 年 5 月 1 日)
移除 QEMU1 和 32 位 Windows 支持
支持带虚拟铰链传感器和 3D 视图的可折叠设备
为了更好地维护模拟器,我们不再提供 QEMU1 和 32 位 Windows 二进制文件。如果您使用的是 32 位 Windows,则无法升级到 29.0.6 版本。
Android Q 系统映像的要求
如果要运行使用 Android Q 系统映像的 AVD,现在必须使用 29.0.6 版(此发布版本)或更高版本。
大理石计划改进
此更新继续了我们在 2018 年 11 月 Android 开发者峰会上宣布的 大理石计划工作。有关之前版本中大理石计划其他改进的更多信息,请参阅 Android 模拟器:大理石计划改进。
本次更新中,我们的大理石计划工作主要致力于降低模拟器资源使用率,例如降低模拟器空闲时的 CPU 使用率。我们还进行了一些更改,使模拟器更容易在各种环境中工作,并解决了普遍存在的质量问题。
以下部分介绍了此更新中包含的“大理石计划”改进:
主机音频行为改进
从 28.0.3 版本开始,模拟器默认阻止来自主机的音频输入。
如果您想使用主机音频数据,可以通过转到扩展控件 > 麦克风并启用虚拟麦克风使用主机音频输入来启用该选项。每当模拟器重新启动时,此选项都会自动禁用。
如果您使用命令行,也可以使用 -allow-host-audio
选项启用主机音频,并且可以使用以下 ADB 命令分别打开或关闭主机音频数据:
adb emu avd hostmicon
adb emu avd hostmicoff
无头模拟器构建的改进
从 28.0.25 版本开始,模拟器包含一个无头构建选项,可以在没有 UI 的情况下运行。您可以使用无头构建来帮助您设置模拟器以进行 Docker 和持续集成 (CI) 工作流。
注意: 尽管带有 -no-window
标志的模拟器二进制文件仍然可用,但无头构建旨在取代 -no-window
。
Linux-vdso.so.1
Libutil.so.1
Libm.so.6
Libdl.so.2
Librt.so.1
Libpthread.so.0
Libgcc_s.so.1
Libc.so.6
ld-linux-x86-64.so.2
Qt UI 库升级到 5.12 LTS
此更新包括 Qt 5.12 LTS 版本中的以下改进:
为了避免在启动某些系统映像时 Qt 的 libpng
解码中出现崩溃,模拟器现在使用自己的 libpng
副本解码 PNG 图像。
- 为了解决某些 Linux 安装中包含不兼容的 Qt 依赖库版本的问题,我们现在将
libfreetype
、libsoftokn
、libsqlite3
和libxkbcommon
与模拟器一起打包。 - 模拟器现在使用平台的原生窗口库来获取显示器尺寸,而不是使用返回不可靠结果的 Qt 库。
- 冷启动后的自动 CPU 优化
为解决 CPU 使用率问题,模拟器现在在收到 boot complete
信号后,在冷启动时运行以下 ADB 命令:
adb shell settings put screen_off_timeout 214783647
此命令增加了屏幕关闭超时,以便模拟器可以在不充电的情况下以电池模式使用。在电池模式下,后台 CPU 使用率大大降低。
- 在交流充电模式下,GMSCore 后台操作(例如应用更新)可能会在没有任何警告的情况下占用设备的所有 CPU 核心(以及用户的机器)。
- adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
此命令撤销了 Google 搜索应用的麦克风权限,从而大大降低了主屏幕和启动器中 Google 搜索应用处于活动状态时的后台 CPU 使用率。
- 此命令与模拟器默认禁用主机音频的行为一起运行。此外,这会自动提供 28.0.23 版本中描述的热词检测的 CPU 使用率缓解措施。
- 注意: 模拟器在使用 API 级别 25 及更低版本的系统映像时不会运行这些 ADB 命令,因为这些系统映像无法将可靠的
boot complete
信号回传给主机。
您现在可以使用两个新的环境变量来启用模拟器性能和资源使用的详细监控。
SHOW_PERF_STATS=1
此环境变量启用 CPU 和 RAM 使用率跟踪。RAM 使用率跟踪区分图形使用率和总驻留内存。
- ANDROID_EMU_TRACING=1
此环境变量启用每次输入或图形操作耗时较长(超过 1 毫秒)时打印信息。
- 我们还在使用此环境变量来帮助诊断 Windows 用户遇到的比 macOS 或 Linux 用户更多的卡顿(掉帧)问题。
- 大理石计划的总体改进
此更新还包括“大理石计划”中的以下总体改进:
您现在可以通过以下控制台命令立即暂停模拟器上的所有 vCPU:
- adb emu avd pause
adb emu avd resume
大大降低了 OpenGL 绘图的开销。此改进减少了模拟器播放动画时的 CPU 使用率。
- 恢复了对主线 QEMU 的 e1000 虚拟网络设备的支持。您可以使用此设备在桥接网络环境中设置模拟器。在桥接网络环境中,模拟器显示在主机网络上,主机网络显示在模拟器上。
- 现在使用 QEMU 2.12 适当的 BIOS 二进制文件启动模拟器。
- 将
ffmpeg
版本升级到 3.4.5,用于视频编码和解码。 - 通过将基于
select()
的主循环替换为基于kqueue
的主循环,大大降低了 macOS 上 QEMU 主循环 I/O 的开销。 - Logcat 缓冲区大小增加到 2 MB,以解决运行 logcat 与模拟器时偶发性意外 EOF 的问题。
- 模拟器现在默认导出
LC_ALL=C
环境变量。此更改解决了在不同区域设置中运行模拟器时出现的崩溃和不兼容问题。 - 您现在可以使用“扩展控件”>“设置”>“高级”>“性能统计”中提供的性能统计信息来跟踪模拟器的 CPU 和 RAM 使用情况。如果模拟器似乎使用了过多的 CPU 或 RAM,请使用这些统计信息快速诊断问题。
glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE
现在使用主机 GPU 的结果而不是模拟的结果。此更改有助于修复因回读格式不正确而导致图像和资产不显示的问题。- 如果主机支持
GL_EXT_texture_format_BGRA8888
和GL_APPLE_texture_format_BGRA8888
扩展,则添加了对它们的 OpenGL ES 扩展支持。 - 在错误报告 UI 中添加了更多诊断信息。此外,您可以使用以下命令从控制台访问错误报告:
- telnet localhost 5554
avd bugreport
在 Android Q 系统映像上,模拟器将其最小 RAM 大小增加到 2 GB。
- 在 OpenGL 或虚拟机监控程序初始化失败时,增加了更多日志记录和打印。
- 如果模拟器无法启动 AVD 的并发
-read-only
实例,模拟器现在会尝试在 3 秒内重新启动-read-only
AVD 3 次。此更改增加了模拟器能够启动 AVD 并发-read-only
实例的可能性,如果该 AVD 的其他可写实例尚未完成清除陈旧文件。 - 对于即将推出的系统映像,模拟器现在支持 Hardware Composer 2.0。此更改应在运行大多数动画时降低驱动程序开销。
- 模拟器构建现在基于 CMake/Ninja。
- 在模拟器扩展控件 UI 中,键盘快捷键表中的分隔线已恢复。
- 用户现在可以选择以 10 秒的间隔向我们的团队提供 CPU 和 RAM 使用率指标。我们使用这些指标来丰富我们关于模拟器资源使用率的数据,其中包含来自我们用户的不同用例,这使我们能够使模拟器更高效、响应更迅速。
- 大理石计划的一般修复
此更新还包括“大理石计划”中的以下一般修复:
修复了在配备 Intel GPU 的系统上使用 Android Q 系统映像时,出现的抖动和不正确帧的问题。
- 修复了使用 Android Q 系统映像和 Pixel 2 XL 皮肤(或任何带有刘海或圆角的皮肤)时,显示黑屏的问题。
- 修复了
-partition-size
命令行选项无法设置数据分区大小的问题。 - 修复了 Linux 模拟器上的 pulseaudio 在某些情况下会自旋并占用整个 CPU 核心的问题。
- 修复了处理压缩纹理时超出内存访问范围的问题。
- 修复了在更新某些 gralloc 缓冲区(格式为 RGB 565、RGB10A2、RGB(A)16F)时,主机上
glTexSubImage2D
中出现的 GL 错误。 - 修复了使用快照的 Android Q 系统映像中出现的显示问题,其中通知栏的几何形状以不正确的实例除数设置渲染。
- 修复了启动时一些难以重现的崩溃和冻结问题,这些问题是由于 Qt 失去信号或在启动时状态不稳定、不一致造成的。
- 修复了许多并发问题。我们现在可以使用 ThreadSanitizer (TSAN) 构建 Linux 模拟器,这可以轻松发现否则难以重现的错误。
- 对于 Linux 用户:我们发现,在某些主机内核上,访客 Android 内核可能会在 KVM 中出错并因通用硬件错误而退出。为了提高调试能力,模拟器现在在发生此情况时会
abort()
(以前,模拟器只是挂起)。 - 对于 Linux 用户:为方便 CI 设置,您可以使用新的
-stdouterr-file <file-name>
命令行选项将stdout
和stderr
重定向到文件。 - 修复了
SO_REUSEADDR
使用不正确的问题。有关详细信息,请参阅提交详情。 - 修复了 Windows 模拟器中一个长期存在的问题,即如果用户名中包含空格,子进程(例如 ADB 命令)无法启动。
- 修复了 HAXM vCPU 线程中 RCU 缺少初始化的问题。此修复可能解决了一些崩溃和竞态条件。
- 修复了使用最新 Android Q 系统映像从快照 UI 保存和加载快照时,某些模式下发生的崩溃。
- 修复了如果 AR 宏在快照保存时正在播放,则从快照初始化模拟器时虚拟场景相机为空白的问题。
- 修复了部分使用远程桌面设置的用户在 Linux 上启动模拟器时出现黑屏的问题。为避免此问题,模拟器现在显式配置
MESA_RGB_VISUAL
。有关详细信息,请参阅提交详情。 - 修复了 一个问题,即旋转按钮会出现在 TV AVD 上。
- 修复了 一个问题,即如果模拟器始终置顶,每次模拟器旋转时都会出现扩展控件窗口。
- 可折叠设备的硬件配置文件
模拟器现在包括可折叠设备的硬件配置文件。要使用这些新的硬件配置文件,您必须使用 Android Studio 3.5 Canary 10 或更高版本。
有两种可折叠硬件配置文件可用于创建 AVD:
7.3 英寸可折叠:展开时为 1536x2152,折叠时为 4.6 英寸 840x1960
- 8 英寸可折叠:展开时为 2200x2480,折叠时为 6.6 英寸 1480x2480
- 使用其中一个硬件配置文件运行模拟器时,您可以使用模拟器工具栏中的折叠和展开操作、控制台命令或以下键盘快捷键折叠和展开设备:
折叠:Ctrl + F
(macOS 上为 Command + F
)
- 展开:
Ctrl + U
(macOS 上为Command + U
) - AR 宏
模拟器现在包含 AR 宏,可以帮助您测试常见的 AR 操作。例如,您可以使用宏将设备的所有传感器重置为其默认状态。
有关详细信息,请参阅使用宏测试常见的 AR 操作。
Vulkan 支持(Windows、Linux)
Windows 和 Linux 用户现在可以使用 Android 模拟器测试 Vulkan 应用,最高支持 Vulkan 1.1,但需要兼容的系统映像(Vulkan 1.1 需要 Android Q Beta 3 或更高版本,Vulkan 1.0 需要 Android Q Beta 2)和兼容的主机 GPU(包括 2014 年以后的大多数 Intel、NVIDIA 和 AMD GPU)。
要启用 Vulkan 支持,您必须将以下功能标志添加到您的 ~/.android/advancedFeatures.ini
文件(如果文件不存在则创建):
Vulkan = on
GLDirectMem = on
注意: 启用 Vulkan 时,目前无法使用快照。如果启用 Vulkan 支持,则当前快速启动快照将失效。
在 AOSP master
分支上构建 sdk_phone_x86
或 sdk_phone_x86_64
(userdebug
、eng
变体)目标的 ROM 开发者现在可以运行支持 Vulkan 的模拟器。
此支持仍处于实验阶段,主要面向从事系统映像、驱动程序和游戏引擎开发的开发者。许多扩展仍然缺失。但是,HOST_COHERENT
内存已受支持,您现在应该能够运行 Vulkan API 教程示例。
如果您使用 linux,可以尝试使用以下命令:
使用 Vulkan 进行 Skia 渲染
mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem
支持 Vulkan 的 NVIDIA 和 AMD GPU 也支持通过 GL_EXT_memory_objects
扩展实现与 OpenGL 的零拷贝互操作。模拟器利用此功能提供了一种使用 Skia Vulkan API 渲染 Android UI 的完整方法。
如果您拥有支持 Vulkan 的 NVIDIA 或 AMD GPU,请使用以下命令测试与兼容系统映像(Android Q Beta 3 及更高版本)的 Skia 渲染:
macOS 对 Vulkan 的支持
adb shell
su
setprop debug.hwui.renderer skiavk
stop
start
macOS 支持仍处于实验阶段,但模拟器已包含 Swiftshader、MoltenVK 和 libportability(gfx-rs)API。您可以通过设置以下环境变量来尝试这些 API:
Swiftshader: ANDROID_EMU_VK_ICD=swiftshader
- MoltenVK:
ANDROID_EMU_VK_ICD=moltenvk
- libportability:
ANDROID_EMU_VK_ICD=portability
- HAXM 有时无法将 Vulkan 相干内存映射到访客并关闭模拟器。这将在即将推出的 HAXM 更新中解决。
已知问题
gRPC 流式模拟器 (Linux)
我们一直在努力使模拟器尽可能多功能,允许在最广泛的运行上下文中进行主机 GPU 渲染和交互。我们的 CI 和远程桌面用户面临以下长期存在的问题:
以编程方式向模拟器发送输入命令涉及运行可能开销很高的 adb shell 命令,或者使用 telnet 控制台,后者速度更快,但可能不适用于某些网络配置。
- CI 用户通常无头运行模拟器,这使得难以注意到需要屏幕可见或交互的问题。
- 远程桌面用户在使用主机 GPU 渲染时通常无法与模拟器交互,因为 GPU 渲染通常与主机的非虚拟显示器绑定。
- 为了解决这个问题,在 Linux 机器上运行时,模拟器现在提供一个 gRPC 服务。gRPC 是一个通用的 RPC 框架,通过 HTTP 工作。
注意: 此功能仍处于实验阶段,旨在用于模拟器运行的同一台机器上。除非您了解并接受安全风险,否则不要远程运行此服务。
注意: 不要将服务运行在未对远程用户进行安全保护的端口上。
-grpc <port>
输入命令可以通过 HTTP 以低开销发送到模拟器。HTTP 还允许在其他网络配置中发送命令。
- 即使模拟器无头运行,也可以发送屏幕截图命令以查询当前屏幕。为了实现交互性,还可以将输入事件发送回模拟器。
- 远程桌面用户可以在主显示器上无头运行模拟器,并进行 GPU 加速渲染,同时使用 gRPC 获取屏幕截图并发送输入事件以与模拟器交互。
- 有关可用命令的完整列表,请参阅此 protobuf。
为了帮助您开始使用 gRPC,我们提供了一些示例客户端供您参考。
目前,这包括以下示例:
一个基于 Go 的服务,可用于查询模拟器状态。
- 一个 React 应用,演示通过屏幕截图和输入 RPC 进行远程交互。此示例需要 protobuf 3.7.0 或更高版本。
- 一个 Python 示例,查询模拟器的 VM 配置然后发送一系列命令。
- 28.0.25(2019 年 3 月 29 日)
无头模拟器构建
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
由于系统隐式期望能够支持 Qt 及其共享库依赖项(以及其他问题),模拟器一直难以与 Docker 和其他持续集成 (CI) 工作流一起设置。
模拟器一直难以通过 Docker 和其他持续集成 (CI) 工作流进行设置,因为系统隐式地期望能够支持 Qt 及其共享库依赖项(以及其他问题)。
作为解决此问题的第一步,我们引入了一个不依赖 Qt 的 QEMU 可执行文件的模拟器启动器变体。在 Linux 上,仍然链接到 libX11
,但我们希望很快也能将其移除。
要使用无头模拟器,像往常一样从命令行运行模拟器,但将模拟器二进制调用替换为 emulator-headless
。有关更多信息,请参阅 28.1.8 Canary 发布更新。
- 修复了在 Intel GPU 上运行 Android Q 系统映像时出现的图像抖动和帧显示不正确的问题。
- 修复了在使用 Android Q 系统映像和 Pixel 2 XL 外观时显示黑屏的问题。
- 现在使用最新的 BIOS 二进制文件启动模拟器。此更改有助于减少在 Windows 上启动模拟器时有时发生的“vCPU 关闭请求”错误。
- 回溯了针对 “从快照恢复 Android Q 系统映像时显示错误”问题的修复。
- 由于 platform-tools 28.0.2 中 ADB 的不兼容更改,用户遇到了 “未经授权”的模拟器问题。您现在可以安全地将 platform-tools 28.0.2 中的 ADB 与模拟器一起使用。如果您遇到“未经授权”的模拟器问题,请执行以下故障排除步骤:
- 退出所有模拟器。
- 删除
~/.android/adbkey
和~/.android/adbkey.pub
文件。 - 运行以下命令:
adb kill-server
- 运行以下命令:
adb devices
- 擦除 AVD 数据。
- 重新启动模拟器。
28.0.23 (2019 年 1 月 29 日)
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
默认禁用主机音频输入
Reddit 上最近的一篇帖子详细描述了客机 Android 操作系统如何始终使用主机麦克风的音频,从而导致“Ok Google”意外工作。我们对此深表歉意,并将与 Android 团队合作,确保系统映像中也禁用热词检测。
为解决此问题,我们进行了以下更改:
- 实际主机音频数据现在默认被静音。当客机使用麦克风时,将传递静音而不是主机的音频。
- 如果您想使用主机音频数据,现在可以通过转到扩展控件 > 麦克风并启用虚拟麦克风使用主机音频输入来启用该选项。每当模拟器重新启动时,此选项都会自动禁用。
CPU 使用情况调查更新
在我们的 Project Marble 调查期间,我们注意到模拟器上的高 CPU 使用率通常属于以下三类:
空闲时:Play 商店映像中的自动应用更新
我们发现,在随机间隔,所有已安装的应用都会更新,即使用户未登录。在此过程中,GMSCore 和 dex2oat 中的 CPU 使用率会达到核心数 x 100%(通常约为 400%)。您可以通过在 Play 商店应用中禁用自动应用更新来缓解此问题。
空闲时:热词检测
在主屏幕上且没有任何应用处于前台时,可能会有大量的 CPU 使用率(~25%,峰值达到 50%)。这是由不断 ping 主机的热词检测引起的。您无法通过禁用主机音频输入来缓解此问题,因为 CPU 成本主要由从主机传输到客机所需的时间引起。但是,您可以通过撤销 Google 应用的麦克风权限来缓解此问题。
活动时,有时空闲时:动画
高 CPU 使用率的第三个来源是动画。我们发现,通过优化图形驱动程序堆栈,即使模拟器不空闲,我们也可以减少 CPU 使用率。我们将作为 Project Marble 的一部分,逐步推出图形驱动程序优化。
28.0.22 (2018 年 12 月 21 日)
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 修复了一个长期存在的问题,即在某些设置下,Mac 模拟器会在 Quickboot 保存时重新启动或内核崩溃。(问题 120951634)
- 当使用映射文件作为 RAM 快照时,模拟器现在会在退出时明确取消文件映射。
28.0.20 (2018 年 12 月 11 日)
[Bug Fix] 问题 #247843000: AVD 相对路径处理错误
- 修复了 Windows 上导致模拟器在使用某些型号的 Intel GPU 加载快照时冻结的问题。
- 修复了在使用非标准
ANDROID_SDK_HOME
位置时导致 ADB 设备状态为unauthorized
的问题。 - 修复了 Windows 上在禁用 CPU 加速时启动系统映像时导致模拟器崩溃的问题。
- 修复了模拟器显示像素化问题。现在应该可以正常降采样了。
- 修复了 macOS 10.14+ 上虚拟场景相机鼠标查看控制由于与新辅助功能安全设置的交互而变得过于敏感的问题。
- 修复了时区计算中的一个错误,该错误可能导致模拟器时钟偶尔更改。
- 修复了各种 cocos2d 和 Unreal 引擎应用中的渲染错误。
- 在模拟器中增加了对 Wi-Fi 点对点的支持。如果使用最新的 Pie Play 商店映像,两个模拟器现在可以通过 Wi-Fi 直接相互通信。要使用 Wi-Fi 点对点,请使用相同的
-wifi-server-port
和-wifi-client-port
参数启动两个 AVD:emulator @<server-avd-name> -wifi-server-port 9999
emulator @<client-avd-name>-wifi-client-port 9999
- 通过动态调整任何不兼容的帧大小以适应 Android 客机中的相机设置,增加了对 Windows 上更多网络摄像头的支持。
28.0.16 (2018 年 11 月)
支持带虚拟铰链传感器和 3D 视图的可折叠设备
资源使用
模拟器现在整体使用更少的 RAM,尤其是在使用 API 级别 28 或更高版本的系统映像时。这些系统映像改进了客机端图形驱动程序的内存使用。
此外,我们还在以下方面改进了资源使用:
- 减少了长时间运行测试期间的模拟器内存使用。如果您在长时间运行测试期间仍遇到内存使用问题,请在问题跟踪器中创建描述您用例的问题。
- 运行带动画的应用时减少了 CPU 使用率。
- 修复了 QEMU AIO 上下文可能在 Windows 上泄漏的问题。
同时运行单个 AVD 的多个实例
您现在可以启动同一 AVD 的多个实例并同时运行它们。在第一个实例之后启动的实例是只读的,它们对客机虚拟磁盘的更改在退出时将被丢弃。
要同时运行同一 AVD 的多个实例,请使用 -read-only
标志从命令行启动第一个实例之后的所有实例。
此功能通过复制与 Android 映像可写入部分相关的 QCOW2 文件实现。为了帮助您管理磁盘空间,我们还捆绑了 qemu-img
命令行工具,以便您在启动多个实例之前预提交 QCOW2 文件。
此外,当与文件支持的客机 RAM 快照功能结合使用时,多个 AVD 实例将主 AVD Quickboot 快照作为写时复制客机 RAM 的公共来源。此属性意味着实例共享大部分 RAM。使用此功能运行需要多个设备并行运行的测试。
我们感谢您对常规交互式或 CI 工作流中可能用例的反馈。请在问题跟踪器中创建或点赞问题。
文件支持的客机 RAM 快照
通过预分配和映射客机 RAM 作为文件,模拟器现在可以在运行时保存 Quickboot 快照,而不是在退出时执行所有工作。如果您目前在关闭模拟器时遇到长时间保存的问题,请启用此功能以提高 Quickboot 性能。默认情况下,Quickboot 快照在退出时保存,并在每次启动时重新加载,就像暂停和唤醒真实设备一样。
由于 Android 客机 RAM 现在默认自动保存,如果您想定义设备状态并反复从该状态加载,您需要告诉模拟器在每次会话后丢弃更改。您可以通过以下方式执行此操作:
- 从命令行启动模拟器时使用
-no-snapshot-save
或-read-only
标志。 - 转到扩展控件 > 快照 > 设置,并将自动将当前状态保存到 Quickboot?切换到否。
- 选择此选项后,您需要重新启动模拟器。如果模拟器设置为自动保存,您可以运行以下命令设置检查点:
运行此命令后,模拟器 Quickboot 快照将停留在该检查点。再次运行相同的命令以从检查点加载模拟器。adb emu avd snapshot remap 0
通过快照 UI 拍摄和加载的快照功能与以前相同,没有文件映射。
由于这是 Quickboot 工作方式的一大变化,我们非常感谢您就其是否改善 Quickboot 性能以及您在使用时遇到的问题提供反馈。如果您遇到问题,可以通过在 ~/.android/advancedFeatures.ini
文件中添加以下行来禁用此功能:
QuickbootFileBacked = off
当您从快照启动模拟器时(无论是使用 -snapshot
命令行选项,还是从 AVD 管理器中的快照启动),模拟器会禁用 Quickboot 快照的自动保存以及退出时保存 Quickboot 快照。这减少了 Quickboot 快照被意外覆盖的可能性,并避免了不使用文件支持的 Quickboot 快照的缓慢回退路径。
QEMU 2.12
我们已将我们的 QEMU 变体从 QEMU 2.9 重新基于 QEMU 2.12。此更新包括以下 QEMU 更改:
- https://wiki.qemu.org/ChangeLog/2.10
- https://wiki.qemu.org/ChangeLog/2.11
- https://wiki.qemu.org/ChangeLog/2.12
以下是影响 Android 模拟器的一些显著更改:
- x86:
gdbstub
现在提供对 SSE 寄存器的访问。 - 磁盘映像:默认添加并启用映像锁定。只要主机支持 OFD 或 posix 锁定,多个 QEMU 进程就不能写入同一个映像,除非另有指定选项。
qemu-img: qemu-img resize
支持预分配映像的新部分。qemu
和qemu-img
中现在支持 QCOW2 缩小。
无障碍功能
- 修复了屏幕阅读器的问题,并在屏幕录制和快照 UI 中为这些工具添加了更好的支持。
- 使 Quick Boot 通知图标对色盲用户更易于访问。
图形
- 修复了 OpenGL ES 顶点数组指针可能发生的越界内存访问问题。
- 一些较旧的 GPU 不支持 OpenGL 2.1 或更高版本(这是必需的),或者存在其他可靠性问题。这些问题可能导致模拟器在启动时崩溃、冻结或在默认 GPU 设置下无法使用。如果模拟器检测到正在使用这些 GPU,它现在会自动切换到 Swiftshader 渲染器。
- 修复了在
eglSwapBuffers
时绑定了FBO != 0
时模拟器无法发布正确帧缓冲区的问题。 - 修复了虚拟 Android 显示屏仅显示在左上角的问题。我们认为这是由于 Qt 环境变量配置错误造成的。模拟器现在会覆盖所有 Qt 缩放相关的环境变量。
- 修复了在某些情况下从快照加载 GLES1 应用时模拟器崩溃的问题。
- 修复了 OpenGL 和启动渲染线程中的并发问题,这些问题可能导致双重释放或数据损坏。
- Android 模拟器现在支持 ASTC LDR 压缩纹理支持 (
GL_KHR_texture_compression_astc_ldr
),适用于使用 API 级别 28 或更高版本的系统映像。 - 现在,大多数现代 GPU 应该能够在默认启用 OpenGL ES 3.x 的情况下启动模拟器,而无需使用
GLESDynamicVersion
功能标志。 -gpu guest
(客机中的软件渲染)已被弃用。API 级别 28 或更高版本的系统映像现在会自动切换到使用 Swiftshader (-gpu swiftshader_indirect
)。- 如果使用
-no-window
标志从命令行启动模拟器,则默认渲染器现在是 Swiftshader。
位置
- 模拟器现在可以随纬度和经度位置一起更新方位。磁力计虚拟传感器通过在播放 GPX 或 KML 文件时推断运动来动态调整自身以适应磁北。
- 现在可以在“位置”页面上设置设备速度。
- 播放 GPX 或 KML 文件时,速度会自动设置,并在播放结束时设置为零。
- 海拔高度不再限于 -1,000 到 +10,000 米之间。
- 修复了除非至少打开一次“扩展控件”窗口,否则虚拟 GPS 位置不会定期更新的问题。
相机
在 Windows 上,现在支持更多网络摄像头,因为模拟器动态调整从网络摄像头传输的相机帧大小。此功能还可防止帧传输错误导致模拟器挂起。
Play 商店
为解决 Play 商店映像磁盘空间不足的问题,模拟器现在在运行新的 Play 商店 AVD 时会自动将 userdata 分区大小调整为 6 GB。
一般质量改进和修复
- 一些用户报告说模拟器运行缓慢。我们发现一个可能的原因是模拟器的临时目录中存在太多过时文件。作为一种解决方法,模拟器不再将 ADB 活性检查文件存储在该目录中。但是,删除该文件夹的内容也可能有帮助。该文件夹位于以下位置之一,具体取决于您的操作系统:
- Windows:
C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
- macOS 或 Linux:
/tmp/android-<username>/*
- Windows:
- 如果模拟器因可用 RAM 不足而无法启动,现在会显示错误消息。如果您在 Windows 上发现有可用 RAM,但仍无法启动模拟器,则可能已超出提交费用。有关此问题的帮助,请参阅模拟器故障排除页面。
-sysdir
命令行选项现在可以正确覆盖推断的系统映像目录。- 虚拟调制解调器现在支持模型活动信息
+MAI
查询。 - 修复了内存泄漏、内存损坏和 CPU 使用率的各种问题。如果您遇到崩溃、内存泄漏或其他高资源使用率问题,请在问题跟踪器中创建问题。
- 修复了 macOS 10.14 上再次出现的问题,即在使用蓝牙耳机与模拟器时,音频会全局降低。为防止这种情况,模拟器在 macOS 上运行时现在会避免使用蓝牙音频。(问题 37070892)
- 修复了 Windows 上模拟器时钟时区不正确的问题。
- 修复了 Linux 系统上使用旋转硬盘 (HDD) 时模拟器运行缓慢和挂起的问题。
- 修复了一些可能导致 macOS 上堆栈损坏的编译警告。
- 修复了可能导致误导性挂起报告的问题。
- 修复了销毁线程池时可能导致崩溃的问题,如果其中一个线程未能成功创建。
- 修复了 macOS 上计时器变得不可靠的问题,导致挂起和其他奇怪行为。如果您在 macOS 上遇到模拟器挂起问题,请在问题跟踪器中创建问题。
- 修复了关闭模拟器会禁用 UI,但实际并未关闭模拟器的问题。
- 修复了涉及零星崩溃的问题,包括由于打开太多
/dev/urandom
实例而中止。 - 修复了在 ADB 被强制终止后,模拟器在第一次启动后无法启动的问题。
- MIPS 构建已被移除。如果您仍然需要 MIPS,请在问题跟踪器中创建问题。
- 修复了快照加载时 ADB 连接可能损坏的问题。
- 修复了在恢复设备方向与 AVD 默认方向不同的快照时,模拟器窗口出现残影或传送到屏幕外的问题。
- 修复了保存快照时涉及崩溃的问题。
- 在 Linux 上,btrfs 文件系统可能导致极度减速,因为模拟器会自动保存快照并为其虚拟磁盘设备使用写时复制。我们建议清理
~/.android/avd
目录并在空的~/.android/avd
目录上运行以下命令: 这会在禁用写时复制的文件夹中创建新的快照。chattr +C
HAXM 7.3.2
我们再次提及 HAXM 7.3.2,因为它必须安装才能使最近的系统映像在模拟器上正常运行。HAXM 7.3.2 应该已在稳定通道中可用,也可以从 https://github.com/intel/haxm/releases 手动安装。
以下是此版本 HAXM 解决的一些问题:
32 位 Windows 弃用
由于使用率低和维护成本高,我们计划弃用在 Windows 上运行的 32 位版 Android 模拟器。我们将在移除和结束 32 位版 Android 模拟器生命周期之前推出过渡计划。但是,我们正在积极寻求对此未来变化的任何反馈或担忧。
如果您目前依赖于在 Windows 上运行的 32 位版 Android 模拟器,请在问题跟踪器中告知我们,并告诉我们如何最好地与您合作。
27.3.10 (2018 年 8 月)
此更新包括以下错误修复:
RAM 大小配置修复
一些用户报告说模拟器运行缓慢。我们发现一个可能的原因是 AVD 的 config.ini
文件中的 AVD RAM 大小设置不正确。
为缓解此问题,模拟器将使用 API 级别 26 或更高版本的映像的最小 RAM 级别提高到 Android Studio 默认的 1536 MB。如果您的 AVD 的 config.ini
文件未以兆字节列出 hw.ramSize
,请在问题跟踪器中创建问题。您可以在以下位置找到 config.ini
文件:
~/.android/avd/<avdname>.avd/config.ini
27.3.9 (2018 年 7 月)
此更新包括以下改进和错误修复:
改进了 Windows Hypervisor Platform 的错误消息
一些用户在激活 WHPX 模拟器时难以诊断 Windows Hypervisor Platform (WHPX) 无法初始化的原因。为了帮助您诊断这些问题,我们添加了更具信息性的错误消息。您可以通过使用 -verbose
标志从命令行运行模拟器来启用这些错误消息。
我们已经看到 Windows 模拟器在 Riot Vanguard 激活时存在兼容性问题。Windows 模拟器现在会检测 Vanguard 反作弊,如果检测到 Vanguard,则会弹出警告消息。
- 修复了在相机应用中加载快照时发生的 OpenGL 错误。
27.3.8 (2018 年 7 月)
支持带虚拟铰链传感器和 3D 视图的可折叠设备
快照
您现在可以为给定设备配置保存多个 AVD 快照,并在启动模拟器时选择要加载的已保存快照。
从 Android Studio 3.2 Canary 13 开始,每个设备配置在“虚拟设备配置”对话框的高级设置中包含一个控件,您可以使用该控件指定在启动 AVD 时加载哪个 AVD 快照。
为了适应快照功能的扩展,我们在“扩展控件”对话框中添加了一个“快照”类别。此新窗格包含用于保存和加载 AVD 快照的控件,包括以前在“设置”窗格中的用于保存和加载快速启动快照的控件。
您可以编辑每个已保存快照的名称和描述。
有关详细信息,请参阅快照。
HAXM 7.2.0
HAXM 7.2.0 现已在所有渠道中可用。
此更新包括错误修复和对大内存量的改进支持。此外,通过此 HAXM 更新和模拟器 27.3 及更高版本,快照按需将其内容加载到 RAM 中,而不是在虚拟设备启动时加载整个快照。此更改应大大减少加载快照所需的时间。
有关详细信息,请参阅配置 VM 加速。
27.2.9 (2018 年 5 月)
支持带虚拟铰链传感器和 3D 视图的可折叠设备
屏幕录制
您现在可以从 Android 模拟器录制视频和音频,并将录制保存为 WebM 或动画 GIF 文件。
屏幕录制控件位于扩展控件窗口的“屏幕录制”选项卡中。
提示:您还可以通过按 Control + Shift + R(Mac 上为 Command + Shift + R)来打开屏幕录制控件。
要开始屏幕录制,请单击“屏幕录制”选项卡中的“开始录制”按钮。要停止录制,请单击“停止录制”。
播放和保存录制视频的控件位于“屏幕录制”选项卡底部。要保存视频,请从选项卡底部的菜单中选择 WebM 或 GIF,然后单击“保存”。
您还可以使用以下命令行命令从模拟器录制和保存屏幕录制:
adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm
屏幕截图
您可以使用以下任一命令从命令行截取屏幕截图:
screenrecord screenshot [destination-directory]
adb emu screenrecord screenshot [destination-directory]
屏幕截图以 PNG 格式保存。
虚拟场景相机和 ARCore
通过新的虚拟场景相机,使用 ARCore 开发和测试增强现实 (AR) 应用现在变得更加容易,它允许您在虚拟环境中体验 AR。
有关在模拟器中使用虚拟场景相机的信息,请参阅在 Android 模拟器中运行 AR 应用。
Pixel 设备映像上的 Google Play 商店
Google Play 商店现在已为 Pixel 和 Pixel 2 设备映像启用。这在 Android Studio 3.2 及更高版本中的AVD 管理器中通过“Play 商店”列中的 Google Play 徽标表示。启用了 Google Play 商店的 AVD 在“扩展控件”对话框中有一个“Google Play”选项卡,提供了一个方便的按钮,用于更新设备上的 Google Play 服务。
快照
您现在可以加载快速启动快照而无需重新启动模拟器。要加载快照,请打开扩展控件窗口到“设置”页面,然后单击“立即加载”按钮。
我们对快照的加载和保存进行了许多改进,以提高资源使用的效率并最大限度地减少每个操作所需的时间。如果您仍然遇到异常长的保存时间,请提交问题,提供您的 CPU、RAM 以及正在运行的任何防病毒/防火墙/安全软件的设置详细信息。
使用 Skia 渲染
当使用 API 27 或更高版本的映像时,模拟器可以使用 Skia 渲染 Android UI,这可以更流畅、更高效地渲染。
目前,使用 Skia 需要您明确启用它。
要启用 Skia 渲染,请在 adb shell 中使用以下命令:
su setprop debug.hwui.renderer skiagl stop start
相机
在 Windows 上,Android 模拟器现在使用 Media Foundation 作为网络摄像头后端,这大大提高了网络摄像头捕获的性能和帧速率,最高可达 720p 30 FPS。
在 Mac 上,您现在可以同时使用 webcam0 和 webcam1。
杂项
-phone-number-prefix
命令行选项已更改为 -phone-number [number]
,这允许设置完整的电话号码。
您现在可以使用字母数字短信地址。
修复
- Linux 版本的 Android 模拟器现在使用现代 Clang C++ 工具链构建。此更改修复了模拟器因 libGL 和 libstdc++ 错误而无法启动的问题。
- 修复了导致崩溃和挂起的几个原因。
- 为避免因可用磁盘空间不足而导致的崩溃和挂起,模拟器现在会在启动时检查是否有足够的可用磁盘空间,并且除非至少有 2 GB 可用,否则不会启动。
- 修复了阻止某些 Unity 游戏渲染的问题。
- 修复了导致模拟器无法连接到网络的 DNS 问题。
- 修复了通过“虚拟设备配置”对话框更改分配给 AVD 的内部存储不起作用的问题。
- 修复了创建了许多 adb 进程且未正确关闭的问题。
- 修复了除非“扩展控件”窗口打开,否则旋转按钮和 UI 的其他部分无响应的问题。
- 修复了除非至少打开一次“扩展控件”对话框,否则无法从主机复制和粘贴的问题。
- 无边框模拟器的调整大小矩形已更新,以更好地遵循模拟器的视觉主题。
- 飞行模式开启时,电话和短信功能现在已正确停用。
- 修复了加载快照后短信和蜂窝功能被禁用的问题。
- 您将不再收到虚假的警告消息,例如
“Unable to open... \pstore.bin. Permission denied.”
- 修复了在某些 Mac 屏幕上无法重新定位 AVD 的问题。
- 修复了在较新的 MacBook Pro 计算机上运行带有 Pixel 2 XL 外观的 AVD 时,屏幕闪烁和空白屏幕的问题。
- 修复了在无边框模拟器处于活动状态时切换到缩放模式时出现空白屏幕的问题。
- 修复了放大时设备皮肤和模拟器内容滚动不同步的问题。
如果您仍然遇到挂起或其他不稳定问题,请提交问题。
27.1.12 (2018 年 3 月)
此更新包括以下问题的修复:
- 启动模拟器后蓝牙音频质量下降。(问题 37095756)
- 发送到一个模拟器的位置信息发送到了所有模拟器。(问题 73450633)
- 使用控制台设置的 GPS 位置被图形用户界面中扩展控件 > 位置设置的值覆盖。(问题 73471760)
如果您仍然遇到挂起或其他不稳定问题,请提交问题。
通过此更新、当前系统映像和 Android Studio 预览版,您可以使用 Android 模拟器运行使用 ARCore 构建的增强现实应用。有关详细要求和说明,请参阅在 Android 模拟器中运行 AR 应用。
27.1.10 (2018 年 2 月)
相机捕获分辨率
现在可以从连接的网络摄像头捕获 720p 帧。
要与 Android 8.1 (API level 27) 及更高版本的系统映像一起使用,任何连接的网络摄像头都必须具有捕获 720p 帧的能力。
修复
- 修复了网络摄像头捕获有时会输出扭曲或全绿色图像的问题。
- 修复了即使没有实际挂起也可能出现以下消息的问题:“模拟器:错误:检测到挂起的线程'Qt event loop'。15000 毫秒没有响应。”
如果您仍然遇到挂起或其他不稳定问题,请提交问题。
27.1.7 (2018 年 2 月)
无边框模拟器窗口
默认情况下,带有设备皮肤文件的模拟器现在不显示周围的窗口框架。要显示周围的窗口框架,请在扩展控件窗口的“设置”窗格中启用在设备周围显示窗口框架。
Quick Boot 改进,使 AVD 快照工作更高效
- 您可以使用扩展控件对话框的“设置”窗格中的立即保存按钮随时保存 AVD 快照。
- 在许多情况下,模拟器通过仅保存当前状态与先前保存的快照之间的差异来减少保存快照所需的时间。
有关详细信息,请参阅Quick Boot 文档。
模拟器已更新为使用 QEMU 2.9。
一些显著改进包括:
- 优化了 I/O 和更细粒度的 I/O 线程锁定,以获得更高的性能。
- 修复了 QEMU 2.8 (26.1.4) 以来的错误。
- HAXM 后端的新实现。
请参阅QEMU 2.9 更改日志中的完整更改列表。
符合 OpenGL ES 3.0 的 Swiftshader 实现
模拟器的 Swiftshader 渲染器现在完全符合 OpenGL ES 3.0。有关 Swiftshader 渲染器的详细信息,请参阅扩展控件的设置 > 高级部分。
修复
- 修复了除非切换关闭和打开启用剪贴板共享选项,否则剪贴板共享不起作用的问题。
- 修复了在低分辨率 AVD 上使用 Swiftshader 渲染后端时挂起的问题。
27.0.5 (2018 年 1 月)
Windows 上用于渲染的 ANGLE 现在默认禁用。
如果 ANGLE 更适合您,您可以使用命令行标志
-gpu angle_indirect
重新启用它。或者,打开“扩展控件”窗口,导航到设置 > 高级,然后为 OpenGL ES 渲染器设置选择ANGLE D3D11。修复了 Shift+B 不会键入大写字母 B 的问题。
27.0.2 (2017 年 12 月)
新的 Quick Boot 功能可根据 AVD 实例的快照提供更快的模拟器启动时间。
Quick Boot 默认对所有 AVD 启用。尽管您第一次启动 AVD 时必须执行冷启动(就像打开设备电源一样),但所有后续启动都很快,并且系统会恢复到您关闭模拟器时的状态(类似于唤醒设备)。
如果您想控制模拟器何时保存快照,请打开模拟器的扩展控件窗口并单击设置。在这里,您可以为退出时保存快速启动状态选择以下设置之一:
- 是:关闭模拟器时始终保存快速启动快照。这是默认设置。
- 否:从不保存快速启动快照;始终执行冷启动。
- 询问:在关闭模拟器时提示是否保存快速启动快照。
您的选择仅适用于当前打开的 AVD。
有关更多信息,请参阅Quick Boot 文档。
添加了对 Mac OpenGL ES 3 的支持(适用于使用 API 级别 24 及更高版本、Google API 和 x86 ABI 的系统映像)。
为了提高 OpenGL ES 2+ 应用的稳定性,如果可用,模拟器现在使用 OpenGL 核心配置文件。
使用 Swiftshader / ANGLE 渲染的新选项
-gpu swiftshader_indirect
:更快、更稳定的 Swiftshader 变体,可与 Quick Boot 配合使用。-gpu angle_indirect
(仅限 Windows):更稳定的 ANGLE D3D 变体,也可与 Quick Boot 配合使用。
较旧的
-gpu swiftshader
和-gpu angle
选项现在已弃用。“扩展控件”窗口中,“设置 > 高级”中 OpenGL ES 渲染器设置的“SwiftShader”和“ANGLE”选项现在使用*_indirect
变体。各种其他错误修复。
26.1.4 (2017 年 8 月)
这是一个次要版本,包含错误修复和 GPU 配置的以下改进:
- 在 ANGLE 渲染器上运行时启用引导动画
- 在 ANGLE 渲染器上运行时禁用 GLES3
26.1.3 (2017 年 8 月)
这是一个次要版本,包含错误修复、性能改进和小的功能更改。
- 此版本现在是使用最新 Android 8.0 系统映像所必需的。它们兼容 Treble,具有独立的
vendor.img
分区。 - 新的 HAXM 6.2.0 现已可用(检查 SDK Manager),并包括以下更新:
- 改进了内存使用。HAXM 固定的内存峰值工作集不再等于 AVD 的 RAM 大小;相反,内存按需分页。这应该有助于模拟器在 RAM 较少的机器上更可靠地运行。
- 使用 HAXM 6.2.0 的模拟器现在可以在 macOS 上更快地启动,跳过漫长的初始化阶段。
- GPU 配置的改进
- 通过回退到 Swiftshader 进行主机端软件渲染,修复了执行客机端软件渲染时引导时黑屏的问题。API 级别 19 - 25 的最新修订版系统映像(带 Google API)应该具有正常工作的客机端渲染。
- 修复了模拟器在检测到存在较旧的 Intel GPU 时切换到软件渲染器,但模拟器实际上在独立 GPU 上运行的问题。哪些 GPU 将切换为使用 ANGLE 或 Swiftshader 渲染的确定方式如下:
- 较旧的 Intel iGPU 在 OpenGL 和 ANGLE D3D 驱动程序上都存在驱动程序问题。使用 Intel HD Graphics 3xxx 及更旧版本的用户将使用 Swiftshader。
- 一些用户报告由于“Pixel Launcher keeps stopping”的错误而无法使用 API 级别 25 映像。这似乎是某些 Intel HD 4xxx 型号的驱动程序问题。因此,它们将自动切换为使用 ANGLE。
- 为了获得最佳的 GPU 仿真效果,我们建议使用独立 NVIDIA 或 AMD GPU,或更新的 Intel GPU(Iris、HD 5xxx、HD 5xx/6xx)。
- 修复了如果 AVD 配置为
hw.gpu.mode=host
并且模拟器在远程桌面客户端中启动时,模拟器无法启动(OpenGL 仿真初始化失败)的问题。 - 澄清了“OpenGL ES API 级别(需要重启)”设置;添加了一个选项,如果遇到问题或需要在较低的 OpenGL ES API 级别进行测试,则可以从 OpenGL ES 3 降级到 OpenGL ES 2。
- Mesa 渲染器已弃用;
hw.gpu.mode=mesa
现在将自动切换为在主机上使用 Swiftshader。
- macOS 的改进
- 模拟器现在通过 Hypervisor.Framework 或 HAXM 6.2.0 完全兼容 macOS 10.13 High Sierra。
- Hypervisor.framework 现在默认在 macOS 上为 32 位 x86 映像启用,以提高性能和 macOS 兼容性。如果您在使用时遇到问题,请提交错误报告并在
~/.android/advancedFeatures.ini
中附加HVF = off
(如果文件不存在,请创建)。 - 修复了使用 Hypervisor.framework 时无网络/无法附加调试器的问题。
- 为增强网络摄像头捕获的兼容性和性能,基于 QTKit 的相机捕获已替换为基于 AVFoundation 的缓冲捕获。
- 在某些系统映像中添加了 Wi-Fi 支持(目前仅限 API 级别 25)。名为“AndroidWifi”的接入点可用,Android 会自动连接到它。Wi-Fi 支持可以通过使用命令行参数
-feature -Wifi
运行模拟器来禁用。 - 一些用户提出了固定大小的 Play 商店系统映像存储空间不足的问题。因此,我们已将默认大小增加到 2 GB(从 800 MB 增加)。
- 添加了一个键盘快捷键 (Ctrl+Shift+U) 以直接从设置页面打开错误报告 UI 页面。
- 修复了当使用旧版 CPU(带 Intel x86 EPT 但不带 UG)并且配置了多个核心时,模拟器无法启动的问题。
- 修复了当模拟器本身在 Xen hypervisor 中运行时,HyperV 会被错误检测的问题。
- 修复了在某些 Linux 配置中模拟器启动时崩溃的问题。
26.1.2 (2017 年 7 月)
此版本包含新功能和性能改进。
添加了在扩展控件中定义自定义 HTTP 代理配置的功能(单击更多
,然后单击设置和代理)。默认情况下,模拟器使用 Android Studio HTTP 代理设置,但此屏幕允许您定义手动代理配置。
添加了对客机模式 GPU 的 VNC 支持,以便可以远程查看和控制模拟器。例如,您可以启动模拟器并让 VNC 监听端口 5901,如下所示:
- 执行:
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
打开 VNC 查看器(例如 tightvnc viewer)以连接到端口 5901。
要使用 Mac 内置的屏幕共享客户端,启动模拟器时需要 VNC 密码。要设置密码,请使用以下命令:
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio
然后输入
change vnc password
到控制台,并输入密码。
Android O 目前不支持 VNC 模式。
- 执行:
在扩展控件的“帮助”屏幕中添加了“提交错误”按钮(单击更多
,然后单击帮助和模拟器帮助)。单击“提交错误”会打开一个对话框,您可以在其中查看错误报告详细信息,例如屏幕截图、AVD 配置信息和错误报告日志。然后,您可以保存报告供自己使用或报告模拟器问题。
为模拟器和虚拟传感器面板添加了陀螺仪传感器。这需要支持陀螺仪的系统映像才能工作(目前为 API 级别 24 和 25)。
在 Windows 上,当主机上的多个虚拟网络接口引入对模拟器无效的多个 DNS 地址时,将主机首选 DNS 添加到 Qemu DNS 列表。
通过服务器标志添加了对 macOS 10.10+ 上 32 位 x86 映像的实验性 macOS Hypervisor.Framework 支持,这应该会提高启动时间和性能。
- 如果您遇到问题,请在
~/.android/advancedFeatures.ini
中添加行HVF = off
。
- 如果您遇到问题,请在
OpenGL ES 3.x 现在默认对支持 OpenGL ES 3 的系统映像和主机 GPU 启用。目前,只有 Android O (API 级别 26) 和 Windows/Linux 主机支持 OpenGL ES 3。
- 如果您遇到 OpenGL ES 3 的问题,请在
~/.android/advancedFeatures.ini
中添加行GLESDynamicVersion = off
。
- 如果您遇到 OpenGL ES 3 的问题,请在
模拟器现在使用离屏 OpenGL FBO 进行所有渲染,除了最终显示图像发布,这有助于解决跨平台的颜色一致性问题。
在收集了模拟器突然变慢问题的数据后,我们确定问题可能与旧版 Intel OpenGL 驱动程序和 Windows 更新之间的一些交互有关。因此,使用 Intel HD 4000、3000、2000(及相关 GPU)的用户现在默认将渲染设置为 D3D 渲染器 (ANGLE) 或 Swiftshader(软件渲染器)。
26.0.0 (2017 年 3 月)
此版本与 API 级别 26 兼容。它还包括许多性能改进和错误修复。
次要修订版 26.0.3 (2017 年 5 月)
- 增加了可在线更新的功能标志,用于快速解决因问题硬件配置引起的问题。这允许 Google 通过更新服务器端标志来推出依赖于用户配置的修复和功能。如果您发现特定硬件存在问题,请提交错误报告,以便我们调查问题。
- 新增了对 Android Wear API 级别 25 系统映像旋转输入的支持。要模拟 Wear 设备上的旋转输入拨盘,请单击扩展窗口上的旋转输入选项卡。
- 崩溃报告对话框现在可调整大小,并且不再在没有输入的情况下将何时发送崩溃报告重置为询问。
- 32 位模拟器现在要求最大 AVD RAM 大小小于或等于 512 MB,以防止模拟器在 2 GB 虚拟地址空间中耗尽空间。
- 添加了对模拟器映像中绝对路径的支持。
- 在 Google Play 商店映像的扩展窗口中添加了一个新选项卡,显示 Play 服务版本和一个检查 Play 服务更新的按钮。
- 在模拟器设置页面上添加了一个下拉菜单以选择 OpenGL 渲染器。如果您在 Windows 机器上遇到 OpenGL 驱动程序问题,请尝试使用 ANGLE (D3D11) 或 ANGLE (D3D9) 选项(需要重新启动)。如果您在非 Windows 机器上遇到 OpenGL 驱动程序问题,请尝试使用 Swiftshader 软件渲染器(需要重新启动)。
- 修复了模拟器同时收到
exit
和minimize
命令时退出时罕见的崩溃问题。 - 修复了在 Mac 机器上更改显示器时出现的缩放问题。(问题 268296)
- 修复了在主机计算机从睡眠中恢复或模拟器运行时间过长时,模拟器占用 300% CPU 并持续占用的问题。
- 修复了模拟器关闭时崩溃的问题。
HAXM v6.1.1 更新 (2017 年 3 月)
注意:截至 3 月 30 日,HAXM v6.1.1 可通过 SDK Manager 供 Mac 用户使用,Windows 用户很快也将可用。
Android 模拟器 26.0.0 版支持 HAXM v6.1.1,其中包括以下更新:
依赖项
- Android SDK Platform-Tools 修订版 25.0.4 或更高版本。
- Android SDK Tools 修订版 26.0.0 或更高版本。
新功能和错误修复
- 与 API 级别 26 兼容。
- 完全符合 GLES 2.0。如果主机 GPU 具有符合规范的桌面 OpenGL 驱动程序,模拟器现在通过 100% 的 Android CTS dEQP-GLES2
mustpass
列表。这已针对 API 级别 24 x86 映像(修订版 11 及更高版本)发布,并将很快包含在所有系统映像中。 - 提高了视频播放性能。模拟器现在将所有视频颜色缓冲区存储在主机/客机共享内存中,并在 GPU 中执行必要的最终 YUV 到 RGB 转换。现在大多数系统应该能够很好地达到 1080p30。这已针对 API 级别 24 x86 映像(修订版 11 及更高版本)发布,并将很快包含在所有系统映像中。
- 模拟器现在在退出时正确地从
adb devices
列表中注销自身,并关闭 Linux 机器上打开的 TCP 端口。 - adb 连接现在更可靠。运行中的模拟器可以更快地被检测到,并且不再进入“离线”或“未经授权”状态。
25.3.0 (2017 年 3 月)
截至此版本,Android 模拟器将独立于 SDK 工具发布。此版本包含各种性能改进、新功能和错误修复。
次要修订版 25.3.1 (2017 年 3 月)
- 通过默认禁用 GLAsyncSwap 修复了某些 GPU 配置上发生的崩溃。此功能在 25.3.0 中添加,旨在改善游戏和视频的帧时间及每秒帧数,但在某些未知机器配置上导致模拟器失败。您可以通过打开
android_sdk/emulator/lib/advancedFeatures.ini
文件并将GLAsyncSwap = on
来手动启用它。
依赖项
- Android SDK Platform-Tools 修订版 24 或更高版本。
- Android SDK Tools 修订版 25.3.0。
新功能和错误修复
- 模拟引擎更新至 QEMU 2.7,包括所有最近的错误修复、性能改进和新功能。
- 新增 IPv6 支持。
- 模拟器现在在主机上使用 SwiftShader 作为纯软件渲染器。
- Android Pipe 性能改进:Android Pipe 是模拟器和 Android OS 之间的主要通信通道,现在速度快了一个数量级,延迟更低,并提供更好的多线程性能。这为模拟器带来了一些性能改进,包括:
- 提高了 ADB 推送/拉取速度。
- 更好的 3D 加速支持。
- 提高了模拟器的整体响应速度。
- 提高了图形性能。
- 当客机请求时,模拟器现在使用 GPU 侧缓冲区 (glBindBuffers / glBufferData),从而减少某些应用中的 CPU 开销。
- 改进了音频支持。
- 更快的磁盘 I/O:模拟器现在使用单独的线程来调度磁盘 I/O,从而降低延迟并提高吞吐量(顺序 I/O 速度提高约 1.5 倍,随机访问 I/O 速度提高约 5 倍)。这还减少了对磁盘的刷新次数,从而大大降低了物理设备负载。
- 模拟器现在在 Windows 机器上使用稀疏文件进行磁盘引导,从而加快了首次引导和“擦除数据”引导的速度。创建或重置 AVD 时,模拟器现在向磁盘写入 100-200 MB 数据,而不是 2 GB 或更多。
- 各种 GUI 增强功能
- 模拟器现在使用 Qt 5.7.0,其中包括错误修复和性能改进。
- UI 初始化不再尝试将所有模拟器可执行文件加载为 Qt 插件,因此它显著缩短,尤其是在 HDD 上。
- UI 交互现在更快更流畅,包括旋转、窗口大小调整以及扩展控件窗口的加载和关闭。
OpenXR™ 和 OpenXR 徽标是 The Khronos Group Inc. 拥有的商标,并在中国、欧盟、日本和英国注册为商标。