Android Studio

Android Studio 4.0 brings New Motion Editor, Build Analyser and more

Android Studio 4.0 has been release in the stable channel and includes a new Motion Editor to help bring your apps to life, a Build Analyzer to investigate causes for slower build times, and Java 8 language APIs you can use regardless of your app’s minimum API level. 

The CPU Profiler user interface has received an overhaul to provide a more intuitive workflow and easier side-by-side analysis of thread activity. And the improved Layout Inspector now provides live data of your app’s UI, so you can easily debug exactly what’s being shown on the device.

Android Studio 4.0 Design Features

Motion Editor

The MotionLayout API extends the rich capabilities of ConstraintLayout to help Android developers manage complex motion and widget animation in their apps. It’s now easier to use this API with the new Motion Editor — an interface for creating, editing, and previewing MotionLayout animations.

You no longer have to create and modify complex XML files; the Motion Editor generates them for you, with support for editing constraint sets, transitions, keyframes, and view attributes.

If you do want to see the code the editor creates, it is one click away. For developers already using ConstraintLayout, the IDE can easily convert those to MotionLayout.

Upgraded Layout Inspector

Investigate where a value for a particular attribute came from or see a live 3D representation of nested views to inspect your view hierarchy. The Layout Inspector gives you access to data that stays updated with your running app and providing insights on how resources are being resolved.

Use the live Layout Inspector by selecting View > Tool Windows > Layout Inspector from the main menu.

If you are deploying to a device running API 29 level or higher, you have access to additional features, such as a dynamic layout hierarchy that updates as views change, detailed view attributes that also help you determine how resource values are resolved, and a live 3D model of your running app’s UI.

Navigate, animate, and transition between views on your running app while being able to debug your UI.

Layout Validation

When you’re developing for multiple form-factors, screen sizes, and resolutions, you need to verify that changes you make to your UI look great on every screen you support. With the Layout Validation window, you can preview layouts on different screens and configurations simultaneously.

To get started, click on the Layout Validation tab in the top-right corner of the IDE.

Android Studio 4.0 develop features

CPU Profiler UI upgrades

The CPU profiler is designed to provide a rich amount of information about your app’s thread activity and trace recordings. CPU recordings are now separated from the main profiler timeline and organized in groups. You can move groups up and down, or drag-and-drop individual items within a group for additional customization.

You can now view all thread activity in the Thread Activity timeline (including methods, functions, and events) and try new navigation shortcuts to easily move around the data — such as using W, A, S, and D keys for fine-grained zooming and panning.

Google also redesigned the System Trace UI so Events are uniquely colored for better visual distinction, threads are sorted to surface the busier ones first, and you can now focus on seeing data for only the threads you select.

The quality of the CPU profiler should also be better — Google has seen a significant decrease in the user-reported error rates of recordings since Android Studio 3.6.

Smart editor features when writing rules for code shrinking: R8 was introduced in Android Gradle plugin 3.4.0 to combine desugaring, shrinking, obfuscating, optimizing, and dexing — resulting in noticeable build performance improvements. When creating rules files for R8, Android Studio now provides smart editor features, such as syntax highlighting, completion, and error checking.

The editor also integrates with your Android project to provide full symbol completion for all classes, methods, and fields, and includes quick navigation and refactoring.

IntelliJ IDEA 2019.3 platform update

The core Android Studio IDE has been updated with improvements from IntelliJ IDEA 2019.3 and 2019.3.3 releases. These improvements largely focus on quality and performance improvements across the IDE.

Kotlin Android Live Templates

An IntelliJ feature that allows you to insert common constructs into your code by typing simple keywords. Android Studio now includes Android-specific live templates for your Kotlin code. For example, simply type toast and press the Tab key to quickly insert boilerplate code for a Toast.

For a full list of available live templates, navigate to Editor > Live Templates in the Settings (or Preferences) dialog.

Clangd support for C++:

For developers writing C++, clangd is now the primary language analysis engine for code navigation, completion, inspection, and showing code errors and warnings. Google also now bundles clang-tidy with Android Studio.

To configure Clangd or Clang-Tidy behavior, go to the IDE Settings (or Preferences) dialog, navigate to Languages & Frameworks > C/C++ > Clangd or Clang-Tidy, and configure the options.

Android Studio 4.0 Build Features

Build Analyzer

Outdated or misconfigured tasks can cause longer build times that lead to frustration and lost productivity. The Build Analyzer helps developers understand and address bottlenecks in your build by highlighting the plugins and tasks that are most responsible for your overall build time and by suggesting steps to mitigate regressions.

Java 8 Language library desugaring in D8 and R8

Previous versions of the Android Gradle plugin supported a variety of Java 8 language features for all API levels, such as lambda expressions and method references, through a process called desugaring. Now, the desugaring engine has been extended to support Java language APIs, regardless of your app’s minSdkVersion.

This means that you can now use standard language APIs, which were previously available in only recent Android releases (such as java.util.stream, java.util.function and java.time).

Feature-on-feature dependencies

You can now specify that a Dynamic Feature module depends on another feature module. Being able to define this relationship ensures that your app has the required modules to unlock additional functionality, resulting in fewer requests and easier modularization of your app.

For example, a :video feature can depend on the :camera feature. If a user wants to unlock the ability to record videos, your app automatically downloads the required :camera module when it requests :video.

New options to enable or disable build features

The Android Gradle plugin has built-in support for modern libraries, such as data binding and view binding, and build features, such as auto-generated BuildConfig classes. However, you might not need these libraries and features for every project. You can now disable discrete build features, which can help optimize build performance for larger projects.

Essential support for Kotlin DSL script files

Built-in support for Kotlin DSL build script files (*.kts) means that Kotlin build scripts offer a full suite of quick fixes and are supported by the Project Structure dialog.

Google will continue to refine the Android Gradle Plugin’s DSL API throughout the next year, which may result in breaking API changes for Kotlin script users. Long term, these fixes will make for a more idiomatic, easy-to-use DSL for Kotlin script users.

Dependencies metadata

When building your app using Android Gradle plugin 4.0.0 and higher, the plugin includes metadata that describes the library dependencies that are compiled into your app. When uploading your app, the Play Console inspects this metadata to provide alerts for known issues with SDKs and dependencies your app uses, and, in some cases, provide actionable feedback to resolve those issues.

The data is compressed, encrypted by a Google Play signing key, and stored in the signing block of your release app.

Lastly, Android Gradle plugin 4.0.0 includes support for Android Studio’s Build Analyzer by using Java 8 language APIs (regardless of your app’s minimum API level), and creating feature-on-feature dependencies between Dynamic Feature modules.

You can now download Android Studio 4.0 for Windows, Mac, and Linux directly. 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).