模拟器发行说明

Android 模拟器 包含在 Android Studio 中。

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

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

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

要查看 25.3.0 之前的模拟器版本的版本说明,请参阅 Android SDK 工具版本说明

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

35.1.20 (2024 年 8 月 29 日)

  • 添加了 Pixel 8a AVD
  • 针对可折叠设备的各种错误修复
  • Qt 更新以及对 Qt 相关崩溃和挂起问题的修复
  • [错误修复] 修复了在使用 Vulkan 的应用程序中 Windows 上发生的崩溃和冻结问题

34.2.16 (2024 年 7 月 9 日)

  • [错误修复] Pixel Fold 在折叠/展开过程中发生的 UI 冻结问题
  • [错误修复] 在 Mac M1 上将 Android 版本错误显示为 Android Vanilla Ice Cream Preview 而不是 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 地图 API 更新,这些更新用于模拟器扩展控件中的位置功能,将于 5 月底推出。
  • 高影响崩溃修复
  • 对 Pixel AVD 的各种修复
  • 更新用于软件渲染的图形库
  • [错误修复]问题 225541819 启动 Chrome 在 x86_64 上会使模拟器崩溃
  • [错误修复]问题 314614435 -http-proxy 开关解析错误

34.1.20 (2024 年 4 月 1 日)

使用 Android Studio Iguana 稳定版测试。

34.1.19 (2024 年 3 月 7 日)

使用 Android Studio Iguana 稳定版测试。

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

34.1.18 (2024 年 2 月 29 日)

使用 Android Studio Iguana 稳定版测试。

  • 已向模拟器添加设备,包括
    • Pixel Fold
    • Pixel Tablet
    • 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 Tablet 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 启动 Chrome 在 x86_64 上会使模拟器崩溃
  • [错误修复] 问题 #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: 导致 UI 行为问题的 AVD 粘性触摸错误
  • [错误修复] 在 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 修复
  • [错误修复] Google 帐户身份验证失败,GmsCore v21.42.18

31.2.10 (2022 年 4 月 20 日)

使用 Android Studio Dolphin Canary 8 和 Chipmunk RC 1 测试。

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

  • 添加实用程序,使用回退加载 Vulkan 函数
  • [错误修复] 修复 gcc8 构建错误

31.2.9 (2022 年 3 月 23 日)

使用 Android Studio Dolphin Canary 7 测试。

此更新包括以下修复

  • [错误修复] 在 M1 上保存快照时忽略内存压力

31.2.8 (2022 年 2 月 7 日)

使用 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 测试。

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

  • [错误修复] 无法登录应用
  • [错误修复] 问题 #215368358: Intel 平台上的“adb reboot”将使 avd 崩溃,并显示“vcpu 关闭请求”

31.2.7 (2022 年 2 月 1 日)

使用 Android Studio Bumblebee Patch 1 和 Chipmunk Canary 6 测试。

此更新包括以下修复

  • [错误修复] M1 机器上模拟器挂起错误。

31.2.6 (2022 年 1 月 20 日)

使用 Android Studio Arctic Fox、Bumblebee Beta 4 和 Chipmunk Canary 6 测试。

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

  • 已向 Wear OS 模拟器添加了穿戴设备按钮。
  • 使 VHAL 选项卡中的所有车辆属性可编辑。
  • [错误修复] Google 帐户身份验证失败,GmsCore v21.42.18。
  • [错误修复] Netshaper 与 VirtioWifi 配合使用效果不佳。
  • [错误修复] 事件鼠标控制台命令无法正常工作。
  • 为本地 AVD 创建添加了 KVM 检查。

31.1.3 (2022 年 1 月 18 日)

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

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

30.9.5 (2021 年 12 月 15 日)

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

  • 添加了轻松调整大小以适应桌面或平板电脑尺寸窗口的功能。
  • 添加了对来自兼容主机设备的多点触控输入的支持。
  • VirtioWifi:添加了对点击网络的支持。
  • 为可穿戴系统映像启用了旋转输入。
  • 修复了 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 在较新的系统映像上默认启用。
  • 为可穿戴模拟器添加了对心率传感器的支持。
  • 删除了 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 主机渲染),但也可以通过用兼容的宿主 GPU libEGL/libGLESv2 库替换 lib64/gles_swiftshader,然后使用 -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 的堆栈运行所有图形。

其他新功能和增强功能

  • 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 上,SSE 4.1 和 4.2 现在可以在 Android 访客内部使用。
  • 在 macOS 上,INVTSC 现在默认启用。这可以提高访客对时间测量的精度。
  • 我们现在在指标中跟踪用户选择的扩展控制面板。
  • Linux 模拟器现在在访客内核版本 >= 5.4(R 系统映像或更高版本)时使用 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 启动模拟器来激活该标志,或者通过将 NoDeviceFrame = on 添加到 ~/.android/advancedFeatures.ini 来锁定它(如果该文件不存在,请创建它)。

  • 在蜂窝页面中添加了一个下拉项,用于打开和关闭 meterdness 支持,对于不支持 5G meterdness 切换的旧系统映像,这是一个无操作操作。

    • 还添加了用于相同目的的控制台命令: 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.* prop)。
  • 在 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 上可能无法编译着色器的问题。
  • 我们现在会让模拟器崩溃,如果基本帧缓冲区 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 渲染器副本,因此我们现在还会自动将使用该渲染器的用户切换到 d3d11 ANGLE(如果它在 UI 偏好设置中被选中)。
  • 已在 Windows 上的 WGL 初始化中添加了更多调试信息,以便跟踪失败。
  • hw.gltransport=virtio-gpu-pipe 时,通过在从主机到访客的传输中不在主机上自旋,可以提高性能。
  • 添加了有关 OpenGLES 模拟无法初始化时的更多调试日志记录。
  • 修复了 YouTube 视频在加载快照时闪烁或不显示的问题。
  • 由于发现 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 系统映像

您现在可以创建一个运行 Android 11 的 AVD,方法是选择两个可用的 API 级别 30 系统映像之一

  • 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 数据包的处理,直到客机完成引导(从冷启动开始)。此选项有助于解决在使用模拟器在重启模拟器并同时使用 DDMS 的 CI 环境中可能出现的问题。
  • 修复了加载快照时发生的错误,其中 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 使用率。
  • 恢复了对 mainline 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 实例的可能性。
  • 对于即将推出的系统镜像,模拟器现在支持硬件合成器 2.0。此更改应降低运行大多数动画时的驱动程序开销。
  • 模拟器构建现在基于 CMake/Ninja。
  • 在模拟器扩展控制 UI 中,已恢复键盘快捷键表中的分隔线。
  • 用户现在可以选择加入,以每 10 秒的时间间隔为我们的团队提供 CPU 和 RAM 使用情况指标。我们使用这些指标来丰富我们关于模拟器资源使用情况的数据,其中包含来自用户的不同用例,这使我们能够使模拟器更加高效和响应。

Project Marble 一般修复

此更新还包含 Project Marble 计划中的一般修复

  • 修复了使用 Android Q 系统镜像时,在具有 Intel GPU 的系统上显示的抖动和不正确帧问题。
  • 修复了使用 Android Q 系统镜像和 Pixel 2 XL 皮肤(或任何具有凹口或圆角的皮肤)时显示黑屏的问题。
  • 修复了 -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 年及以后的多数 Intel、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 进行零复制互操作。模拟器利用此功能,提供了一种完整的渲染 Android UI 的方法,该方法使用 Skia Vulkan API。

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

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 是一个适用于 HTTP 的通用 RPC 框架。

默认情况下,模拟器 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 上的抖动和错误的帧显示问题。
  • 修复了使用带有 Pixel 2 XL 皮肤的 Android Q 系统映像时出现黑屏的问题。
  • 现在使用最新的 BIOS 二进制文件启动模拟器。此更改有助于减少在 Windows 上启动模拟器时有时发生的“vCPU 关闭请求”错误。
  • 反向移植了对 “从快照恢复 Android Q 系统映像时显示错误”问题 的修复。
  • 由于平台工具 28.0.2 中 ADB 的不兼容更改,用户遇到了 “未经授权”模拟器问题。您现在可以安全地将来自平台工具 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 Store 映像中的自动应用更新

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

在空闲状态下:热词检测

当在主屏幕上并且没有任何应用程序处于前台时,可能会出现大量的 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 设备状态的问题。
  • 修复了 Windows 上导致模拟器在禁用 CPU 加速时启动系统映像时崩溃的问题。
  • 修复了模拟器显示像素化问题。现在降采样应该可以正常工作了。
  • 修复了 macOS 10.14+ 上虚拟场景摄像机鼠标观察控件可能由于与新的辅助功能安全设置交互而变得过于敏感的问题。
  • 修复了时区计算中的错误,该错误会导致模拟器时钟偶尔发生变化。
  • 修复了各种 cocos2d 和虚幻引擎应用程序中的渲染错误。
  • 在模拟器中添加了对 Wi-Fi 对等 的支持。如果使用最新的 Pie Play Store 映像,两个模拟器现在可以通过 Wi-Fi 直接相互通信。要使用 Wi-Fi 对等,请使用相同的 -wifi-server-port-wifi-client-port 参数启动两个 AVD
    • 模拟器 @<server-avd-name> -wifi-server-port 9999
    • 模拟器 @<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 寄存器的访问。
  • 磁盘映像:添加了映像锁定,默认情况下启用。多个 QEMU 进程无法写入同一映像,只要主机支持 OFD 或 posix 锁定,除非另行指定选项。
  • qemu-img: qemu-img resize 支持对映像新部分进行预分配。
  • QCOW2 缩减现在在 qemuqemu-img 中得到支持。

无障碍性

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

图形

  • 修复了 OpenGL ES 顶点数组指针可能发生的越界内存访问问题。
  • 一些旧的 GPU 不支持 OpenGL 2.1 或更高版本(这是必需的),或者存在其他可靠性问题。这些问题会导致模拟器在启动时崩溃、冻结或在默认 GPU 设置下无法使用。模拟器现在会自动切换到 Swiftshader 渲染器,如果它检测到这些 GPU 正在使用。
  • 修复了在 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 上运行的 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 平台的错误消息

一些用户在激活 WHPX 模拟器时难以诊断 Windows Hypervisor 平台 (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 更新和 Emulator 27.3 及更高版本,快照会按需将内容加载到 RAM 中,而不是在虚拟设备启动时加载整个快照。此更改应该大大减少加载快照所需的时间。

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

27.2.9(2018 年 5 月)

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

屏幕录制

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

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

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

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

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

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

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

屏幕截图

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

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

屏幕截图以 PNG 格式保存。

虚拟场景相机和 ARCore

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

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

Pixel 设备映像上的 Google Play 商店

Google Play 商店现在已为 Pixel 和 Pixel 2 设备映像启用。这在 Android Studio 3.2 及更高版本中的AVD 管理器中用 Google Play 徽标在“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 [号码],这允许设置完整的电话号码。

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

修复

  • Android 模拟器的 Linux 版本现在使用现代 Clang C++ 工具链构建。此更改修复了模拟器因 libGL 和 libstdc++ 错误而无法启动的问题。
  • 修复了导致崩溃和挂起的一些原因。
  • 为了避免因可用磁盘空间不足而导致的崩溃和挂起,模拟器现在会在启动时检查是否有足够的可用磁盘空间,并且除非至少有 2 GB 可用,否则不会启动。
  • 修复了阻止某些 Unity 游戏渲染的问题。
  • 修复了导致模拟器无法连接到网络的 DNS 问题。
  • 修复了通过虚拟设备配置对话框分配给 AVD 的内部存储的更改无法正常工作的问题。
  • 修复了创建了许多 adb 进程但未正确关闭的问题。
  • 修复了导致旋转按钮和 UI 的其他部分失去响应的问题,除非扩展控件窗口处于打开状态。
  • 修复了导致从主机复制和粘贴无法正常工作的问题,除非至少打开一次扩展控件对话框。
  • 无边框模拟器的调整大小矩形已更新,以更好地遵循模拟器的视觉主题。
  • 当飞行模式开启时,电话和短信将被正确停用。
  • 修复了加载快照后导致短信和蜂窝功能被禁用的问题。
  • 您将不再收到错误的警告消息,提示“无法打开... \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)来解决。 API 级别 19 - 25 的最新系统映像(包含 Google API)应该具有正常工作的来宾端渲染。
    • 修复了一个问题,该问题会导致模拟器因检测到旧的英特尔 GPU 而切换到软件渲染器,但实际上模拟器是在独立 GPU 上运行。 以下确定哪些 GPU 将被切换为使用 ANGLE 或 Swiftshader 渲染:
      • 旧的英特尔 iGPU 在 OpenGL 和 ANGLE D3D 驱动程序上都存在驱动程序问题。 使用 Intel HD Graphics 3xxx 及更早版本的用户将使用 Swiftshader。
      • 一些用户报告无法使用 API 级别 25 的映像,因为存在一个 bug,导致“Pixel Launcher 持续停止”。 似乎某些 Intel HD 4xxx 型号存在驱动程序问题。 因此,它们将被自动切换为使用 ANGLE。
    • 为了获得最佳的 GPU 模拟结果,我们建议使用独立的 NVIDIA 或 AMD GPU,或使用更新的英特尔 GPU(Iris、HD 5xxx、HD 5xx/6xx)。
    • 修复了一个问题,该问题会导致模拟器无法启动(OpenGL 模拟初始化失败),前提是 AVD 配置了 hw.gpu.mode=host,并且模拟器是在远程桌面客户端中启动的。
    • 阐明了“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 实现。
    • Hypervisor.framework 现在在 macOS 上默认启用,用于 32 位 x86 映像,以提高性能和 macOS 兼容性。 如果您遇到与它有关的特定问题,请提交 bug 报告并添加 HVF = off~/.android/advancedFeatures.ini(如果该文件不存在,请创建它)。
    • 修复了使用 Hypervisor.framework 时没有互联网 / 无法附加调试器的问题。
    • 为了增强网络摄像头捕获的兼容性和性能,基于 QTKit 的网络摄像头捕获已替换为基于 AVFoundation 的缓冲式捕获。
  • 在某些系统映像中添加了对 Wi-Fi 的支持(目前仅支持 API 级别 25)。 现在提供了一个名为“AndroidWifi”的接入点,Android 会自动连接到它。 可以通过使用以下命令行参数运行模拟器来禁用 Wi-Fi 支持:-feature -Wifi
  • 一些用户提出了担忧,固定大小的 Play 商店系统映像没有足够的存储空间。 因此,我们已将默认大小增加到 2 GB(从 800 MB 增加)。
  • 添加了一个键盘快捷键 (Ctrl+Shift+U),用于直接从设置页面打开 bug 报告 UI 页面。
  • 修复了一个问题,该问题会导致模拟器无法启动,前提是使用了一个较旧的 CPU,该 CPU 具有 Intel x86 EPT 但没有 UG,并且配置了多个核心。
  • 修复了一个问题,该问题会导致在模拟器本身运行在 Xen hypervisor 中时错误地检测到 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 地址时。

  • 通过服务器标志,添加了对 32 位 x86 映像在 macOS 10.10+ 上的实验性 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 FBO 来执行所有渲染,除了最终显示图像发布,这将有助于跨平台解决颜色一致性问题。

  • 在收集有关模拟器突然变慢的问题的数据后,我们已经确定问题可能与某些旧的英特尔 OpenGL 驱动程序与 Windows 更新之间的交互有关。 因此,使用 Intel 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 设备上的旋转输入旋钮,请单击扩展窗口上的 **旋转输入** 选项卡。
  • 崩溃报告对话框现在可调整大小,并且不再在没有输入的情况下将 **何时发送崩溃报告** 重置为 **询问**。
  • 32 位模拟器现在要求最大 AVD RAM 大小小于或等于 512 MB,以防止模拟器在 2 GB 虚拟地址空间中耗尽空间。
  • 添加了对模拟器映像中绝对路径的支持。
  • 在扩展窗口中添加了一个新选项卡,用于 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 平台工具版本 25.0.4 或更高版本。
  • Android SDK 工具版本 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 平台工具版本 24 或更高版本。
  • Android SDK 工具版本 25.3.0。

新功能和错误修复

  • 将模拟引擎更新为 QEMU 2.7,包括所有最近的错误修复、改进的性能和新功能。
  • 新增 IPv6 支持。
  • 模拟器现在使用 SwiftShader 作为主机上的纯软件渲染器。
  • Android 管道性能改进:Android 管道是模拟器和 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 交互现在更快、更流畅,包括旋转、窗口调整大小以及扩展控件窗口的加载和关闭。