模拟器发行说明

Android Studio 包含 Android 模拟器

25.3.0 之前的模拟器版本作为 Android SDK 工具的一部分分发。

要确保您拥有最新版本,请在 SDK 管理器 中检查更新。

要下载 Android 模拟器的先前版本,请参阅 模拟器下载存档

有关 25.3.0 之前模拟器版本的版本说明,请参阅 Android SDK 工具版本说明

有关已知问题和故障排除,请参阅 模拟器故障排除

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 相关的崩溃和卡顿问题
  • [错误修复] 修复了 Windows 上使用 Vulkan 的应用程序导致的崩溃和冻结问题

34.2.16 (2024年7月9日)

  • [错误修复] Pixel Fold 在折叠/展开期间发生的 UI 冻结
  • [错误修复] 在 Mac M1 上,Android 版本错误地显示为 Android Vanilla Ice Cream 预览而不是 API 35。
  • [错误修复] 问题 #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 稳定版补丁 1 进行了测试。

  • [错误修复] 快照有时会在嵌入式模拟器上挂起
  • [错误修复] 快照上的“否”和“取消”按钮无法正常工作
  • [错误修复] 方向键无法工作
  • [错误修复] 修复了 Windows 上在某些情况下使用 ANGLE 的 GPU 模式启动模拟器时出现的问题,并在日志中返回错误消息“无法初始化 GL 模拟”。请注意,使用选项 -gpu swangle_indirect 通过命令行启动模拟器可能会在此版本中仍然生成此错误。如果您仍想在此版本中使用命令行在 Windows 上使用软件图形渲染启动模拟器,请使用 -gpu swiftshader_indirect
  • [错误修复] 键盘上的位置快捷方式加载了不可用的地图
  • [错误修复] 设置位置时,“保存路线”对话框不见了

34.2.13 (2024年4月30日)

已与 Android Studio Jellyfish 稳定版进行了测试。

  • 更新到 Qt 6.5.3
  • 兼容 Google Maps API 更新,这些更新用于模拟器扩展控件中的位置功能,将于 5 月底推出。
  • 修复了严重崩溃问题
  • 修复了各种与 Pixel AVD 相关的问题
  • 更新了用于软件渲染的图形库
  • [错误修复]问题 225541819 在 x86_64 上启动 Chrome 会导致模拟器崩溃
  • [错误修复]问题 314614435 -http-proxy 开关解析不正确

34.1.20 (2024年4月1日)

已与 Android Studio Iguana 稳定版进行了测试。

  • [错误修复] 问题 #314614435:修复 -http-proxy 开关解析不正确的问题

34.1.19 (2024年3月7日)

已与 Android Studio Iguana 稳定版进行了测试。

  • [错误修复] 问题 #312677259:修复了调整嵌入式模拟器窗口大小后屏幕冻结的问题。

34.1.18 (2024年2月29日)

已与 Android Studio Iguana 稳定版进行了测试。

  • 向模拟器中添加了以下设备:
    • Pixel Fold
    • Pixel 平板电脑
    • Pixel 8
    • Pixel 8 Pro
    • Pixel 7a
  • gRPC 集成测试:gRPC 端点现在可用于在模拟器内运行的检测测试,从而能够测试现实场景。此功能使开发人员能够从 Android 检测测试中安全地与 Android 模拟器托管的 gRPC 端点进行交互。
  • 修复了各种错误
    • 错误修复:改进了折叠设备的可用性
    • 错误修复:旋转后调整模拟器的位置
    • 修复了崩溃问题

33.1.24 (2023年12月28日)

已与 Android Studio Hedgehog 稳定版和 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 稳定版进行了测试。

  • 新的可折叠实现,以更好地模拟 Pixel Fold 设备,适用于最新的 API 34
  • 图形后端升级:我们已为我们的图形后端实现了 gfxstream 协议,此增强功能提高了系统整体图形性能和稳定性。此外,从具有 API 34 的系统镜像开始引入 Vulkan 1.3 支持
  • 功能请求:禁用捏合缩放手势或重新分配其热键的选项
  • [错误修复] 问题 #302562962 使用 MacOS Sonoma 时修复模拟器网络摄像头崩溃问题
  • [错误修复] 问题 #293503871 修复了重新启动模拟器时“麦克风”设置未保存的问题
  • [错误修复] 问题 #270386314 修复了侧边栏在 AVD 屏幕最小化后保持打开状态的动画错误
  • [错误修复] 问题 #154896775 修复错误提交工具

32.1.15 (2023年8月29日)

已与 Android Studio Giraffe Patch 1 和 Hedgehog Canary 16 进行了测试。

  • 符合 AAE 模拟器中传感器的 GAS 硬件要求
  • [错误修复] 问题 #266201208 API 33 上未发送希伯来语短信
  • [错误修复] 问题 #257097404 主机唤醒后,模拟器在 API 29 和 30 上未显示正确的时间
  • [错误修复] 问题 #228201899 无法在 Android 模拟器扩展控件中看到 Google 地图

32.1.14 (2023年6月27日)

已与 Android Studio Hedgehog Canary 8、Giraffe Beta 5 和 Flamingo 稳定版进行了测试。

  • 修复模拟器摄像头方向和失真问题。
  • [错误修复] 问题 #257097404“主机唤醒后,模拟器未显示正确的时间”。此错误在 API 29 和 API 30 上仍然可以重现。
  • [错误修复] 问题 #243456582“API 30 之后的 Android 版本可能无法在 Mac M1 机器上的模拟器中正确启动”

32.1.13 (2023年5月22日)

已与 Android Studio Hedgehog Canary 2、Giraffe Beta 1 和 Flamingo 稳定版进行了测试。

  • 添加对 Pixel Fold 和 Pixel 平板电脑 AVD 的支持。
  • 改进了 gLinux 崩溃问题。
  • [错误修复] 问题 #215231636“在 Intel 第 12 代处理器上,API 高于 API 30 的模拟器无法工作”。
  • [错误修复] 问题 #275397905 在 Android 模拟器 M1 上,反复移动光标焦点时出现大量崩溃。
  • AVD 启动存在已知问题 问题 #281725854。有关更多信息,请参阅 模拟器故障排除

32.1.12 (2023年3月21日)

已与 Android Studio Giraffe Canary 10、Flamingo RC 和 Electric Eel Patch 2 进行了测试。

  • [错误修复] 问题 #267647323 从 Android Studio 启动的模拟器上的网络无法工作
  • [错误修复] 问题 #268498686 模拟器屏幕闪烁
  • [错误修复] 问题 #270034824 更新到版本 33.1.1 后模拟器性能下降
  • [错误修复] 问题 #225541819 在 x86_64 上启动 Chrome 会导致模拟器崩溃
  • [错误修复] 问题 #257097404 主机唤醒后,模拟器未显示正确的时间
  • 为 Apple M1 设备添加崩溃报告

32.1.11 (2023年2月8日)

已与 Android Studio Giraffe Canary 2、Flamingo Beta 1 和 Electric Eel Patch 1 进行了测试。

  • 网络速度优化
  • 嵌入式模拟器中的鼠标支持
  • Virtio-snd 改进
  • 在安装过程中解压缩 Android 模拟器时禁用符号链接的使用
  • 修复 emulator-check 中的崩溃问题

31.3.14 (2022年12月13日)

已与 Android Studio Dolphin、Electric Eel RC1 和 Flamingo Canary 9 进行了测试。

  • [错误修复] 修复登录 Play 商店时发生的 AVD 崩溃问题。

31.3.13 (2022年10月27日)

已与 Android Studio Dolphin、Electric Eel Beta 2 和 Flamingo Canary 5 进行了测试。

31.3.12 (2022年10月10日)

已与 Android Studio Dolphin 和 Electric Eel Beta 1 进行了测试。

此更新包括以下改进和修复

  • [错误修复] 问题 #247843000: AVD 相对路径处理错误
  • 增加 API 24 及更高版本的磁盘大小

31.3.11 (2022年9月23日)

已与 Android Studio Dolphin 和 Electric Eel Canary 10 进行了测试。

此更新包括以下改进和修复

  • [错误修复] 嵌入式模拟器 AVD 在扩展控件窗口中崩溃
  • [错误修复] 问题 #183139207: 与模拟器激活麦克风相关的音频问题
  • [错误修复] 问题 #229764024: AVD 粘性触摸错误,导致 UI 行为问题
  • [错误修复] 在 Mac M1 上启动 API 33 AVD 时出错。
  • [错误修复] 问题 #243053479: 更新模拟器后网络速度缓慢
  • [错误修复] 问题 #244617627: Windows 和 Linux 上的地图位置无法正常工作
  • [错误修复] 问题 #232971796: 扩展控件 > 电话页面上的“呼叫设备”按钮无法正常工作
  • 将 Android 模拟器更新到 minigbm
  • 构建脚本迁移到 Python3

31.3.10 (2022年8月18日)

已与 Android Studio Dolphin Beta 5 和 Electric Eel Canary 9 进行了测试。

模拟器的独立下载现已可用。如果您在此最新稳定版本中遇到任何问题或崩溃,请 提交错误 并考虑从 模拟器下载存档 下载之前可用的版本。

此更新包括以下改进和修复

  • 改进了 Windows 上的 Unicode 路径支持
  • 改进了模拟器关闭处理,以便可以成功启动同一 AVD 的新实例。
  • 更新了可折叠 AVD 的设计和默认设置
  • 更新了 Wear 模拟器按钮
  • gRPC 音频流改进
  • 添加了可调整大小的模拟器控制台命令
  • API 31 的 Chrome 修复
  • 【Bug 修复】Google 账户认证在 GmsCore v21.42.18 版本下失败

31.2.10 (2022年4月20日)

已在 Android Studio Dolphin Canary 8 和 Chipmunk RC 1 中测试。

此更新包括以下改进和修复

  • 添加实用程序,使用回退机制加载 Vulkan 函数
  • 【Bug 修复】修复 gcc8 编译错误

31.2.9 (2022年3月23日)

已在 Android Studio Dolphin Canary 7 中测试。

此更新包含以下修复

  • 【Bug 修复】在 M1 上保存快照时忽略内存压力

31.2.8 (2022年2月7日)

已在 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 中测试。

此更新包括以下改进和修复

  • 【Bug 修复】无法登录应用
  • 【Bug 修复】问题 #215368358: 在 Intel 平台上使用“adb reboot”会导致 avd 崩溃并出现“vcpu shutdown request”错误

31.2.7 (2022年2月1日)

已在 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 中测试。

此更新包含以下修复

  • 【Bug 修复】M1 计算机上模拟器挂起错误。

31.2.6 (2022年1月20日)

已在 Android Studio Arctic Fox、Bumblebee Beta 4 和 Chipmunk Canary 6 中测试。

此更新包括以下改进和修复

  • 为 Wear OS 模拟器添加了佩戴按钮。
  • 使 VHAL 选项卡中的所有车辆属性都可编辑。
  • 【Bug 修复】Google 账户认证在 GmsCore v21.42.18 版本下失败。
  • 【Bug 修复】Netshaper 与 VirtioWifi 的配合效果不佳。
  • 【Bug 修复】事件鼠标控制台命令不起作用。
  • 为本地 AVD 创建添加了 KVM 检查。

31.1.3 (2022年1月18日)

此更新包括以下改进和修复

  • 为 Fuchsia 启用了控制台端口。
  • 调整多显示器窗口大小时,会忽略方向。
  • Wi-Fi:添加了根据 MAT mac 地址过滤单播数据包的支持。
  • Wi-Fi:修复了 vmnet 正在使用时发生的崩溃。

30.9.5 (2021年12月15日)

此更新包括以下改进和修复

  • 添加了轻松调整到桌面或平板电脑大小窗口的功能。
  • 添加了对来自兼容主机设备的多点触控输入的支持。
  • VirtioWifi:添加了对 tap 网络的支持。
  • 为 Wear 系统映像启用了旋转输入。
  • 修复了 gRPC 音频配置问题。
  • 更新了 SensorReplay 模拟器回放以支持标准 Android 传感器。
  • 使用 USB 直通将模拟器连接到外设和设备。

30.4.5 (2021年2月23日)

此更新包括以下改进和修复

  • macOS:修复了音频输入失真问题。
  • 添加了对用户空间中 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 文件配合使用

    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
    
  • 折叠屏设备现在还包含一个子类型参数。现在可以使用 config.ini 属性 hw.sensor.hinge.sub_type = hinge/fold。请参阅 使用 Android 模拟器开发 Android 11 博文以了解更多信息。

  • 现在默认启用铰链传感器。

  • 如果配置了折叠屏设备,模拟器现在会将铰链角度传感器更新和姿势更改发送到访客。现在,当工具栏的折叠或展开按钮被按下时,现有折叠屏设备将更新铰链传感器的角度和姿势。

适用于 ARM64 主机的模拟器

  • Linux 模拟器源代码现在支持从 x86_64 到 arm64 主机的交叉编译,从而能够使用 KVM 虚拟化运行 arm64 系统映像。目前,仅支持 -gpu swiftshader_indirect(Swiftshader arm64 主机渲染),但也可以通过将 lib64/gles_swiftshader 替换为兼容的主机 GPU libEGL/libGLESv2 库来使用它们,然后使用 -gpu swiftshader_indirect 重新启动。快照也可能无法正常工作(在命令行中添加 -no-snapshot)。说明

    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
    
  • 正在开发对 Apple Silicon 的支持。

virtio-gpu 支持

  • 在主机端添加了对即将推出的 virtio-gpu 主机一致 blob 资源的支持。
  • 由于模拟器渲染的工作方式,我们现在在 vcpu 线程中处理 virtio-gpu virtqueue(因为渲染已被卸载到其他线程)。virtio-gpu 渲染将在未来的系统映像和模拟器版本中启用。
  • 在未来的系统映像中,模拟器将能够使用基于 virtio-gpu 的堆栈运行所有图形。

其他新功能和增强功能

  • 现在可以使用 -qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id> 在 Windows 上使用 USB 直通。(这在 Linux 和 macOS 上也应该已经可以工作了)
  • 将 WebRTC 库更新到 M83。
  • 模拟器现在支持通过 WebRTC 在容器中进行音频流传输。
  • 已删除 darwinn 管道端点。
  • 如果 CUDA VPx 解码在硬件中可用,则现在可以通过环境变量 ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1 使用 CUDA VPx 解码进行视频解码。
  • 在 macOS 上,现在可以在 Android 访客内部使用 SSE 4.1 和 4.2。
  • 在 macOS 上,现在默认启用 INVTSC。这可以提高访客时间测量的准确性。
  • 我们现在跟踪用户在指标中选择的扩展控制面板。
  • 当访客内核版本 >= 5.4(R 系统映像或更高版本)时,Linux 模拟器现在使用 KVM 半虚拟化时钟。
  • 模拟器现在使用 LZ4 解压缩访客内核,使其与现代内核管道兼容。
  • 添加了控制台命令以获取模拟器 AVD 目录、Studio 集成用例中的发现文件路径以及快照路径

    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>
    
  • 为了更容易节省垂直屏幕空间,我们添加了一个选项,可以在 **扩展控件 > 设置** 中隐藏当前 AVD 的设备框架。要全局隐藏所有 AVD 的设备框架,我们提供了 NoDeviceFrame 功能标志,可以通过使用 -feature NoDevice frame 从命令行启动模拟器来激活它,或者将其锁定,在 ~/.android/advancedFeatures.ini 中添加 NoDeviceFrame = on(如果该文件不存在,请创建它)。

  • 在蜂窝页面中添加了一个下拉项以打开和关闭计量支持,对于不支持 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/&lt;uid>

  • 嵌入式模拟器:具有圆角/凹口的设备现在会正确更改其布局以腾出空间放置圆角和凹口。这需要重新冷启动这些模拟器。

  • gRPC 端点现在支持向设备发送短信。

常规修复

  • 我们发现使用启用了 Riot Vanguard 的 Windows 模拟器时存在兼容性问题。Windows 模拟器现在会检测 Vanguard 反作弊并弹出警告消息(如果检测到 Vanguard)。
  • 修复了 Windows 上的 FD_SETSIZE 错误。我们现在使用 WSAEventSelect() 而不是 select() 来建立到环回服务器的非阻塞连接。
  • 为 Linux 模拟器添加了 F16C CPUID 功能支持,并修复了通过 NDK 转换运行某些 ARM64 应用程序时出现的问题;macOS/Windows 正在开发中。
  • 修复了 gpx/kml 路线回放以遵循时间戳的问题。
  • 修复了 MacOs 上启动时图标弹跳的问题。
  • 如果 config.ini 中的 hw.audioInput=nohw.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 渲染器中的内存泄漏。
  • 修复了最近的回归问题,其中具有 isampler2D 等变量名称的 GLSL ES 1.00 着色器无法编译。
  • 使用各种修复更新了 ANGLE 着色器转换器,这些修复解决了在 Linux 上可能无法编译着色器的问题。
  • 如果基本帧缓冲区混合着色器无法编译,我们现在会使模拟器崩溃,以便跟踪此现象。
  • 更新了 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 的软件解码,因为我们已经看到了 libvpx 的 CUDA 硬件解码问题。如果您在主机端有受支持的 CUDA 硬件解码实现,则可以通过环境变量 ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1 重新启用 libvpx 的硬件解码。

30.0.10 (2020年4月30日)

此更新包括对直接在 Android Studio 中运行模拟器以及默认情况下激活自由窗格模式的虚拟设备的支持。

在 Android Studio 中运行模拟器

Android 模拟器现在可以直接在 Android Studio 中运行。使用此功能可以节省屏幕空间,使用热键在模拟器和编辑器窗口之间快速导航,以及在一个应用程序窗口中组织您的 IDE 和模拟器工作流程。

自由窗格模式

您现在可以创建一个启用了自由窗格模式的 AVD,方法是在 Android Studio 中创建虚拟设备时选择 13.5 英寸自由窗格平板电脑硬件配置文件。此硬件配置文件需要具有 Android 11 开发者预览版 3 或更高版本的系统映像。

已知问题

由于将焦点转移到窗口管理器的问题,目前自由窗格窗口的大小调整已损坏。这将在未来的 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 二进制文件支持

如果您之前无法使用 Android 模拟器,因为您的应用依赖于 ARM 二进制文件,您现在可以使用 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 静态编译。
  • Linux:已将 logcat 支持添加到 gRPC API。有关 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 可执行文件 (emulator[64]-[x86|arm|etc]) 放置在模拟器目录中,您现在可以使用之前使用 QEMU1 的二进制文件运行模拟器。
  • Windows:修复了可能导致模拟器有时无法启动并显示“vCPU 关闭请求”消息的问题。
  • 修复了模拟压缩纹理中 Vulkan 中不必要的管道屏障问题。
  • 修复了使用分块传输编码时 http 代理请求发生的错误。有关更多信息,请参阅提交详细信息

29.0.9 (2019年5月7日)

此更新包含以下修复

  • Windows:修复了模拟器上虚拟场景摄像头和网络摄像头无法工作的问题。

29.0.8 (2019年5月6日)

此更新包括以下改进和修复

  • 当存在来宾服务来枚举和设置每个显示器时,添加了对多个虚拟硬件显示器的支持。多个虚拟硬件显示器将包含在未来的模拟器系统映像更新中。
  • 添加了一个新的命令行选项:-delay-adb。此选项会抑制处理 ADB 数据包,直到来宾完成引导(冷启动)。此选项有助于解决在 CI 环境中使用模拟器并同时使用 DDMS 时可能出现的问题。
  • 修复了加载快照时发生的错误,其中 glIsRenderbuffer 将返回不正确的值。
  • 修复了 Android 来宾重新引导时某些陈旧状态的问题。
  • Windows:修复了当 Windows 用户名包含非 ASCII 字符或空格时阻止模拟器启动的问题。

已知问题

  • 汽车系统映像禁用了快照 UI,因为这些系统映像目前不支持快照。

29.0.6 (2019年5月1日)

此更新包含多个新功能、对现有功能的改进以及错误修复。

移除 QEMU1 和 32 位 Windows 支持

为了更好地维护模拟器,我们不再提供 QEMU1 和 32 位 Windows 二进制文件。如果您使用的是 Windows 32 位,则无法升级到版本 29.0.6。

Android Q 系统映像的要求

如果您想运行使用 Android Q 系统映像的 AVD,您现在必须使用版本 29.0.6(此发行版本)或更高版本。

Project Marble 改进

此更新继续我们对 2018 年 11 月在 Android 开发者峰会 上宣布的 Project Marble 计划的工作。有关以前版本中其他 Project Marble 改进的更多信息,请参阅 Android 模拟器:Project Marble 改进

对于此更新,我们的大部分 Project Marble 工作都致力于减少模拟器资源使用,例如减少模拟器在空闲时的 CPU 使用率。我们还包含了一些更改,使模拟器更容易在更多环境中使用,并且我们解决了普遍的质量问题。

以下部分描述了此更新中包含的 Project Marble 改进

主机音频行为改进

从版本 28.0.3 开始,模拟器默认阻止来自主机的音频输入

如果您想使用主机音频数据,您可以通过转到“扩展控件 > 麦克风”并启用“虚拟麦克风使用主机音频输入”来启用该选项。每当模拟器重新启动时,此选项都会自动禁用。

如果您使用的是命令行,您还可以使用 -allow-host-audio 选项启用主机音频,并且可以使用以下 ADB 命令分别打开或关闭主机音频数据

  • adb emu avd hostmicon
  • adb emu avd hostmicoff

无头模拟器构建改进

从版本 28.0.25 开始,模拟器包含一个无头构建选项,可以在没有 UI 的情况下运行。您可以使用无头构建来帮助您为 Docker 和持续集成 (CI) 工作流程设置模拟器。

在此更新中,我们进行了进一步改进,以允许模拟器以最少的依赖项运行。在 Linux 上,无头构建不再包含 pulseaudiolibX11 库。未与模拟器打包的系统相关共享库已减少到以下列表

  • 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 依赖库的不兼容版本的问题,我们现在将 libfreetypelibsoftoknlibsqlite3libxkbcommon 与模拟器打包在一起。
  • 模拟器现在使用平台的原生窗口库来获取显示器尺寸,而不是使用返回不可靠结果的 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 使用率缓解措施。

用于性能监控的新环境变量

您现在可以使用两个新的环境变量来启用对模拟器性能和资源使用情况的详细监控。

SHOW_PERF_STATS=1
此环境变量会启用对 CPU 和 RAM 使用情况的跟踪。RAM 使用情况的跟踪会区分图形使用情况和总驻留内存。
ANDROID_EMU_TRACING=1
此环境变量会启用每次输入或图形操作耗时过长(超过 1 毫秒)时的打印。
我们还使用此环境变量来帮助诊断 Windows 用户遇到的卡顿(丢帧)问题,这些问题比 macOS 或 Linux 用户遇到的问题更多。

常规的 Project Marble 改进

此更新还包含以下作为 Project Marble 计划一部分的常规改进

  • 您现在可以通过以下控制台命令立即暂停模拟器上的所有 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 的结果而不是模拟结果。此更改有助于修复由于读取回格式不正确而导致图像和资源无法显示的问题。
  • 如果主机支持,则添加了对 OpenGL ES 扩展 GL_EXT_texture_format_BGRA8888GL_APPLE_texture_format_BGRA8888 的支持。
  • 向 Bugreport UI 添加了更多诊断信息。此外,您可以使用以下命令从控制台访问错误报告
    • telnet localhost 5554
    • avd bugreport
  • 在 Android Q 系统映像上,模拟器将其最小 RAM 大小增加到 2 GB。
  • 在 OpenGL 或虚拟机监控程序无法初始化时添加了更多日志记录和打印。
  • 如果模拟器无法启动 AVD 的并发 -read-only 实例,模拟器现在会尝试在 3 秒内重新启动 -read-only AVD 3 次。如果其他可写实例尚未完成清理陈旧文件,则此更改会增加模拟器能够启动 AVD 的并发 -read-only 实例的可能性。
  • 对于即将推出的系统映像,模拟器现在支持 Hardware Composer 2.0。此更改应在运行大多数动画时降低驱动程序开销。
  • 模拟器构建现在基于 CMake/Ninja。
  • 在模拟器扩展控件 UI 中,已恢复键盘快捷键表中的分隔线。
  • 用户现在可以选择加入,以每 10 秒的间隔向我们的团队提供 CPU 和 RAM 使用情况指标。我们使用这些指标来丰富我们关于模拟器资源使用情况的数据,这些数据来自我们用户的不同用例,这使我们能够使模拟器更高效和更具响应性。

常规的 Project Marble 修复

此更新还包含以下作为 Project Marble 计划一部分的常规修复

  • 修复了在使用 Android Q 系统映像时,在具有 Intel GPU 的系统上显示抖动和不正确帧的问题。
  • 修复了在使用具有 Pixel 2 XL 皮肤(或任何具有缺口或圆角的皮肤)的 Android Q 系统映像时显示黑屏的问题。
  • 修复了 -partition-size 命令行选项无法设置数据分区大小的问题。
  • 修复了 Linx 模拟器上的 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> 命令行选项将 stdoutstderr 都重定向到一个文件。
  • 修复了 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 年及以后的大多数英特尔、NVIDIA 和 AMD GPU)。

要启用 Vulkan 支持,您必须将以下功能标志添加到您的~/.android/advancedFeatures.ini 文件中(如果文件不存在,请创建该文件)

  • Vulkan = on
  • GLDirectMem = on

针对 ROM 开发人员的初始支持

在 AOSP master 分支上构建 sdk_phone_x86sdk_phone_x86_64userdebugeng 变体)目标的 ROM 开发人员现在可以运行启用了 Vulkan 的模拟器。

此支持仍处于实验阶段,主要面向从事系统镜像、驱动程序和游戏引擎开发的开发人员。许多扩展程序仍然缺失。但是,支持 HOST_COHERENT 内存,您现在应该能够运行Vulkan API 教程示例

如果您使用的是 Linux,则可以使用以下命令进行尝试

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 进行 Skia 渲染

支持 Vulkan 的 NVIDIA 和 AMD GPU 还通过 GL_EXT_memory_objects 扩展支持与 OpenGL 的零拷贝互操作。模拟器利用此功能提供了一种完整的方式来使用 Skia Vulkan API 渲染 Android UI。

如果您拥有支持 Vulkan 的 NVIDIA 或 AMD GPU,请使用以下命令测试与兼容系统镜像(Android Q Beta 3 及更高版本)的 Skia 渲染

adb shell
su
setprop debug.hwui.renderer skiavk
stop
start

macOS 对 Vulkan 的支持

macOS 支持仍处于实验阶段,但模拟器已包含SwiftshaderMoltenVK 和 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> 是模拟器应提供 gRPC 请求的端口(通常为 5556

-grpc <port>

服务启动后,客户端就可以发出 gRPC 命令。当前的命令集允许同时发送输入事件和接收屏幕截图。这些命令有助于解决以下问题

  • 输入命令可以通过 HTTP 以低开销发送到模拟器。HTTP 还允许在其他网络配置中发送命令。
  • 即使模拟器在无头模式下运行,也可以发送屏幕截图命令以查询当前屏幕。为了实现交互性,还可以将输入事件发送回模拟器。
  • 远程桌面用户可以在主显示器上以无头模式运行模拟器,并使用 GPU 加速渲染,同时使用 gRPC 获取屏幕截图并发送输入事件以与模拟器交互。

有关可用命令的完整列表,请参阅此 protobuf

为了帮助您开始使用 gRPC,我们提供了一些示例客户端,您可以参考这些客户端。

目前,其中包括以下示例

  • 一个基于 Go 的服务,可用于查询模拟器状态。
  • 一个 React 应用,演示了通过屏幕截图和输入 RPC 进行远程交互。此示例需要 protobuf 3.7.0 或更高版本。
  • 一个 Python 示例,查询模拟器的 VM 配置,然后发送一系列命令。

28.0.25(2019 年 3 月 29 日)

此更新包括以下改进和修复

无头模拟器构建

由于系统隐式期望能够支持 Qt 及其共享库依赖项(以及其他问题),因此模拟器一直难以与 Docker 和其他持续集成 (CI) 工作流程一起设置。

作为解决此问题的第一步,我们引入了一种模拟器启动程序变体,其中包含不依赖于 Qt 的 QEMU 可执行文件。在 Linux 上,仍然存在一个到 libX11 的链接,但我们希望很快也能将其删除。

要使用无头模拟器,请照常从命令行运行模拟器,但将模拟器二进制文件调用替换为 emulator-headless。有关更多信息,请参阅28.1.8 Canary 版本更新。

  • 修复了运行 Android Q 系统镜像时在英特尔 GPU 上出现的抖动和帧显示不正确的问题。
  • 修复了使用 Android Q 系统镜像和 Pixel 2 XL 皮肤时出现黑屏的问题。
  • 现在使用最新的 BIOS 二进制文件启动模拟器。此更改可以帮助减少在 Windows 上启动模拟器时有时发生的“vCPU 关闭请求”错误。
  • 回退修复了“从快照恢复 Android Q 系统镜像时显示错误”问题
  • 由于 platform-tools 28.0.2 中 ADB 的不兼容更改,用户遇到了“未授权”模拟器问题。您现在可以安全地将 platform-tools 28.0.2 中的 ADB 与模拟器一起使用。如果您遇到“未授权”模拟器问题,请执行以下故障排除步骤
    1. 退出所有模拟器。
    2. 删除 ~/.android/adbkey~/.android/adbkey.pub 文件。
    3. 运行以下命令:adb kill-server
    4. 运行以下命令:adb devices
    5. 擦除 AVD 数据。
    6. 重新启动模拟器。

28.0.23(2019 年 1 月 29 日)

此更新包括以下改进和修复

默认情况下禁用主机音频输入

Reddit 上的一篇近期帖子详细介绍了访客 Android 操作系统如何始终使用主机麦克风的音频,从而导致“Ok Google”意外工作。对此我们深感抱歉,并将与 Android 团队合作,确保在系统镜像中也禁用热词检测。

为了解决此问题,我们进行了以下更改

  • 现在默认情况下会抑制实际的主机音频数据。当访客使用麦克风时,会传递静音而不是主机音频。
  • 如果您想使用主机音频数据,现在可以通过转到扩展控件 > 麦克风并启用虚拟麦克风使用主机音频输入来启用该选项。每当模拟器重新启动时,此选项都会自动禁用。

有关 CPU 使用情况调查的更新

在我们的 Project Marble 调查过程中,我们注意到模拟器上的高 CPU 使用率通常属于以下三类

空闲时:Play 商店镜像中的自动应用更新

我们发现,在随机间隔,所有已安装的应用都会更新,即使用户未登录。在此过程中,CPU 使用率会被驱动到核心数 x 100%(通常约为 400%),出现在 GMSCore 和 dex2oat 中。您可以通过在 Play 商店应用中禁用自动应用更新来缓解此问题。

空闲时:热词检测

当在主屏幕上且没有任何应用处于前台时,CPU 使用率可能会很高(约 25%,峰值可达 50%)。这是由不断向主机发出 ping 的热词检测引起的。您无法通过禁用主机音频输入来缓解此问题,因为 CPU 成本主要由从主机到访客的传输时间造成。但是,您可以通过撤销 Google 应用的麦克风权限来缓解此问题。

活动时,有时在空闲时:动画

第三个高 CPU 使用率来源是动画。我们发现,通过优化图形驱动程序堆栈,我们还可以减少即使模拟器空闲时的 CPU 使用率。我们将作为 Project Marble 的一部分逐步推出图形驱动程序优化。

28.0.22(2018 年 12 月 21 日)

此更新包括以下改进和修复

  • 修复了一个长期存在的问题,即在某些设置下,Mac 模拟器会在快速启动保存时重新启动或内核崩溃。(问题 120951634
  • 当使用映射文件作为 RAM 快照时,模拟器现在会在退出时显式取消映射文件映射。

28.0.20(2018 年 12 月 11 日)

此更新包括以下改进和修复

  • 修复了 Windows 上的一个问题,该问题会导致模拟器在使用某些型号的英特尔 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 月)

此更新包含多个新功能、对现有功能的改进以及错误修复。

资源使用

模拟器现在总体上使用了更少的 RAM,尤其是在使用 API 级别 28 或更高版本的系统镜像时。这些系统镜像包含了对访客端图形驱动程序的内存使用改进。

此外,我们还在以下方面改进了资源使用情况

  • 减少了长时间运行测试期间模拟器的内存使用。如果您在长时间运行的测试期间仍然遇到内存使用问题,请在 问题跟踪器 中创建一个描述您用例的问题。
  • 减少了运行带有动画的应用时的 CPU 使用率。
  • 修复了 QEMU AIO 上下文可能在 Windows 上泄漏的问题。

同时运行多个单个 AVD 实例

您现在可以启动同一 AVD 的多个实例并同时运行它们。您在第一个实例之后启动的实例是只读的,并且它们对访客虚拟磁盘的更改将在退出时被丢弃。

要同时运行同一 AVD 的多个实例,请使用 -read-only 标志从命令行启动第一个实例之后的任何实例。

此功能可以通过复制与 Android 镜像的可写部分关联的 QCOW2 文件来实现。为了帮助您管理磁盘空间,我们还捆绑了 qemu-img 命令行工具,以便您可以在启动多个实例之前预提交 QCOW2 文件。

此外,当与 基于文件的访客 RAM 快照 功能一起使用时,多个 AVD 实例共享主 AVD 快速启动快照作为复制写入访客 RAM 的公共源。此属性意味着实例共享其大部分 RAM。使用此功能运行需要多个设备并行运行的测试。

我们感谢您对可能成为您正常交互式或 CI 工作流程一部分的用例的反馈。请在 问题跟踪器 中创建或投票支持问题。

基于文件的访客 RAM 快照

通过预分配和将访客 RAM 映射为文件,模拟器现在可以在运行时保存快速启动快照,而不是在退出时完成所有工作。如果您目前在关闭模拟器时遇到保存时间过长的问题,请启用此功能以提高快速启动性能。默认情况下,快速启动快照会在退出时保存并在每次启动时再次加载,就像挂起和唤醒真实设备一样。

由于 Android 访客 RAM 现在默认情况下会自动保存,因此,如果您想定义设备状态并反复从该状态加载,则需要告诉模拟器在每次会话后丢弃更改。您可以通过以下方式执行此操作

  • 从命令行启动模拟器时,使用 -no-snapshot-save-read-only 标志。
  • 转到扩展控件>快照>设置并将自动保存当前状态到快速启动?切换为
  • 选择此选项后,您需要重新启动模拟器。如果模拟器设置为自动保存,则可以运行以下命令设置检查点
    adb emu avd snapshot remap 0
    
    运行此命令后,模拟器快速启动快照将停留在该检查点。再次运行同一命令以从检查点加载模拟器。

通过快照 UI 拍摄和加载的快照与以前一样工作,没有文件映射。

由于这是对快速启动工作方式的重大更改,因此我们非常感谢您提供有关它是否改善了快速启动性能以及在使用它时遇到哪些问题的反馈。如果您遇到问题,可以通过在 ~/.android/advancedFeatures.ini 文件中添加以下行来禁用此功能

QuickbootFileBacked = off

当您从快照启动模拟器(使用 -snapshot 命令行选项或从 AVD 管理器中的快照启动)时,模拟器会禁用快速启动快照的自动保存和退出时保存快速启动快照。这减少了快速启动快照意外被覆盖的可能性,并避免了不使用基于文件的快速启动快照的缓慢回退路径。

QEMU 2.12

我们已将 QEMU 的变体从 QEMU 2.9 重置为 QEMU 2.12。此更新包括以下 QEMU 更改

以下是一些影响 Android 模拟器的显着更改

  • x86:gdbstub 现在可以访问 SSE 寄存器。
  • 磁盘镜像:添加了镜像锁定并默认启用。只要主机支持 OFD 或 posix 锁定,多个 QEMU 进程就无法写入同一镜像,除非另有指定选项。
  • qemu-img: qemu-img resize 支持预分配镜像的新部分。
  • QCOW2 缩减现在在 qemuqemu-img 中受支持。

辅助功能

  • 修复了屏幕阅读器的问题,并在屏幕录制和快照 UI 中添加了对这些工具的更好支持。
  • 使快速启动通知图标更容易被色盲用户识别。

图形

  • 修复了可能针对 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 运行时会自动将用户数据分区调整为 6 GB。

常规质量改进和修复

  • 一些用户报告说模拟器运行速度很慢。我们确定了一个可能的原因,即模拟器的临时目录最终会在其中包含过多的陈旧文件。作为解决方法,模拟器不再在该目录中存储 ADB 活动检查文件。但是,删除该文件夹的内容也可能有所帮助。根据您的操作系统,该文件夹位于以下位置之一
    • Windows:C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
    • macOS 或 Linux:/tmp/android-<username>/*
  • 如果模拟器由于可用 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解决的一些问题

  • 修复了使用最新Linux内核(>= 4.6)的来宾操作系统的随机崩溃问题。例如,Ubuntu 18.04 (#39#74)。
  • 修复了一个可能导致主机崩溃的x86指令模拟器错误(#93)。

32位Windows弃用

由于使用率低和维护成本高,我们计划弃用在Windows上运行的Android模拟器的32位版本。在移除和停止支持32位版本的Android模拟器之前,我们将推出过渡计划。但是,我们正在积极寻求对此未来变化的任何反馈或疑虑。

如果您目前依赖在Windows上运行的Android模拟器的32位版本,请在问题跟踪器中告知我们,并告诉我们如何才能更好地与您合作。

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标志从命令行运行模拟器来启用这些错误消息。

常规修复

  • 修复了在相机应用中加载快照时发生的OpenGL错误。

27.3.8(2018年7月)

此更新包含多个新功能、对现有功能的改进以及错误修复。

快照

您现在可以为给定的设备配置保存多个AVD快照,并在启动模拟器时选择要加载的已保存快照。

从Android Studio 3.2 Canary 13开始,每个设备配置在虚拟设备配置对话框的高级设置中都包含一个控件,您可以使用该控件指定在启动AVD时要加载哪个AVD快照。

为了适应快照功能的扩展,我们在扩展控件对话框中添加了一个快照类别。此新窗格包含用于保存和加载AVD快照的控件,包括用于保存和加载先前位于设置窗格中的快速启动快照的控件。

您可以编辑每个已保存快照的名称和描述。

有关详细信息,请参阅快照

HAXM 7.2.0

HAXM 7.2.0现已在所有渠道中可用。

此更新包括错误修复并改进了对大量RAM的支持。此外,通过此HAXM更新和模拟器27.3及更高版本,快照会根据需要将其内容加载到RAM中,而不是在虚拟设备启动时加载整个快照。此更改应大大减少加载快照所需的时间。

有关详细信息,请参阅配置VM加速

27.2.9(2018年5月)

此更新包含多个新功能、对现有功能的改进以及错误修复。

屏幕录制

您现在可以从Android模拟器录制视频和音频,并将录制内容保存到WebM或动画GIF文件。

屏幕录制控件位于扩展控件窗口的屏幕录制选项卡中。

提示:您还可以通过按Control + Shift + R(在Mac上按Command + Shift + R)打开屏幕录制控件。

要开始屏幕录制,请单击屏幕录制选项卡中的开始录制按钮。要停止录制,请单击停止录制

录制视频的播放和保存控件位于屏幕录制选项卡的底部。要保存视频,请从选项卡底部的菜单中选择WebMGIF,然后单击保存

您还可以使用以下命令在命令行中从模拟器录制和保存屏幕录制

adb emu screenrecord start --time-limit 10 [保存视频的路径]/sample_video.webm

屏幕截图

您可以使用以下任一命令从命令行拍摄屏幕截图

  • screenrecord screenshot [目标目录]
  • adb emu screenrecord screenshot [目标目录]

屏幕截图以PNG格式保存。

虚拟场景相机和ARCore

使用新的虚拟场景相机开发和测试ARCore增强现实应用(AR)现在变得更加容易,它允许您在虚拟环境中体验您的AR体验。

有关在模拟器中使用虚拟场景相机的更多信息,请参阅在Android模拟器中运行AR应用

Pixel设备镜像上的Google Play商店

Pixel和Pixel 2设备镜像现在启用了Google Play商店。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 [号码],这允许设置完整的电话号码。

您现在可以使用字母数字SMS地址。

修复

  • Android模拟器的Linux版本现在使用现代Clang C++工具链构建。此更改修复了模拟器由于libGL和libstdc++错误而无法启动的问题。
  • 修复了几个导致崩溃和挂起的原因。
  • 为了避免由于磁盘空间不足导致的崩溃和挂起,模拟器现在会在启动时检查是否有足够的可用磁盘空间,并且除非至少有2 GB可用空间,否则不会启动。
  • 修复了一个阻止某些Unity游戏渲染的问题。
  • 修复了导致模拟器无法连接到网络的DNS问题。
  • 修复了一个问题,该问题导致通过虚拟设备配置对话框分配给AVD的内部存储的更改不起作用。
  • 修复了创建许多adb进程且未正确关闭的问题。
  • 修复了一个问题,该问题会导致旋转按钮和UI的其他部分无响应,除非扩展控件窗口已打开。
  • 修复了一个问题,该问题会导致从主机复制和粘贴无法工作,除非扩展控件对话框至少打开一次。
  • 无边框模拟器的调整大小矩形已更新,以更好地遵循模拟器的视觉主题。
  • 当飞行模式打开时,电话和短信现在会正确停用。
  • 修复了加载快照后导致SMS和蜂窝功能禁用的问题。
  • 您将不再收到错误的警告消息,提示“无法打开... \pstore.bin. 权限被拒绝。”
  • 修复了一个阻止在某些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 级别 27)及更高版本的系统映像,任何连接的网络摄像头都必须能够捕获 720p 帧。

  • 修复

    • 修复了导致网络摄像头捕获有时输出失真或全绿图像的问题。
    • 修复了即使没有实际挂起也可能显示以下消息的问题:“模拟器:错误:检测到挂起的线程“Qt 事件循环”。15000 毫秒内无响应”。

如果您仍然遇到挂起或其他不稳定情况,请提交问题

27.1.7(2018 年 2 月)

  • 无边框模拟器窗口

    默认情况下,带有设备皮肤文件的模拟器现在将显示为无周围窗口边框。要显示周围的窗口边框,请在扩展控件窗口的“设置”窗格中启用**显示设备周围的窗口边框**。

  • 快速启动改进,使使用 AVD 快照更高效

    • 您可以使用扩展控件对话框的“设置”窗格中的**立即保存**按钮随时保存 AVD 快照。
    • 在许多情况下,模拟器通过仅保存当前状态与先前保存的快照之间的差异来减少保存快照所需的时间。

    有关详细信息,请参阅快速启动文档。

  • 模拟器已更新为使用 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 渲染器的详细信息,请参阅扩展控件的**设置 > 高级**部分。

  • 修复

    • 修复了除非切换关闭并打开**启用剪贴板共享**选项,否则剪贴板共享无法工作的问题。
    • 修复了在使用 Swiftshader 渲染后端和低分辨率 AVD 时发生的挂起问题。

27.0.5(2018 年 1 月)

  • 现在默认情况下禁用 Windows 上的 ANGLE 渲染。

    如果 ANGLE 对您来说效果更好,您可以使用命令行标志-gpu angle_indirect重新启用它。或者,打开扩展控件窗口,导航到**设置 > 高级**,然后为 OpenGL ES 渲染器设置选择**ANGLE D3D11**。

  • 修复了 Shift+B 未键入大写 B 字符的问题。

27.0.2(2017 年 12 月)

  • 新的快速启动功能基于 AVD 实例的快照,提供更快的模拟器启动时间。

    所有 AVD 均默认启用快速启动。虽然您第一次启动 AVD 时必须执行冷启动(就像打开设备一样),但所有后续启动都很快,并且系统将恢复到您关闭模拟器时的状态(类似于唤醒设备)。

    如果要控制模拟器保存快照的时间,请打开模拟器的扩展控件窗口并点击**设置**。在这里,您可以为**退出时保存快速启动状态**选择以下设置之一

    • **是**:关闭模拟器时始终保存快速启动快照。这是默认设置。
    • **否**:从不保存快速启动快照;始终执行冷启动。
    • **询问**:关闭模拟器时提示是否保存快速启动快照。

    您的选择仅适用于当前打开的 AVD。

    有关更多信息,请参阅快速启动文档

  • 添加了对 Mac OpenGL ES 3 的支持(适用于使用 API 级别 24 及更高版本、Google API 和 x86 ABI 的系统映像)。

  • 为了提高 OpenGL ES 2+ 应用的稳定性,模拟器现在将使用 OpenGL 核心配置文件(如果可用)。

  • 使用 Swiftshader/ANGLE 进行渲染的新选项

    • -gpu swiftshader_indirect:Swiftshader 的更快、更稳定的变体,可与快速启动配合使用。
    • -gpu angle_indirect(仅限 Windows):ANGLE D3D 的更稳定变体,也可与快速启动配合使用。

    旧的-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 管理器),并包括以下更新
    • 改进的内存使用情况。HAXM 固定使用的内存峰值工作集不再等于 AVD RAM 的大小;而是根据需要将内存分页到内存中。这应该有助于模拟器在 RAM 量较少的机器上更可靠地运行。
    • 使用 HAXM 6.2.0 的模拟器现在可以在 macOS 上更快地启动,跳过漫长的初始化阶段。
  • GPU 配置改进
    • 通过回退到使用 Swiftshader 的主机端软件渲染,修复了在执行来宾端软件渲染时启动时出现黑屏的问题。具有 Google API 的 API 级别 19-25 的最新修订版系统映像应该具有可用的来宾端渲染。
    • 修复了由于检测到旧的英特尔 GPU 而将模拟器切换到软件渲染器,但模拟器实际上在独立 GPU 上运行的问题。将哪些 GPU 切换为使用 ANGLE 或 Swiftshader 渲染的确定方式如下
      • 旧的英特尔 iGPU 在 OpenGL 和 ANGLE D3D 驱动程序上都存在驱动程序问题。使用英特尔 HD 显卡 3xxx 及更旧版本的用户的将使用 Swiftshader。
      • 一些用户报告无法使用 API 级别 25 映像,因为存在“Pixel 启动器持续停止”的错误。这似乎是某些英特尔 HD 4xxx 型号中的驱动程序问题。因此,它们将自动切换为使用 ANGLE。
    • 为了获得最佳的 GPU 模拟效果,我们建议使用独立的 NVIDIA 或 AMD GPU,或使用更新的英特尔 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 改进
    • 模拟器现在完全兼容 macOS 10.13 High Sierra,可以通过 Hypervisor.Framework 或 HAXM 6.2.0 使用。
    • 现在在 macOS 上为 32 位 x86 映像默认启用 Hypervisor.framework 以提高性能和 macOS 兼容性。如果您遇到与之相关的特定问题,请提交错误报告并在~/.android/advancedFeatures.ini中附加HVF = off(如果该文件不存在,请创建它)。
    • 修复了使用 Hypervisor.framework 时无互联网/无法附加调试器的问题。
    • 为了增强网络摄像头捕获的兼容性和性能,已将基于 QTKit 的摄像头捕获替换为基于 AVFoundation 的缓冲捕获。
  • 添加了对某些系统映像(目前仅限 API 级别 25)中 Wi-Fi 的支持。名为“AndroidWifi”的访问点可用,并且 Android 会自动连接到它。可以通过使用命令行参数-feature -Wifi运行模拟器来禁用 Wi-Fi 支持。
  • 一些用户表示担心固定大小的 Play 商店系统映像存储空间不足。因此,我们已将默认大小增加到 2 GB(从 800 MB 增加)。
  • 添加了一个键盘快捷键(Ctrl+Shift+U),可以直接从设置页面打开错误报告 UI 页面。
  • 修复了如果使用具有英特尔 x86 EPT 但没有 UG 的旧 CPU,并且配置了多个内核,则模拟器将无法启动的问题。
  • 修复了如果模拟器本身在 Xen 虚拟机管理程序中运行,则 HyperV 将被错误检测的问题。
  • 修复了模拟器在某些 Linux 配置中启动时崩溃的问题。

26.1.2(2017 年 7 月)

此版本包含新功能和性能改进。

  • 添加了在扩展控件中定义自定义 HTTP 代理配置的功能(点击**更多**,然后点击**设置**和**代理**)。默认情况下,模拟器使用 Android Studio HTTP 代理设置,但此屏幕允许您定义手动代理配置。

  • 添加了对来宾模式 GPU 的 VNC 支持,以便可以远程查看和控制模拟器。例如,您可以启动模拟器并让 VNC 侦听端口 5901,如下所示

    1. 执行:emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
    2. 打开 VNC 查看器(例如 tightvnc 查看器)以连接到端口 5901。

      • 要使用 Mac 的内置屏幕共享客户端,启动模拟器时需要 VNC 密码。要设置密码,请使用以下命令

        emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio

        然后在控制台中输入change vnc password,并输入密码。

    Android O 当前不支持 VNC 模式。

  • 在扩展控件的帮助屏幕中添加了**提交 Bug** 按钮(点击**更多** ,然后点击**帮助**和**模拟器帮助**)。点击**提交 Bug** 会打开一个对话框,您可以在其中查看 Bug 报告详细信息,例如屏幕截图、AVD 配置信息和 Bug 报告日志。然后,您可以为自己保存报告或报告模拟器问题

  • 向模拟器和虚拟传感器面板添加了陀螺仪传感器。这需要具有陀螺仪支持的系统映像才能工作(目前为 API 级别 24 和 25)。

  • 在 Windows 上将主机首选 DNS 添加到 Qemu DNS 列表中,当主机上的多个虚拟网络接口引入多个对模拟器不起作用的 DNS 地址时。

  • 通过服务器标志添加了对 macOS 10.10+ 上 32 位 x86 映像的实验性 macOS Hypervisor.Framework 支持,这应该可以提高启动时间和性能。

    • 如果您遇到问题,请在~/.android/advancedFeatures.ini中添加一行HVF = off
  • 现在为支持 OpenGL ES 3 的系统映像和主机 GPU 默认启用 OpenGL ES 3.x。目前,只有 Android O(API 级别 26)和 Windows/Linux 主机支持 OpenGL ES 3。

    • 如果您遇到 OpenGL ES 3 问题,请在~/.android/advancedFeatures.ini中添加一行GLESDynamicVersion = off
  • 模拟器现在使用离屏 OpenGL FBO 进行所有渲染,除了最终显示图像发布,这应该有助于解决跨平台的颜色一致性问题。

  • 在收集有关模拟器突然变慢问题的數據后,我们发现问题可能与旧版英特尔 OpenGL 驱动程序和 Windows 更新之间的某些交互有关。因此,使用英特尔 HD 4000、3000、2000(以及相关 GPU)的用户现在默认将渲染设置为 D3D 渲染器(ANGLE)或 Swiftshader(软件渲染器)。

26.0.0(2017 年 3 月)

此版本与 API 级别 26 兼容。它还包含许多性能改进和错误修复。

次要修订版本 26.0.3(2017 年 5 月)

  • 添加了可在线更新的功能标志,以便快速解决由有问题的硬件配置引起的问题。这允许 Google 通过更新服务器端标志来推出依赖于用户配置的修复程序和功能。如果您注意到特定硬件存在问题,请报告 Bug,以便我们调查问题。
  • 对 Android Wear API 级别 25 系统映像的新旋转输入支持。要在 Wear 设备上模拟旋转输入旋钮,请点击扩展窗口上的**旋转输入**选项卡。
  • 崩溃报告对话框现在可调整大小,并且在没有输入的情况下不会将**何时发送崩溃报告**重置为**询问**。
  • 为了防止模拟器在 2 GB 虚拟地址空间中耗尽空间,32 位模拟器现在要求最大 AVD RAM 大小小于或等于 512 MB。
  • 添加了对模拟器映像中绝对路径的支持。
  • 在扩展窗口中添加了一个新的选项卡,用于显示 Google Play 商店映像的 Play 服务版本以及一个用于检查 Play 服务更新的按钮。
  • 在模拟器设置页面添加了一个下拉菜单以选择 OpenGL 渲染器。如果您在 Windows 机器上遇到 OpenGL 驱动程序问题,请尝试使用 ANGLE (D3D11) 或 ANGLE (D3D9) 选项(需要重新启动)。如果您在非 Windows 机器上遇到 OpenGL 驱动程序问题,请尝试使用 Swiftshader 软件渲染器(需要重新启动)。
  • 修复了模拟器在收到exitminimize命令时退出时发生的罕见崩溃。
  • 修复了在 Mac 机器上更改显示器时出现的缩放问题。(问题 268296
  • 修复了模拟器在主机计算机从睡眠状态恢复或模拟器运行时间过长后占用 300% CPU 并保持该状态的问题。
  • 修复了模拟器关闭时发生的崩溃。

使用 HAXM v6.1.1 更新(2017 年 3 月)

**注意:**HAXM v6.1.1 可供 Mac 用户通过SDK 管理器(截至 3 月 30 日)获取,并且很快将可供 Windows 用户使用。

Android 模拟器版本 26.0.0 支持 HAXM v6.1.1,其中包括以下更新

  • 启用性能监控单元 (PMU) 模拟。(问题 223377
  • 修复了与 Mac 上的 VirtualBox 和 Docker 的共存问题。(问题 197915
  • 修改了安装程序在无法检测到 Windows 上的 Intel VT-x 时显示的安装错误消息,通常是因为启用了 Hyper-V。
  • 添加了对在基于 Hyper-V 的 Windows VM 中加速 Android 模拟器的支持。此更新要求主机 Hyper-V 实例(管理 Windows VM/来宾的实例)使用最新版本的 Hyper-V 并启用嵌套虚拟化。必须在来宾 Hyper-V 实例(Windows VM)中禁用Hyper-V。

依赖项

  • Android SDK Platform-Tools 版本 25.0.4 或更高版本。
  • Android SDK Tools 版本 26.0.0 或更高版本。

新功能和错误修复

  • 与 API 级别 26 兼容。
  • 完全符合 GLES 2.0。如果主机 GPU 具有符合标准的桌面 OpenGL 驱动程序,则模拟器现在通过了 Android CTS dEQP-GLES2 的 100%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 Tools 分开发布。此版本包含各种性能改进、新功能和错误修复。

次要修订版本 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 操作系统之间主要通信通道)现在速度提高了一个数量级,具有更低的延迟并提供更好的多线程性能。这导致模拟器出现许多性能改进,包括
    • 改进的 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 交互现在更快、更流畅,包括旋转、窗口调整大小以及扩展控件窗口的加载和关闭。