<br />

# Android Studio 3.3 (January 2019)

<br />

<br />

Android Studio 3.3 is a major release that includes a variety of new features and improvements.

<br />

<br />

<br />

<br />

**3.3.2 (March 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/03/android-studio-332-available.html).

**3.3.1 (February 2019)**

This minor update includes various bug fixes and performance improvements.

<br />

<br />

## IntelliJ IDEA 2018.2.2

<br />

<br />

The core Android Studio IDE has been updated with improvements from IntelliJ IDEA through the[2018.2.2 release](http://blog.jetbrains.com/idea/2018/08/intellij-idea-2018-2-2-is-released).

<br />

<br />

## Android Gradle plugin updates

<br />

<br />

For information on what's new in the Android Gradle plugin, see its[release notes](https://developer.android.com/studio/releases/gradle-plugin).

<br />

<br />

## Navigation Editor

<br />

<br />

The Navigation Editor lets you quickly visualize and build navigation into your app by using the[Navigation Architecture Component](https://developer.android.com/topic/libraries/architecture/navigation).

<br />

![](https://developer.android.com/static/studio/images/releases/navigation-editor_2x.png)

<br />

For more information, see[Implement navigation with the Navigation Architecture Component](https://developer.android.com/topic/libraries/architecture/navigation/navigation-implementing).

<br />

<br />

## Delete unused Android Studio directories

<br />

<br />

When you run a major version of Android Studio for the first time, it looks for directories containing caches, settings, indices, and logs for versions of Android Studio for which a corresponding installation can't be found. The**Delete Unused Android Studio Directories**dialog then displays locations, sizes, and last-modified times of these unused directories and provides an option to delete them.

<br />

<br />

The directories Android Studio considers for deletion are listed below:

<br />

<br />

- Linux:`~/.AndroidStudio[Preview]`*X.Y*
- Mac:`~/Library/{Preferences, Caches, Logs, Application Support}/AndroidStudio[Preview]`*X.Y*
- Windows:`%USER%.AndroidStudio[Preview]`*X.Y*

<br />

![](https://developer.android.com/static/studio/images/releases/delete-unused-directories-dialog-2x.png)

<br />

## Lint improvements

<br />

<br />

Lint, when invoked from Gradle, is significantly faster---larger projects can expect lint to run up to four times faster.

<br />

<br />

## Create New Project wizard

<br />

<br />

The**Create New Project**wizard has a new look and contains updates that help streamline the creation of new Android Studio projects.

<br />

![](https://developer.android.com/static/studio/images/projects/new-project-wizard-choose_2x.png)

<br />

For more information, see[Create a project](https://developer.android.com/studio/projects/create-project).

<br />

<br />

## Profiler updates

<br />

<br />

Android Studio 3.3 includes updates to several of the individual profilers.

<br />

<br />

### Improved performance

<br />

<br />

Based on user feedback, rendering performance while using the profilers has been greatly improved. Please continue to[provide feedback](https://issuetracker.google.com/issues/new?component=192722), especially if you continue to see performance issues.

<br />

### Profiler memory allocation tracking options

<br />

<br />

To improve app performance while profiling, the[Memory Profiler](https://developer.android.com/studio/profile/memory-profiler)now samples memory allocations periodically by default. If desired, you can change this behavior by using the**Allocation Tracking**dropdown when testing on devices running Android 8.0 (API level 26) or higher.

<br />

![](https://developer.android.com/static/studio/images/releases/profiler-memory-allocation-modes.png)

<br />

Using the**Allocation Tracking**dropdown, you can choose from the following modes:

<br />

<br />

- **Full:**captures all object memory allocations. Note that if you have an app that allocates a lot of objects, you might see significant performance issues while profiling.

- **Sampled:**captures a periodic sample of object memory allocations. This is the default behavior and has less impact on app performance while profiling. You might encounter some performance issues with apps that allocate a lot of objects within a short time period.

- **Off:**turns memory allocation off. If not already selected, this mode is enabled automatically while taking a CPU recording and then returned to the previous setting when the recording is finished. You can change this behavior in the CPU recording configuration dialog.

  The tracking affects both Java objects and JNI references.

<br />

<br />

### Inspect frame rendering data

<br />

<br />

In the[CPU Profiler](https://developer.android.com/studio/profile/cpu-profiler), you can now inspect how long it takes your Java app to render each frame on the main UI thread and RenderThread. This data might be useful when investigating bottlenecks that cause UI jank and low framerates. For example, each frame that takes longer than the 16ms required to maintain a smooth framerate is displayed in red.

<br />

<br />

To see frame rendering data,[record a trace](https://developer.android.com/studio/profile/cpu-profiler#method_traces)using a configuration that allows you to**Trace System Calls** . After recording the trace, look for info about each frame along the timeline for the recording under the section called**FRAMES**, as shown below.

<br />

![](https://developer.android.com/static/studio/images/releases/frame-rendering_2x.png)

<br />

To learn more about investigating and fixing framerate issues, read[Slow rendering](https://developer.android.com/topic/performance/vitals/render).

<br />

<br />

### Fragments in the event timeline

<br />

<br />

The event timeline now shows when fragments are attached and detached. Additionally, when you hover over a fragment, a tooltip shows you the fragment status.

<br />

![](https://developer.android.com/static/studio/images/releases/fragments-activity-bar_2x.png)

<br />

### View formatted text for connection payloads in the Network profiler

<br />

<br />

Previously, the Network profiler displayed only raw text from connection payloads. Android Studio 3.3 now formats certain text types by default, including JSON, XML, and HTML. In the**Response** and**Request** tabs, click the**View Parsed** link to display formatted text, and click the**View Source**link to display raw text.

<br />

![](https://developer.android.com/static/studio/images/releases/network-profiler-text_2x.png)

<br />

For more information, see[Inspect network traffic with Network Profiler](https://developer.android.com/studio/profile/network-profiler).

<br />

<br />

## Automatic downloading of SDK components

<br />

<br />

When your project needs an SDK component from the SDK platforms, NDK, or CMake, Gradle now attempts to automatically download the required packages as long as you've previously accepted any related license agreements using the SDK Manager.

<br />

<br />

For more information, see[Auto-download missing packages with Gradle](https://developer.android.com/studio/intro/update#download-with-gradle).

<br />

<br />

## Support for Clang-Tidy

<br />

<br />

Android Studio now includes support for static code analysis using[Clang-Tidy](http://clang.llvm.org/extra/clang-tidy/)for projects that include native code. To enable support for Clang-Tidy,[update your NDK](https://developer.android.com/ndk/guides#download-ndk)to r18 or higher.

<br />

<br />

You can then enable or re-enable the inspections by opening the**Settings** or**Preferences** dialog and navigating to**Editor \> Inspections \> C/C++ \> General \> Clang-Tidy** . When selecting this inspection in the**Settings** or**Preferences** dialog, you can also see the list of Clang-Tidy checks that are enabled and disabled under the**Option** section of the right-most panel. To enable[additional checks](https://clang.llvm.org/extra/clang-tidy/checks/list.html), add them to the list and click**Apply**.

<br />

<br />

To configure Clang-Tidy with[additional options](http://clang.llvm.org/extra/clang-tidy/#using-clang-tidy), click**Configure Clang-Tidy Checks Options**and add them in the dialog that opens.

<br />

<br />

## Removal of options for C++ customization

<br />

<br />

The following options have been removed from the**Customize C++ Support**dialog:

<br />

<br />

- **Exceptions Support (-fexceptions)**
- **Runtime Type Information Support (-ftti)**

<br />

<br />

The respective behaviors are enabled for all projects created through Android Studio.

<br />

<br />

## CMake version 3.10.2

<br />

<br />

CMake version 3.10.2 is now included with SDK Manager. Note that Gradle still uses version 3.6.0 by default.

<br />

<br />

To specify a CMake version for Gradle to use, add the following to your module's`build.gradle`file:

<br />

<br />

        android {
            ...
            externalNativeBuild {
                cmake {
                    ...
                    version "3.10.2"
                }
            }
        }
        
      
<br />

<br />

For more information on configuring CMake in`build.gradle`, see[Manually configure Gradle](https://developer.android.com/studio/projects/gradle-external-native-builds#configure-gradle).

<br />

<br />

## New "+" syntax to specify minimum CMake versions

<br />

<br />

When specifying a version of CMake in your main module's`build.gradle`file, you can now append a "+" to match the behavior of CMake's[`cmake_minimum_required()`](https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html)command.

<br />

<br />

**Caution:** Using "+" syntax with other[build dependencies](https://developer.android.com/studio/build/dependencies)is discouraged, as dynamic dependencies can cause unexpected version updates and difficulty resolving version differences.

<br />

<br />

## Android App Bundles now support Instant Apps

<br />

<br />

Android Studio now lets you build[Android App Bundles](https://developer.android.com/guide/app-bundle)with full support for[Google Play Instant](https://developer.android.com/topic/google-play-instant/overview). In other words, you can now build and deploy both installed app and instant experiences from a single Android Studio project and include them in a single Android App Bundle.

<br />

<br />

If you're creating a new Android Studio project using the**Create New Project** dialog, make sure you check the box next to**Configure your project \> This project will support instant apps**. Android Studio then creates a new app project as it normally would, but includes the following properties in your manifest to add Instant app support to your app's base module:

<br />

<br />

        <manifest ... xmlns:dist="http://schemas.android.com/apk/distribution">
            <dist:module dist:instant="true" />
            ...
        </manifest>
        
      
<br />

<br />

You can then[create an instant-enabled feature](https://developer.android.com/studio/projects/dynamic-delivery#create_instant_enabled)module by selecting**File \> New \> New Module** from the menu bar and then selecting**Instant Dynamic Feature Module** from the**Create New Module**dialog. Keep in mind, creating this module also instant-enables your app's base module.

<br />

<br />

To deploy your app to a local device as an instant experience,[edit your run configuration](https://developer.android.com/studio/run/rundebugconfig#editing)and check the box next to**General \> Deploy as instant app**.

<br />

<br />

## Single-variant project sync

<br />

<br />

[Syncing your project](https://developer.android.com/studio/build#sync-files)with your build configuration is an important step in letting Android Studio understand how your project is structured. However, this process can be time-consuming for large projects. If your project uses multiple build variants, you can now optimize project syncs by limiting them to only the variant you have currently selected.

<br />

<br />

You need to use Android Studio 3.3 or higher with Android Gradle plugin 3.3.0 or higher to enable this optimization. When you meet these requirements, the IDE prompts you to enable this optimization when you sync your project. The optimization is also enabled by default on new projects.

<br />

<br />

To enable this optimization manually, click**File \> Settings \> Experimental \> Gradle** (**Android Studio \> Preferences \> Experimental \> Gradle** on a Mac) and select the**Only sync the active variant**checkbox.

<br />

<br />

**Note:**This optimization currently supports projects that include only the Java programming language. If, for example, the IDE detects Kotlin or C++ code in your project, it does not automatically enable this optimization, and you should not enable it manually.

<br />

<br />

For more information, see[Enable single-variant project sync](https://developer.android.com/studio/build/optimize-your-build#single_variant_sync).

<br />

<br />

## Provide quick feedback

<br />

<br />

If you've opted into sharing usage statistics to help improve Android Studio, you'll see these two new icons in the status bar at the bottom of the IDE window:
![](https://developer.android.com/static/studio/images/releases/user-sentiment-positive.png)![](https://developer.android.com/static/studio/images/releases/user-sentiment-negative.png)

<br />

<br />

Simply click the icon that best represents your current experience with the IDE. When you do so, the IDE sends usage statistics that allow the Android Studio team to better understand your sentiment. In some cases, such as when you indicate a negative experience with the IDE, you'll have an opportunity to provide additional feedback.

<br />

<br />

If you haven't already done so, you can enable sharing usage statistics by opening the**Settings** dialog**Preferences** on a Mac), navigating to**Appearance \& Behavior \> System Settings \> Data Sharing** and checking**Send usage statistics to Google**.

<br />