Tuesday, September 3, 2019

Emulator 29.1.12 Stable

Emulator 29.1.12 is now available in all channels. Changes versus previous stable, 29.0.11:

Major features:
  • Support for Multi-Display
  • Remote streaming emulators (manually hosted) are now possible via WebRTC. We now also provide Android Emulator Container Scripts to facilitate setup. We would very much welcome feedback on this aspect and running emulators in containers in general.
  • We've also rolled out the ability to test Android apps for cars with Android Automotive system images.
  • Vulkan apps are now available by default on Android API 29 and later images.
Notable fixes and quality improvements:
  • Fixed issue where recent Q / Android 29 system images did not boot up.
  • Fixed an issue that could lead to INSTALL_FAILED_DEXOPT on older API levels when installing APKs.
  • Vulkan is now fully conformant for Vulkan 1.1 for API 29+ (requires a future API 29 system image update).
  • Fixed issue in recent Q images where fold/unfold button didn't work (contents did not resize).
  • Improved non-US keyboard support. Previously the emulator would only pass a narrow range of keycodes to the guest, corresponding to a US QWERTY keyboard. This made it difficult to use the emulator with non-US keyboards.
    • To address this, we now pass through all native keycodes from the user's machine and translate them to the relevant Linux keycode.
  • Added a command line option to name a particular run of the emulator with an ID. In the CI use case, this can make it easier to distinguish emulators and find out which one has been running on which ADB port, even when running multiple instances of the same AVD (via -read-only). Usage:
    • emulator -avd <avd-name> -id <id> [other-args]
    • Retrieve the ID via adb -s <device-serial> emu avd id
  • Added -logcat-output command line option to print logcat to a file if the -logcat option is specified. Example:
    • emulator -avd <avd-name> -logcat V:* # Output to stdout
    • emulator -avd <avd-name> -logcat V:* -logcat-output /tmp/log.txt # Output to file
  • Added command line flags to change the language, country, and/or locale of the emulator. Upon specifying these flags, the emulator will cold boot a few times to apply the change. This does not yet work for Play Store images due the current need to run superuser commands. Example:
    • emulator -avd <avd-name> -change-language es
    • emulator -avd <avd-name> -change-language fr -change-country CA -change-locale fr-CA
  • (Currently Linux emulator only) Added -cpu-features whitelist command line flag to enable certain sets of CPU features if the host supports them. Currently, the whitelist only enables AES.
  • Fixed VM heap size calculations.
  • Fixed an issue on macOS where Ctrl-C would not kill emulators launched from the command line.
  • Fixed an issue on macOS where SIGTERM was being ignored (and kill <emu-pid> would not gracefully exit the emulator).
  • Fixed an issue where numbers entered via numpad entry would not be recognized on the emulator. https://issuetracker.google.com/issues/135141621
  • Fixed crash when opening the Performance Stats window twice.
  • Fixed a Unicode path handling issue on Windows where the -kernel command line option did not work with paths that contained non-ASCII characters.
  • Increased accuracy of YUV conversion.
    • Added NV21 to the set of potential YUV formats converted via OpenGL.
    • Unified the set of YUV formats used for camera versus media buffers. This requires a future Q system image update.
  • Improved performance of OpenGL and Vulkan graphics.
  • For better debuggability of OpenGL issues, we now make it easier to log GL calls from the guest. The following environment variables control whether or not each GL call is logged:
    • ANDROID_EMUGL_FINE_LOG=1 whether to log individual GL calls
    • ANDROID_EMUGL_LOG_PRINT=1 whether to instead print out the current GL debug log versus saving it to disk (the default)
  • To address issues with super slowness on some macOS machines:
    • macOS systems with fewer than 8 logical cores will have file-backed RAM snapshots and SMP disabled by default.
    • macOS systems with spinning hard disks will have file-backed RAM snapshots disabled by default.
  • Performance metrics are now sent only once instead of every 10 seconds.
  • Added -rtcfps flag to set max fps of WebRTC streaming.
  • MoltenVK prebuilt has been updated and is the default Vulkan library on macOS.
  • Fixed memory use after free error in automation agent. Details
  • Fixed bug where GL_BGRA_EXT could not be used as an internal format for 3D textures.
  • Disabled SMS send button for Automotive system images.
    • Snapshots are enabled for Automotive system images.