[go: nahoru, domu]

Release updates archive

Revision 8 of Android 10 (formerly Android Q) x86_64 Google Play and Google APIs System Images are now available in all channels. The Google Play image now passes all Android 10 CTS/GTS tests (including Vulkan CTS, on supported/conformant GPUs).

Note: x86 32-bit images were released last Friday.

Revision 8 of Android 10 (formerly Android Q) x86 Google Play and Google APIs System Images are now available in all channels. The Google Play image now passes all Android 10 CTS/GTS tests (including Vulkan CTS, on supported/conformant GPUs).

Emulator 29.2.2 is now available in the Canary and Dev channels. This release is primarily about making the Google Maps UI available on Windows, and shipping fixes to both the Google Maps UI and Multi Display UI. Changes:
  • Google Maps UI is now available on Windows. The Windows emulator is now built with the MSVC toolchain. This is a big change; please let us know any issues running the emulator on Windows.
    • Google Maps UI: Fixed bugs and improved UX:
    • Fixed hang when switching back and forth between Points and Routes tab.
    • There should be fewer warning messages from Qt.
    • Tweaked colors, font, and letter spacing.
    • After playing back a saved route, the same saved route should still be selected and the map now re-shows the route creator with the same route. When playing an unsaved route, once stopped, the unsaved route shows up again with the option to save the route.
    • Fixed issue where usage metrics were not being sent.
    • The user can now delete multiple saved points/routes at once with multiple selection.
    • Improved styling of route playback panel.
    • Directions and markers should now persist when playing back a route.
    • If the Maps UI is disabled, the location agent now also properly disables itself so that the location is not always continuously being updated from the (disabled) Maps UI.
    • Clicking "Set Location" now clears the search box and selected point in the list.
    • Deleting a saved point now also clears the search box and map marker.
    • Zoom control is now no longer hidden by the lower Maps panel.
    • Improved styling of the popup menu.
    • Fixed issue where the selected status of routes in the routes list did not properly update on playing/stopping route playback.
    • Fixed issue with intermediate route waypoints not being displayed.
    • GPX/KML import and playback should now work again.
  • Multi Display UI: Fixed bugs and improved UX:
    • Ctrl-Shift-M can now be used to bring up the Multi Display UI.
    • Fixed issues with emulator window size not updating.
    • Tweaked button sizes, colors, font size of titles, and positions of icons.
    • Fixed issue where usage metrics were not sent.

Android P x86 system images (Google Play, Google APIs) with ARM to x86 binary translation are  now available in the Canary channel, as rev 10 of Google APIs and rev 9 of Google Play.

x86 system images with translation versus ARM system images

Previously, Android app developers who needed to develop/test Android apps that used native ARM libraries could not use the x86-based emulator system images, and were forced to use system images with full ARM emulation, which are over 10x slower than the x86-based system images. Or, developers were forced to build or hunt down the x86 version in parallel. This is one of the top reasons app developers still resort to physical devices.

To address this, we've released P x86 system images that can also run apps with ARM native code. This leverages Google's ARM to x86 translation technology, which enables running native ARM apps at a much higher speed than with the actual ARM system images. App developers can then much more easily use the emulator to develop/test apps that are natively ARM or have native ARM dependencies. Note that the ARM to x86 translation technology enables the execution of intellectual property owned by Arm Limited. It will only be available on Google APIs and Play Store system images, and can only be used for application development and debug on x86 desktop, laptop, customer on-premise servers, and customer-procured cloud-based environments.

Why is x86 system with ARM to x86 translation faster?
The x86-based system images are fast due to leveraging CPU virtualization technologies such as HAXM and KVM, while the ARM system images are much slower due to having to emulate the entire stack, especially any system code and anything related to the memory management unit (MMU), which made basic memory read/write instructions very, very slow.

On the other hand, with an x86 system along with Google's ARM to x86 translation technology, we avoid the much more expensive system and MMU emulation, while only translating user-level code. This is a big win, as it allows memory accesses to proceed at near the original speed as if it were on x86, with the overhead confined to the bits related to instruction translation itself (and thus only being significant for CPU-bound apps (most apps being memory bandwidth or I/O bound)).

Known issues
  • Setting breakpoints in an ARM native library running in the translation environment is not supported. This is because the code that actually ends up running will be x86 code that is hard to map to the original ARM code in LLDB.
  • Since this is a technology that is getting new exposure and use cases, some app functionality may not work as expected. Please let us know of any issues through Issuetracker.
  • ARM64 is not yet supported.
  • This replaces any existing Android P x86 Google APIs / Google Play system image installation.

Emulator 29.2.1 is now available in all channels. Changes versus previous stable, 29.2.0:
  • Fixed crash on startup on Linux Wayland systems. This was because XkbGetKeyboard was used to query the host system's keyboard state. It seems usage of XkbGetKeyboard is not advisable on Linux and perhaps in general: https://github.com/glfw/glfw/issues/389
  • Big thanks to the /r/androiddev community for getting back to us quickly on this with getting stack traces and verifying the fix!
  • Fixed issue where keyboards with different letter mappings than QWERTY (AZERTY, QWERTZ, etc.) would end up typing the original QWERTY-mapped key. The previous unexpected behavior is actually due to a new input system where the emulator only sends raw keycodes to the guest OS; by also changing the Android guest's keyboard type to a different keyboard type, more keyboard types can be tested.
    • Keycode forwarding can still be used, but we need to ensure the Android guest is aware of the host keyboard type. We now require turning that on manually via -feature KeycodeForwarding.
    • A future system image update will automatically apply KeycodeForwarding-related guest side updates so the keyboard types on host and guest always match.
    • On Linux with non-US keyboards, we also found an issue where keycodes were not sent unless keycode forwarding was used. In this case, for now, please change the Android guest's keyboard type to the same keyboard type that you're using.
  • Updated metrics for Multi-Display UI.
  • Linux emulator now statically links libunwind.

Emulator 29.2.1 is now available in the Canary channel. Changes:

Google Maps UI

Previously, it can be hard to work with virtual location settings because of the high barrier of entering lat/lon points manually and finding or generating GPX/KML files. Now, Extended Controls > Location includes an integrated Google Maps view, along with a point selector and route generator.

Individual points can be saved and re-sent to the device as the virtual location, while routes can be generated through typing in addresses or clicking two points. Each route can be replayed; locations along the route are sent in real time (or faster, according to a speed multiplier) to the guest OS. At the same time, GPX/KML can still be imported. Other notes:
  • Known issue: Not yet available on Windows. Further work needs to happen to stabilize the Windows build needed for Google Maps UI on Windows.
  • Known issue: Only available in Canary channel even if 29.2.1 is released to stable. This is so we have more time to get feedback and stabilize the feature.
  • We automatically attempt to fallback to the old UI if an incompatibility or failure to load Google Maps happens.


  • Fixed crash on startup on Linux Wayland systems. This was because XkbGetKeyboard was used to query the host system's keyboard state. Usage of XkbGetKeyboard turns out to be not advisable on Linux Wayland and perhaps in general (for example: https://github.com/glfw/glfw/issues/389)
    • Big thanks to the /r/androiddev community for getting back to us quickly on this with getting stack traces and verifying the fix!
  • Fixed issue where keyboards with different letter mappings than QWERTY (AZERTY, QWERTZ, etc.) would end up typing the original QWERTY-mapped key. The previous unexpected behavior is actually due to a new input system where the emulator only sends raw keycodes to the guest OS; by also changing the Android guest's keyboard type to a different keyboard type, more keyboard types can be tested.
  • Keycode forwarding can still be used, but we need to ensure the Android guest is aware of the host keyboard type.
  • We now require turning that on manually via -feature KeycodeForwarding.
  • A future system image update will automatically apply KeycodeForwarding-related guest side updates so the keyboard types on host and guest always match.
  • On Linux with non-US keyboards, we also found an issue where keycodes were not sent unless keycode forwarding was used. In this case, for now, please change the Android guest's keyboard type to the same keyboard type that you're using.
  • Updated metrics for Multi-Display UI.
  • Linux emulator now statically links libunwind.


Android Studio 3.6 Canary 12 is now available in the Canary and Dev channels.

If you have Android Studio set to receive updates on the Canary or Dev channel, you can get the update by choosing Help > Check for Updates (Android Studio > Check for Updates on macOS). Otherwise, you can download it here.

Fragment wizard and new fragment templates

A new Fragment wizard and fragment templates are now available by navigating to File > New > Fragment > Gallery or by clicking Create new destination in the Navigation editor.

General fixes

This update includes fixes for the following public issues:
APK Viewer
Data Binding
Dexer (D8)
  • Issue #140290149: Class module-info is missing a super type. Class file version 53.
Editing
  • Issue #140362782: Files created by templates are not picked up by resource repositories
Layout Editor
Lint
  • Issue #133465551: Lint 26.5.0-beta02 DefaultLocale triggers on Kotlin's decapitalize method
New Project Wizard
  • Issue #138951281: Create New Module wizard is blocked by Project needs to be converted to androidx.* dependencies
Run Debug
View Binding
For information on new features and changes in all preview builds of Android Studio 3.6, see the Android Studio Preview release notes. For details of bugs fixed in each preview release, see previous entries on this blog.

We greatly appreciate your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. Note that you can also vote for an existing issue to indicate that you are also affected by it.

Emulator 29.2.0 is now available in all channels. Changes versus previous stable, 29.1.12:
  • UI for controlling multiple displays has been added to the Extended Controls under the "Displays" tab. This requires the latest revision of the Android 10 (Q) system images. The UI allows the user to more easily add secondary displays.
  • Known issue: Some apps do not work as expected on secondary displays or when a secondary display is set to 4K resolution.

  • Emulator icons rebranded to reflect new Android colors.
  • Vulkan 1.1+ is now required to use the emulator with Vulkan on Windows. We noticed crashes from older GPUs + Vulkan driver versions incorrectly advertising 1.1 function pointers.
  • Fixed failure to load snapshot while emulator is running on recent Android 10 (Q) images.
  • Fixed crash when launching the emulator with -screen touch. The screen type is now exclusively multi-touch.
  • Fixed issue where Alt-Tab would send an extra Alt event to the guest.
  • Vulkan: Added support for syncobj-based external fences.
  • gRPC service: Added metrics tracking for opt-in users. More background on gRPC support. Container scripts for quick setupUpdated documentation

Emulator 29.2.0 is now available in the Canary and Dev channels. Changes:

  • UI for controlling multiple displays has been added to the Extended Controls under the "Displays" tab. This requires the latest revision of the Android 10 (Q) system images. The UI allows the user to more easily add secondary displays.
    • Known issue: Some apps do not work as expected on secondary displays or when a secondary display is set to 4K resolution.



  • Emulator icons rebranded to reflect new Android colors.
  • Vulkan 1.1+ is now required to use the emulator with Vulkan on Windows. We noticed crashes from older GPUs + Vulkan driver versions incorrectly advertising 1.1 function pointers.
  • Fixed failure to load snapshot while emulator is running on recent Android 10 (Q) images.
  • Fixed crash when launching the emulator with -screen touch. The screen type is now exclusively multi-touch.
  • Fixed issue where Alt-Tab would send an extra Alt event to the guest.


Android Studio 3.6 Canary 11 is now available in the Canary and Dev channels.

If you have Android Studio set to receive updates on the Canary or Dev channel, you can get the update by choosing Help > Check for Updates (Android Studio > Check for Updates on macOS). Otherwise, you can download it here.

View Binding

View binding is a new feature that provides compile-time safety when referencing views in your code. You can now replace findViewById() with the auto-generated binding class reference.
For example, activity.xml -> ActivityBinding.java.
To take advantage of View binding in a module of your project, add the following line to its build.gradle file:
    android {
        viewBinding.enabled = true
    }
To learn more, check out the documentation. If you have any feedback or encounter any issues, please report a bug.

General fixes

This update includes fixes for the following public issues:
Build
  • Issue #139769925: Gradle composite build causes stack overflow in included build
  • Issue #136242040: Spaces ignored in links to file paths
  • Issue #138131992: Error link do not set editor to correct line and column anymore, only to upper left (1,1)
Data Binding
Editing
  • Issue #137878819: RoomSql Fragment Editor doesn't resolve symbols as the raw files do (triple quotes)
  • Issue #124656558: com.intellij.util.IncorrectOperationException in Alt-Enter
Gradle
  • Issue #139821728: When add ‘android.enableSeparateAnnotationProcessing=true’, processDebugAnnotationsWithJavac task cannot be created
  • Issue #139464147: Update to Gradle 5.6
Gradle Sync
Lint
Project Structure Dialog
  • Issue #136389141: buildTypes.each caused an error in project's structure suggestion
Project System
View Binding
For information on new features and changes in all preview builds of Android Studio 3.6, see the Android Studio Preview release notes. For details of bugs fixed in each preview release, see previous entries on this blog.

We greatly appreciate your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. Note that you can also vote for an existing issue to indicate that you are also affected by it.

Emulator 29.1.13 is now available in the Canary and Dev channels. Changes:
  • Vulkan: Added support for syncobj-based external fences. This will require an accompanying system image update.
  • Remote streaming service: Added metrics tracking for opt-in users. Updated documentation.


Android Studio 3.6 Canary 10 is now available in the Canary and Dev channels.

If you have Android Studio set to receive updates on the Canary or Dev channel, you can get the update by choosing Help > Check for Updates (Android Studio > Check for Updates on macOS). Otherwise, you can download it here.

Refactor menu option to enable Instant Apps support

You can now instant-enable your base module at any time after creating your app
project as follows:
  1. Open the Project panel by selecting View > Tool Windows > Project from the menu bar.
  2. Right-click on your base module, typically named ‘app’, and select Refactor > Enable Instant Apps Support.
  3. In the dialog that appears, select your base module from the dropdown menu.
  4. Click OK.
Note: The option to instant-enable your base app module from the Create New Project wizard has been removed.

Deobfuscate class and method bytecode in APK Analyzer

When inspecting DEX files, the APK Analyzer now supports deobfuscating class and method bytecode. To deobfuscate the bytecode, proceed as follows:
  1. Select Build > Analyze APK from the menu bar.
  2. In the dialog that appears, navigate to the APK you want to inspect and select it.
  3. Click Open.
  4. In the APK Analyzer, select the DEX file you want to inspect.
  5. In the DEX file viewer, load the ProGuard mappings file for the APK you’re analyzing.
  6. Right-click on the class or method you want to inspect and select Show bytecode.

General fixes

This update includes fixes for the following public issues:

Core IDE
  • Issue #139371784: Gradle sync should use --stacktrace by default to assist in diagnosing failures which occur during sync
  • Issue #130738995: Allow disabling the automatic adding of the google repository to build.gradle
Gradle
Gradle Sync
  • Issue #139481725: Gradle Sync fails with org.jetbrains.kotlin.psi.KtDotQualifiedExpression cannot be cast to org.jetbrains.kotlin.psi.KtStringTemplateExpression
Lint
  • Issue #138832286: AGP 3.5.0-rc02 and 3.6.0-alpha05: Lint doesn't report issues in the Kotlin source set
  • Issue #139769778: Can not resolve symbol for app:constraint_referenced_ids attribute
  • Issue #139822932: VisibleForTesting annotation not linted properly if it uses package private scope as the 'otherwise'
  • Issue #139515660: margin(Horizontal|Vertical) and padding(Horizontal|Vertical) are detected by UnusedAttribute even though they're backported
Templates
  • Issue #123677458: Creating a new project should explicitly set project name in settings.gradle via rootProject.name = "..."
View Binding
Databinding
  • Issue #133390436: Binding adapter not used when setting propert on an <include> tag
For information on new features and changes in all preview builds of Android Studio 3.6, see the Android Studio Preview release notes. For details of bugs fixed in each preview release, see previous entries on this blog.

We greatly appreciate your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. Note that you can also vote for an existing issue to indicate that you are also affected by it.

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.