Google today launched Android Studio 3.6, the latest version of its integrated development environment (IDE), with a specific focus on “addressing quality in primarily code editing and debugging use cases.” This release is the first release since Project Marble, a fancy name for an initiative Google announced late last year to improve Android Studio’s fundamental features. Android 3.6 introduces a small set of new features, polishes existing features, and addresses the usual bugs and performance improvements.
The new release comes less than a week after Google launched Android 11 Developer Preview 1. While developers can use other IDEs to build on Android, the latest features arrive first in Android Studio. Version 3.6 includes a new way to quickly design, develop, and preview app layouts using XML. Google Maps is now integrated right into the Android Emulator extended control panel so developers no longer have to manually type in GPS coordinates to test location features in their app. It’s also now easier to optimize your app and find bugs with automatic memory leak detection for Fragments and Activities.
You can now download Android Studio 3.6 for Windows, Mac, and Linux directly from developer.android.com/studio. If you are already using Android Studio, you can get the latest version in the navigation menu (Help => Check for Update on Windows/Linux and Android Studio => Check for Updates on OS X).
Google released Android Studio 3.5 in August. The version number 3.6 suggests this isn’t a significant release, but if you build for Android, there might be features of note in the list below.
Android Studio 3.6 features
Here’s the rundown of what version 3.6 brings to the table:
- Split view in design editors: Design editors, such as the Layout Editor and Navigation Editor, now provide a Split view that enables you to see both the Design and Code views of your UI at the same time. Split view replaces the Preview window and can be configured on a file-by-file basis to preserve context information like zoom factor and design view options, so you can choose the view that works best for each use case. To enable split view, click the Split icon in the top-right corner of the editor window.
- Color picker resource tab: It’s now easier to apply colors you have defined as color resources. The color picker now populates the color resources in your app for you to choose and replace color resources values. The color picker is accessible in the design tools as well as in the XML editor.
- View binding: Allows you to more easily write code that interacts with views by providing compile-time safety when referencing views in your code. When enabled, view binding generates a binding class for each XML layout file present in that module. In most cases, view binding replaces
findViewById. You can reference all views that have an ID with no risk of null pointer or class cast exceptions. These differences mean that incompatibilities between your layout and your code will result in your build failing at compile time rather than at runtime.
- Android NDK updates: Previously supported in Java, these features are now also supported in Kotlin. You can navigate from a JNI declaration to the corresponding implementation function in C/C++ (view this mapping by hovering over the C or C++ item marker near the line number in the managed source code file). You can automatically create a stub implementation function for a JNI declaration (define the JNI declaration first and then type “jni: or the method name in the C/C++ file to activate).
- IntelliJ Platform Update: The IntelliJ 2019.2 platform release includes many improvements from a new services tool window to much improved startup times.
- Add classes with Apply Changes: You can now add a class and then deploy that code change to your running app by clicking either Apply Code Changes or Apply Changes and Restart Activity.
- Android Gradle Plugin (AGP) updates: Support for the Maven Publish Gradle plugin, which allows you to publish build artifacts to an Apache Maven repository. The Android Gradle plugin creates a component for each build variant artifact in your app or library module that you can use to customize a publication to a Maven repository. Additionally, the Android Gradle plugin has made significant performance improvement for annotation processing/KAPT for large projects — AGP now generates R class bytecode directly, instead of .java files.
- New packaging tool: The default packaging tool has been changed to zipflinger for debug builds. You should see an improvement in build speed, but you can also revert to using the old packaging tool by setting
android.useNewApkCreator=falsein your gradle.properties file.
- Android Emulator – Google Maps UI: Android Emulator 29.2.12 includes a new way for app developers to interface with the emulated device location.The Google Maps user interface is embedded in the extended controls menu to make it easier to specify locations and also to construct routes from pairs of locations. 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. These routes can be replayed in real time as locations along the route are sent to the guest OS.
- Multi-display support: Emulator 29.1.10 includes preliminary support for multiple virtual displays. Users can configure multiple displays through the settings menu (Extended Controls > Settings).
- Resumable SDK downloads: When downloading Android SDK components and tools using the Android Studio SDK Manager, Android Studio now allows you to resume downloads that were interrupted instead of restarting the download from the beginning.
- In-place updates for imported APKs: Android Studio now automatically detects changes made in the imported APK file and gives you an option to re-import it in-place. Previously, when changes to those APKs were made, you would have to manually import them again and reattach symbols and sources.
- Attach Kotlin sources to imported APKs: Support for attaching Kotlin source files to imported APKs.
- Leak detection in Memory Profiler: The Memory Profiler now has the ability to detect Activity and Fragment instances that may have leaked. To get started, capture or import a heap dump file in the Memory Profiler, and check the Activity/Fragment Leaks checkbox to generate the results.
- Deobfuscate class and method bytecode in APK Analyzer: When using the APK Analyzer to inspect DEX files, you can now deobfuscate class and method bytecode. While in the DEX file viewer, load the ProGuard mappings file for the APK you’re analyzing. When loaded, you will be able to right-click on the class or method you want to inspect by selecting Show bytecode.
Android Studio 3.6 also includes the usual performance improvements and bug fixes on top of the new features (full release notes). Google didn’t share its plans for the next version, but we’re likely to hear more at its I/O 2020 developers conference in May.