<br />

# Android Studio 3.5 (August 2019)

<br />

<br />

Android Studio 3.5 is a major release and a result of Project Marble. Beginning with the release of[Android Studio 3.3](https://android-developers.googleblog.com/2019/01/android-studio-33.html), the Project Marble initiative has spanned multiple releases that focus on improving three main areas of the IDE:[system health](https://developer.android.com/studio/releases/past-releases/as-3-5-0-release-notes#3-5-system-health),[feature polish](https://developer.android.com/studio/releases/past-releases/as-3-5-0-release-notes#3-5-feature-polish), and fixing bugs.

<br />

<br />

For information about these and other Project Marble updates, read the[Android Developers blog post](https://android-developers.googleblog.com/2019/08/android-studio-35-project-marble-goes.html)or the sections below.

<br />

<br />

We also want to thank all of our[community contributors](https://developer.android.com/studio/releases/past-releases/as-3-5-0-release-notes#3-5-community-contributors)who have helped with this release.

<br />

<br />

<br />

<br />

**3.5.3 (December 2019)**

This minor update includes various bug fixes and performance improvements.

**3.5.2 (November 2019)**

This minor update includes various bug fixes and performance improvements. To see a list of notable bug fixes, read the related post on the[Release Updates blog](https://androidstudio.googleblog.com/2019/11/android-studio-352-available.html).

**3.5.1 (October 2019)**

This minor update includes various bug fixes and performance improvements. To see a list of notable bug fixes, read the related post on the[Release Updates blog](https://androidstudio.googleblog.com/2019/10/android-studio-351-available.html).

<br />

<br />

## Project Marble: System health

<br />

<br />

This section describes the changes in Android Studio 3.5 that are focused on improving system health.

<br />

<br />

### Recommended memory settings

<br />

<br />

Android Studio now notifies you if it detects that you could improve performance by increasing the maximum amount of RAM that your OS should allocate for Android Studio processes, such as the core IDE, Gradle daemon, and Kotlin daemon. You can either accept the recommended settings by clicking the action link in the notification, or you can adjust these settings manually by selecting**File \> Settings** (or**Android Studio \> Preferences** on macOS), and then finding the**Memory Settings** section under**Appearance \& Behavior \> System Settings** . To learn more, see[Maximum heap size](https://developer.android.com/studio/intro/studio-config#adjusting_heap_size).

<br />

![A notification about recommended memory settings.](https://developer.android.com/static/studio/images/memory-settings-notification.png)

A notification about recommended memory settings.

<br />

<br />

### Memory usage report

<br />

<br />

Memory problems in Android Studio are sometimes difficult to reproduce and report. To help solve this problem, Android Studio lets you generate a memory usage report by clicking**Help \> Analyze Memory Usage** from the menu bar. When you do so, the IDE locally sanitizes the data for personal information before asking whether you want to send it to the Android Studio team to help identify the source of the memory issues. To learn more, see[Run a memory usage report](https://developer.android.com/studio/report-bugs#run-memory-usage-report).

<br />

![A memory usage report.](https://developer.android.com/static/studio/images/memory-usage-report.png)

A memory usage report.

<br />

<br />

### Windows: Antivirus file I/O optimization

<br />

<br />

Android Studio now automatically checks whether certain project directories are excluded from real-time antivirus scanning. When adjustments can be made to improve build performance, Android Studio notifies you and provides instructions on how to optimize your antivirus configuration. To learn more, see[Minimize the impact of antivirus software on build speed](https://developer.android.com/studio/intro/studio-config#antivirus-impact).

<br />

<br />

## Project Marble: Feature polish

<br />

<br />

This section describes the changes in Android Studio 3.5 that are focused on improving existing features.

<br />

<br />

### Apply Changes

<br />

<br />

Apply Changes lets you push code and resource changes to your running app without restarting your app---and, in some cases, without restarting the current activity. Apply Changes implements a completely new approach for preserving your app's state. Unlike Instant Run, which rewrote the bytecode of your APK, Apply Changes redefines classes on the fly by leveraging the runtime instrumentation supported in Android 8.0 (API level 26) or higher.

To learn more, see[Apply Changes](https://developer.android.com/studio/run#apply-changes).

<br />

![The toolbar buttons for Apply Changes.](https://developer.android.com/static/studio/images/releases/apply-changes-buttons-3.5.png)

The toolbar buttons for Apply Changes.

<br />

<br />

### App deployment flow

<br />

<br />

The IDE has a new drop-down menu that lets you quickly select which device you'd like to deploy your app to. This menu also includes a new option that lets you run your app on multiple devices at once.

<br />

![Target device drop-down menu.](https://developer.android.com/static/studio/images/run/deploy-run-app.png)

Target device drop-down menu.

<br />

<br />

### Improved Gradle sync and cache detection

<br />

<br />

The IDE now better detects when Gradle periodically clears your build cache when reducing its hard disk consumption. In previous versions, this state caused the IDE to report missing dependencies and Gradle sync to fail. Now, the IDE simply downloads dependencies as needed to ensure that Gradle sync completes successfully.

<br />

<br />

### Improved build error output

<br />

<br />

The**Build** ![Build window icon](https://developer.android.com/static/studio/images/buttons/window-build-2x.png)window now provides better error reporting, such as a link to the file and line of the reported error, for the following build processes:

<br />

<br />

- AAPT compilation and linking
- R8 and ProGuard
- Dexing
- Resource merging
- XML file parsing
- Javac, Kotlinc, and CMake compilation

<br />

<br />

### Project Upgrades

<br />

<br />

Improved update experience to provide more information and actions to help you update the IDE and the Android Gradle plugin. For example, more sync and build errors include actions to help you mitigate errors when updating.

<br />

<br />

It's important to keep in mind, you can update the IDE independently of other components, such as the Android Gradle plugin. So, you can safely update the IDE as soon as a newer version is available, and update other components later.

<br />

<br />

### Layout Editor

<br />

<br />

Android Studio 3.5 includes several improvements to layout visualization, management, and interaction.

<br />

<br />

When working with`ConstraintLayout`, a new**Constraints** section in the**Attributes**panel lists the constraints relationships of the selected UI component. You can select a constraint either from the design surface or from the constraints list to highlight the constraint in both areas.

<br />

![Constraint relationships for a selected UI element.](https://developer.android.com/static/studio/images/releases/constraint-relationships-3.5.png)

Constraint relationships for a selected UI element.

<br />

<br />

Similarly, you can now delete a constraint by selecting it and pressing the`Delete`key. You can also delete a constraint by holding the`Control`key (`Command`on macOS) and clicking on the constraint anchor. Note that when you hold the`Control`or`Command`key and hover over an anchor, any associated constraints turn red to indicate that you can click to delete them.

<br />

<br />

When a view is selected, you can create a constraint by clicking on any of the**+** icons in the**Constraint Widget** section of the**Attributes**panel, as shown in the following image. When you create a new constraint, the Layout Editor now selects and highlights the constraint, providing immediate visual feedback for what you've just added.

<br />

![An animation showing how to use the constraint widget to create constraints.](https://developer.android.com/static/studio/images/releases/constraint-widget-3.5.gif)

Using the constraint widget to create constraints .

<br />

<br />

When creating a constraint, the Layout Editor now shows only the eligible anchor points to which you can constrain. Previously, the Layout Editor highlighted all anchor points on all views, regardless of whether you could constrain to them. In addition, a blue overlay now highlights the target of the constraint. This highlighting is particularly useful when attempting to constrain to a component that overlaps with another.

<br />

![An animation showing how to create a constraint for an overlapping component in Android Studio 3.4.](https://developer.android.com/static/studio/images/releases/constraint-target-overlay-3.4.gif)

Creating a constraint for an overlapping component in Android Studio 3.4.

<br />

![An animation showing how to create a constraint for an overlapping component in Android Studio 3.5.](https://developer.android.com/static/studio/images/releases/constraint-target-overlay-3.5.gif)

Creating a constraint for an overlapping component in Android Studio 3.5.

<br />

<br />

In addition to the above updates, Android Studio 3.5 also contains the following Layout Editor improvements:

<br />

<br />

- The**Constraint Widget**and default margin drop-down now allow you to use dimension resources for margins.
- In the Layout Editor toolbar, the list of devices that determine the size of the design surface has been updated. In addition, snapping behavior while resizing has been improved, and the resizing handles on the design surface are now always visible. When resizing, new overlays appear that show common device sizes.
- The Layout Editor has a new color scheme that improves consistency and reduces contrast between components, text, and constraints.
- Blueprint mode now includes text support for some components where text wasn't being shown.

For more information about these changes, see[Android Studio Project Marble: Layout Editor](https://medium.com/androiddevelopers/android-studio-project-marble-layout-editor-608b6704957a).

<br />

<br />

### Data Binding

In addition to adding[incremental annotation processing support](https://developer.android.com/studio/releases/past-releases/as-3-5-0-release-notes#incremental_ap)for Data Binding, the IDE improves smart editor features and performance when creating data binding expressions in XML.

<br />

![An animation showing code editor performance on Android Studio 3.4.](https://developer.android.com/static/studio/images/releases/xml-editing-latency-3.4.gif)

Code editor performance on Android Studio 3.4.
![An animation showing code editor performance on Android Studio 3.5.](https://developer.android.com/static/studio/images/releases/xml-editing-latency-3.5.gif)

Improved code editing performance on Android Studio 3.5.

<br />

<br />

### Improved support for C/C++ projects

<br />

<br />

Android Studio 3.5 includes several changes that improve support for C/C++ projects.

<br />

<br />

#### Build Variants panel improvements for single variant sync

<br />

<br />

You can now specify both the active build variant and active ABI in the**Build Variants**panel. This feature simplifies build configuration per module and can also improve Gradle sync performance.

<br />

<br />

To learn more, see[Change the build variant](https://developer.android.com/studio/run#changing-variant).

<br />

![Build Variants panel showing single variant selection by ABI.](https://developer.android.com/static/studio/images/releases/single-variant-ABI.png)

The Build Variants panel with single variant selection by ABI.

<br />

<br />

#### Side-by-side versions of the NDK

<br />

<br />

You can now use multiple versions of the NDK side-by-side. This feature gives you more flexibility when configuring your projects---for example, if you have projects that use different versions of the NDK on the same machine.

<br />

<br />

If your project uses Android Gradle plugin 3.5.0 or higher, you can also specify the version of the NDK that each module in your project should use. You can use this feature to create reproducible builds and to mitigate incompatibilities between NDK versions and the Android Gradle plugin.

<br />

<br />

To learn more, see[Install and configure the NDK, CMake, and LLDB](https://developer.android.com/studio/projects/install-ndk).

<br />

<br />

## ChromeOS Support

<br />

<br />

Android Studio now officially supports ChromeOS devices, such as the HP Chromebook x360 14, Acer Chromebook 13/Spin 13, and others that you can read about in the[system requirements](https://developer.android.com/studio#Requirements). To get started,[download Android Studio](https://developer.android.com/studio)on your compatible ChromeOS device and follow the[installation instructions](https://developer.android.com/studio/install#chrome-os).

Note: Android Studio on ChromeOS currently supports deploying your app only to a connected hardware device. To learn more, read[Run apps on a hardware device](https://developer.android.com/studio/run/device).

<br />

<br />

## Conditional delivery for feature modules

<br />

<br />

Conditional delivery allows you to set certain device configuration requirements for feature modules to be downloaded automatically during app install. For example, you can configure a feature module that includes functionality for augmented reality (AR) to be available at app install for only devices that support AR.

<br />

<br />

This delivery mechanism currently supports controlling the download of a module at app install-time based on the following device configurations:

<br />

<br />

- Device hardware and software features, including OpenGL ES version
- User country
- API level

<br />

<br />

If a device does not meet all the requirements you specify, the module is not downloaded at app install-time. However, your app may later request to[download the module on demand](https://developer.android.com/guide/app-bundle/playcore)using the Play Core Library. To learn more, read[Configure conditional delivery](https://developer.android.com/studio/projects/dynamic-delivery/conditional-delivery).

<br />

<br />

## IntelliJ IDEA 2019.1

<br />

<br />

The core Android Studio IDE has been updated with improvements from IntelliJ IDEA through the[2019.1 release](https://blog.jetbrains.com/idea/2019/03/intellij-idea-2019-1-is-released-theme-customization-java-12-switch-expressions-debug-inside-docker-containers-and-more/), such as theme customization.

<br />

<br />

The last IntelliJ version that was included with Android Studio was 2018.3.4. For more information about the improvements from other IntelliJ versions that are included cumulatively with this release of Android Studio, see the following bug-fix updates:

<br />

<br />

- [IntelliJ IDEA 2018.3.6](https://blog.jetbrains.com/idea/2019/03/intellij-idea-2018-3-6-is-released/){: .external-link}
- [IntelliJ IDEA 2018.3.5](https://blog.jetbrains.com/idea/2019/02/intellij-idea-2018-3-5-is-out/){: .external-link}

<br />

<br />

## Android Gradle plugin 3.5.0 updates

<br />

<br />

For information on what's new in Android Gradle plugin 3.5.0, such as improved support for incremental annotation processing and cacheable unit tests, see its[release notes](https://developer.android.com/studio/releases/gradle-plugin).

<br />

<br />

## Community contributors

Thank you to all of our community contributors who have helped us discover bugs and other ways to improve Android Studio 3.5. In particular, we'd like to thank the following people who reported P0 and P1 bugs:

<br />

<br />

| | | |
| - [Aaron He](https://github.com/aaronhe42) - [Andreas Dybdahl](https://github.com/anddybdahl) - [Andrei Vădan](https://github.com/Vampirelu) - [Andrew Hughes](https://github.com/ashughes) - [Andrey Mischenko](https://github.com/gildor) - Andrii Seredenko - [Benoît 'BoD' Lubek](https://github.com/BoD) - [Berkeli Alashov](https://github.com/alashow) - [Bram Stolk](https://github.com/stolk) - [Charles Anderson](https://github.com/gtcompscientist) - Curtis Kroetsch - [David Burström](https://stackoverflow.com/users/643007/david-burstr%c3%b6m) - [DeweyReed](https://github.com/DeweyReed) - Dmitriy Dolovov - [Emin Kokalari](https://stackoverflow.com/users/3636806/eak-team) - [Evan Tatarka](https://github.com/evant) - [Evgeny Brazgin](https://github.com/xapienz) | - [George Kropotkin](https://github.com/gmk57) - [Ido Feins](https://github.com/ifeins) - Jakub Banaszewski - [Jean-Michel Fayard](https://github.com/jmfayard) - [John Rodriguez](https://github.com/jrodbx) - [Kamil Dudek](https://github.com/dudududi) - [Kenji Abe](https://github.com/STAR-ZERO) - [Liran Barsisa](https://stackoverflow.com/users/878126/android-developer) - [Louis CAD](https://github.com/LouisCAD) - Luke Fielke - [Lóránt Pintér](https://github.com/lptr) - Marcin Dawid - Mario O - [Mauricio Vignale](https://github.com/mvignale1987) - [Michael Bailey](https://stackoverflow.com/users/1686989/yogurtearl) - Miguel Angel Rossi Sanahuja - [Niklas Baudy](https://github.com/vanniktech) | - [Noah Andrews](https://github.com/NoahAndrews) - [Oleksandr Zakrevskyi](https://github.com/sanchopanchos) - Peter Vegh - [Rishabh harit](https://github.com/rishabh876) - [Roar Grønmo](https://github.com/RoarGronmo) - [Said Tahsin Dane](https://github.com/tasomaniac/) - [Shayan Sabahi](https://stackoverflow.com/users/6600637/shynline) - [Slawomir Czerwinski](https://github.com/sczerwinski) - Stephen Yu - [Steven Schoen](https://github.com/dsteve595) - [Tolriq](https://github.com/tolriq) - [Tony Robalik](https://github.com/autonomousapps) - [Uli Bubenheimer](https://github.com/bubenheimer/) - Vixb Xue - [Yi Cheng](https://github.com/wisechengyi) |

<br />