We recently announced that D8 has become the default compiler in Android Studio 3.1. If you haven't previously tried D8, we hope that you notice better, faster dex compilation as you make the switch.

D8 was first shipped in Android Studio 3.0 as an opt-in feature. In addition to our own rigorous testing, we've now seen it perform well in a wide variety of apps. As a result, we're confident that D8 will work well for everyone who starts using it in 3.1. However, if you do have issues, you can always revert to DX for now via this setting in your project's gradle.properties file:

android.enableD8=false

If you do encounter something that causes you to disable D8, please let us know!

Next Steps

Our goal is to ensure that everyone has access to a fast, correct dex compiler. So to avoid risking regressions for any of our users, we'll be deprecating DX in three phases

The first phase is intended to prevent prematurely deprecating DX. During this phase, DX will remain available in studio. We'll fix critical issues in it, but there won't be new features. This phase will last for at least six months, during which we'll evaluate any open D8 bugs to decide if there are regressions which would prevent some users from replacing DX with D8. The first phase won't end until the team addresses all migration blockers. We'll be paying extra attention to the bug tracker during this window, so If you encounter any of these regressions, please file an issue.

Once we've seen a six month window without major regressions from DX to D8, we'll enter the second phase. This phase will last for a year, and is intended to ensure that even complex projects have lots of time to migrate. During this phase, we'll keep DX available, but we'll treat it as fully deprecated; we won't be fixing any issues.

During the third and final phase, DX will be removed from Android Studio. At this point, you'll need to use a legacy version of the Android Gradle Plugin in order to continue to build with DX.

We recently announced that D8 has become the default compiler in Android Studio 3.1. If you haven't previously tried D8, we hope that you notice better, faster dex compilation as you make the switch.

D8 was first shipped in Android Studio 3.0 as an opt-in feature. In addition to our own rigorous testing, we've now seen it perform well in a wide variety of apps. As a result, we're confident that D8 will work well for everyone who starts using it in 3.1. However, if you do have issues, you can always revert to DX for now via this setting in your project's gradle.properties file:

android.enableD8=false

If you do encounter something that causes you to disable D8, please let us know!

Next Steps

Our goal is to ensure that everyone has access to a fast, correct dex compiler. So to avoid risking regressions for any of our users, we'll be deprecating DX in three phases

The first phase is intended to prevent prematurely deprecating DX. During this phase, DX will remain available in studio. We'll fix critical issues in it, but there won't be new features. This phase will last for at least six months, during which we'll evaluate any open D8 bugs to decide if there are regressions which would prevent some users from replacing DX with D8. The first phase won't end until the team addresses all migration blockers. We'll be paying extra attention to the bug tracker during this window, so If you encounter any of these regressions, please file an issue.

Once we've seen a six month window without major regressions from DX to D8, we'll enter the second phase. This phase will last for a year, and is intended to ensure that even complex projects have lots of time to migrate. During this phase, we'll keep DX available, but we'll treat it as fully deprecated; we won't be fixing any issues.

During the third and final phase, DX will be removed from Android Studio. At this point, you'll need to use a legacy version of the Android Gradle Plugin in order to continue to build with DX.

We are excited to announce that Android Studio 3.1 is now available to download in the stable release channel. The focus areas for this release are around product quality and app development productivity. In addition to many underlying quality changes, we added several new features into Android Studio 3.1 that you should integrate into your development flow.

New to Android Studio 3.1 is a C++ performance profiler to help troubleshoot performance bottlenecks in your app code. For those of you with a Room or SQLite database in their your app, we added better code editor support to aid in your SQL table and query creation statements. We also added better lint support for your Kotlin code, and accelerated your testing with an updated Android Emulator with Quick Boot. If any of these features sound exciting or you are looking for the next stable version of Android Studio, you should download AndroStudio 3.1 today!

Check out the list of new features in Android Studio 3.1 below, organized by key developer flows.

What's new in Android Studio 3.1

Develop

Kotlin Lint Checks -Since announcing official Kotlin language support last year on the Android platform, we continue to invest in Kotlin language support in Android Studio. In Android Studio 3.1, we enhanced the Lint code quality checks so that now you can run them via the command line as well as from the IDE. Just open a Android Studio project, and run gradlew lint via command line. Learn more.

IntelliJ Platform Update: Android Studio 3.1 includes the IntelliJ 2017.3.3 platform release, which has many new features such as new Kotlin language intentions and built-in support for SVG image preview. Learn more.

Build

D8 Dex Compiler -D8 is now the default dex compiler in Android Studio 3.1. Replacing the legacy DX compiler, D8 dexing is an under the hood APK compilation step that makes your app size smaller, enables accurate step debugging, and many times leads to faster builds. Ensure that your gradle.properties either has no android.enableD8 flag, or if it does ensure that it is set to true. Learn more.

New Build Output Window - Android Studio 3.1 has an updated Build output window which organizes build status and errors in a new tree view. This change also consolidates the legacy Gradle output into this new window. Learn more.

New Build Output Window

Test

Quick Boot - Quick Boot allows you to resume your Android Emulator session in under 6 seconds. Slow start time on the Android Emulator was a major pain point we heard from you and Quick Boot solves this issue. Like a physical Android device, the emulator must perform an initial cold boot, but subsequent starts are fast. The feature is enabled by default for all Android Virtual Devices. Additionally, in this release, you have finer grain controls of when to use Quick Boot and the ability to save the quick boot state on demand under the emulator settings page. Learn more of other top Android Emulator Features.

Quick Boot On Demand Setting

System Images and Frameless Device Skins - The latest version of the Android Emulator now supports the Google Play Store and Google APIs on API 24 (Nougat) - API 27 (Oreo) emulator systems images as well as the P Developer Preview. Additionally the device emulator skins are updated to work in a new frameless mode, which can help you test your app with 18:9 screen aspect ratios, or Android P Developer Preview DisplayCutout APIs. Learn more.

Window frameless mode in the Android Emulator

Optimize

C++ CPU Profiling -Last year with Android Studio 3.0, we launched a brand new set of Android profilers to measure the CPU, Memory, and Network Activity in your app. With Android Studio 3.1, in addition to performance profiling your Kotlin and Java language app code, you can now profile your C++ code in your app. Using simpleperf as backend, the C++ profiler allows you to record C++ method traces. Learn more.

C++ CPU Profiler

Network Profiler Updates: Threads & Network Request -To aid with analyzing network traffic in your app, we added a new Network Thread view to inspect multithreaded network traffic, and we also added a new Network Request tab to dig into the network requests over time. With these updates to the Network Profiler you will have additional tools to trace the network traffic from each thread and network request all the way down through the network call stack. Learn more.

Getting Started

Download

If you are using a previous version of Android Studio, you can upgrade to Android Studio 3.1 today or you can download the update from the official Android Studio download page.

We appreciate any feedback on things you like, issues or features you would like to see. If you find a bug or issue, feel free to file an issue. Connect with us -- the Android Studio development team ‐ on our Google+ page or on Twitter.

Today, we are excited to announce Quick Boot for the Android Emulator. With
Quick Boot, you can launch the Android Emulator in under 6 seconds. Quick Boot
works by snapshotting an emulator session so you can reload in seconds. Quick
Boot was first released with Android Studio 3.0 in the canary update channel and
we are excited to release the feature as a stable update today.

In addition to this new feature, we also wanted to highlight some of the top
features from recent releases. Since the complete revamp of the Android Emulator
two
years ago, we continue to focus on improving speed, stability and adding a
rich set of features that accelerate your app development and testing. With all
the recent changes, it is definitely worth updating to the latest version of the
Android Emulator to use it today.

Top 5 Features

Quick Boot - Released as a stable feature today, Quick Boot
allows you to resume your Android Emulator session in under 6 seconds. The first
time you start an Android Virtual Device (AVD) with the Android Emulator, it
must perform a cold boot (just like powering on a device), but subsequent starts
are fast and the system is restored to the state at which you closed the
emulator last (similar to waking a device). We accomplished this by completely
re-engineering the legacy emulator snapshot architecture to work with virtual
sensors and GPU acceleration. No additional setup is required because Quick Boot
is enabled by default starting with Android Emulator v27.0.2.

Quick Boot in the Android Emulator

Android CTS Compatibility -With each
release of the Android SDK, we ensure that the Android Emulator is ready for
your app development needs, from testing backwards compatibility with Android
KitKat to integrating the latest APIs of the developer preview. To increase
product quality and reliability of emulator system images, we now qualify final
Android System Image builds from Android Nougat (API 24) and higher against the
Android Compatibility Test
Suite (CTS)—the same testing suite that official Android physical devices
must pass.

Google Play Support -We know that many
app developers use Google Play Services, and it can be difficult to keep the
service up to date in the Android Emulator system images. To solve this problem,
we now offer versions of Android System Images that include the Play Store app.
The Google Play images are available starting with Android Nougat (API 24). With
these new emulator images, you can update Google Play Services via the Play
Store app in your emulator just as you would on a physical Android device. Plus,
you can now test end-to-end install, update, and purchase flows with the Google
Play Store.

Performance Improvements -Making the
emulator fast and performant is an on-going goal for our team. We continuously
look at the performance impact of running the emulator on your development
machine, especially RAM usage. With the latest versions of the Android Emulator,
we now allocate RAM on demand, instead of allocating and pinning the memory to
the max RAM size defined in your AVD. We do this by tapping into the native
hypervisors for Linux (KVM) and macOS® (Hypervisor.Framework), and an
enhanced Intel® HAXM (v6.2.1 and higher) for Microsoft®
Windows®, which uses the new on-demand memory allocation.

Additionally, over the last several releases, we have improved CPU and I/O
performance while enhancing GPU performance, including OpenGL ES 3.0 support.
Looking at a common task such as ADB push highlights the improvements in the
Android CPU and I/O pipelines:

ADB Push Speed Comparison with Android Emulator

For GPU performance, we created a sample GPU emulation stress
test app to gauge improvements over time. We found that the latest emulator
can render higher frame rates than before, and it is one of the few emulators
that can render OpenGL ES 3.0 accurately per the Android specification.

GPU Emulation Stress Test - Android App

GPU Emulation Stress Test with Android Emulator

More Features

In addition to these major features, there are a whole host of additional
features that we have added to the Android Emulator over the last year that you
may not be aware of:

Wi-Fi support - Starting with API 24 system images, you can
create an AVD that both connects to a virtual cellular network and a virtual
Wi-Fi Access Point.

Google Cast support - When using a Google Play system
image, you can cast screen and audio content to Chromecast devices on the same
Wi-Fi network.

Drag and drop APKs & files - Simply drag an APK onto the
Android Emulator window to trigger an app install. Also you can drag any other
data file and find it in the /Downloads folder in your Android Virtual Device.

Host copy & paste - You can copy & paste text between the
Android Emulator and your development machine.

All of these features and improvements are available to download and use now
with Android Emulator v27.0.2+, which you can get via the SDK Manager in Android
Studio. For a fast experience, we recommend creating and running the x86 version
of emulator system images, with the latest Android Emulator, Intel® HAXM (if
applicable) and graphics drivers installed.

We appreciate any feedback on things you like, issues or features you would like
to see. If you find a bug, issue, or have a feature request feel free to file
an issue. We are definitely not done, but we hope you are excited about the
improvements so far.

Android Studio 3.0 is ready to download today. Announced at Google I/O 2017,
Android Studio 3.0 is a large update focused on accelerating your app
development on Android.

This release of Android Studio is packed with many new updates, but there are
three major feature areas you do not want to miss, including: a new suite of app
profiling tools to quickly diagnose performance issues, support for the Kotlin
programming language, and a new set of tools and wizards to accelerate your
development on the latest Android Oreo APIs.

We also invested time in improving stability and performance across many areas
of Android Studio. Thanks to your feedback during the preview versions of
Android Studio 3.0! If you are looking for high stability, want to build high
quality apps for Android Oreo, develop with the Kotlin language, or use the
latest in Android app performance tools, then you should download Android Studio
3.0 today.

Check out the the list of new features in Android Studio 3.0 below, organized by
key developer flows.

What’s new in Android Studio 3.0

Develop

Kotlin Programming Language -As announced
at Google I/O 2017, the Kotlin
programming language is now officially supported for Android development. Kotlin
is an expressive and concise language that is interoperable with existing
Android languages and runtimes, which means you can use as little or as much of
the language in your app as you want. Kotlin is a production-ready language
used by many popular Android apps on Google Play today.

This release of Android Studio is the first milestone of bundles the Kotlin
language support inside the IDE. Many of your favorite features such as code
completion and syntax highlighting work well this release and we will continue
to improve the remaining editor features in upcoming release. You can choose to
add Kotlin to your project using the built-in conversion tool found under
Code → Convert Java File to Kotlin File, or
create a Kotlin enabled project with the New Project Wizard. Lean more about
Kotlin language support
in Android Studio.

Kotlin Language Conversion in Android Studio

Java 8 Language features -In Android
Studio 3.0, we are continuing to improve the support for Java 8 language
features. With the migration
to a javac based toolchain, using Java 8 language features in your project
is even easier. To update your project to support the new Java 8 Language
toolchain, simply update your Source and Target compatibility
levels to 1.8 in the Project Structure dialog. Learn
more.

Layout Editor -The component tree in the
Layout Editor has with better drag-and-drop view insertions, and a new error
panel. Learn
more.

Adaptive Icon Wizard -The new wizard
creates a set of launcher icon assets and provides previews of how your
adaptive icon will look with different launcher screen icon masks. Support for
VectorDrawable layers is new for this release. Learn
more.

Build Speed Improvements -To further
improve the speed of Gradle for larger scale projects with many modules, we
introduced a rare breaking API change in the Android Gradle Plugin to
improve scalability and build times. This change is one of reasons we jumped
version numbers from Android Studio 2.4 to 3.0. If you depend on APIs provided
by the previous Gradle plugin you should validate compatibility with the new
plugin and migrate to the new APIs. To test, update the plugin version in your
build.gradle file. Learn
more.

Test & Debug

Google Play System Images -We also
updated the emulator system images for Android Oreo to now include the Google
Play Store. Bundling in the Google Play store allows you to do end-to-end
testing of apps with Google Play, and provides a convenient way to keep Google
Play services up-to-date in your Android Virtual Device (AVD). Just as Google
Play services updates on physical devices, you can trigger the same updates on
your AVDs.

Google Play Store in Android Emulator

To ensure app security and a consistent experience with physical devices, the
emulator system images with the Google Play store included are signed with a
release key. This means you will not be able to get elevated privileges. If you
require elevated privileges (root) to aid with your app troubleshooting, you can
use the Android Open Source Project (AOSP) emulator system images that do not
include Google apps or services. Learn more.

OpenGL ES 3.0 Support in Android Emulator -The latest version of the Android Emulator has OpenGL ES 3.0 support
for Android Oreo system images along with significant improvements in OpenGL ES
2.0 graphics performance for older emulator system images. Learn
more.

App Bug Reporter in Android Emulator -To
help in documenting bugs in your app, we have added an easier way to generate a
bug report with the Android Emulator with all the necessary configuration
settings and space to capture your repro steps. Learn
more.

Proxy Support in Android -If you use a
proxy to access the Internet, we have added a user interface to manage the HTTP
proxy settings used by the emulator. Lean
more.

Android Emulator Quick Boot (Canary) -One
of the most common pain points we hear is that the emulator takes too long to
boot. To address this concern, we are excited to preview a new feature to solve
this called Quick Boot, which significantly speeds up your emulator start time.
Once enabled, the first time you start an AVD a cold boot will occur (just like
powering on a device), but all subsequent starts are fast and the system is
restored to the state at which you closed the emulator (similar to waking a
device). If you want to try it out, ensure you are on the canary update release
channel and then you will find v26.2.0 of the Android Emulator in the SDK
Manager. Learn
more.

APK Debugging -Android Studio 3.0 allows
you to debug an arbitrary APK. This functionally is especially helpful for those
who develop your Android C++ code in another IDE, but want to debug and analyze
the APK in the context of Android Studio. As long as you have a debuggable
version of your APK, you can use the new APK Debugging features to analyze,
profile & debug the APK. Moreover, if you have access to the sources of your
APK, you can link the source to the APK debugging flow for a higher fidelity
debugging process. Get started by simply selecting Profile or debug
APK from the Android Studio Welcome Screen or File → Profile or
debug APK. Learn
More.

APK Debugging

Layout Inspector -In this release we have
added a few additional enhancements for the Layout Inspector including better
grouping of properties into common categories, as well as search functionality
in both the View Tree and Properties Panels. Learn
more.

Device File Explorer -The new Device File
Explorer in Android Studio 3.0 allows you to view the file and directory
structure of your Android device or emulator. As you are testing your app, you
can now quickly preview and modify app data files directly in Android Studio.
Learn
more.

Android Test Orchestrator Support - When used with
AndroidJUnitRunner 1.0 or higher, the Android Gradle plugin 3.0 supports the use
of the Android Test Orchestrator. The Android Test Orchestrator allows each of
your app's tests to run within its own Instrumentation.
Learn
more.

Optimize

Android Profiler -Android Studio 3.0
includes a brand new suite of tools to help debug performance problems in your
app. We completely rewrote the previous set of Android Monitor tools, and
replaced them with the Android Profiler. Once you deploy your app to a running
device or emulator, click on the Android Profiler tab and you
will now have access to a real-time & unified view of the CPU, Memory, & Network
activity for your app. Each of the performance events are mapped to the UI event
timeline which highlights touch events, key presses, and activity changes so
that you have more context on when and why a certain event happened. Click on
each timeline to dig into each performance aspect of your app. Learn
more.

Android Profiler - Combined timeline view.

CPU Profiler

Memory Profiler

Network Profiler

APK Analyzer Improvements -We also
updated APK Analyzer with additional enhancements to help you further optimize
the size of your APK. Learn
more.

If you are using a previous version of Android Studio, you can upgrade to
Android Studio 3.0 today or you can download the update from the official
Android Studio Preview download
page. As mentioned in this blog, there are some breaking Gradle Plugin API
changes to support new features in the IDE. Therefore, you should also update
your Android Gradle plugin version to 3.0.0 in your current project to test and
validate your app project setup.

We appreciate any feedback on things you like, issues or features you would like
to see. If you find a bug or issue, feel free to file an
issue. Connect with us -- the Android Studio development team ‐ on our Google+ page or on Twitter

Since our public
launch at Google I/O, we've been working hard to improve the developer
experience of building instant apps. Today, we're excited to announce
availability of the Android Instant Apps SDK 1.1 with some highly-requested
features such as improved NDK support, configuration APKs for binary size
reduction, and a new API to maintain user's context when they transition from an
instant app to the installed app.

Introducing configuration APKs

For a great instant app experience, app binaries need to be lean and well
structured. That's why we're introducing configuration APKs.

Configuration APKs allow developers to isolate device-specific resources and
native libraries into independent APKs. For an application that uses
configuration APKs, the Android Instant Apps framework will only load the
resources and native libraries relevant to the user's device, thereby reducing
the total size of the instant app on the device.

We currently support configuration APKs for display density, CPU architecture
(ABI), and language. With these, we have seen an average reduction of 10% in the
size of the binaries loaded. Actual savings for a given app depend on the number
of resource files and native libraries that can be configured.

As an example, a user on an ARM device with LDPI screen density and language set
to Chinese would then receive device-agnostic code and resources, and then only
get the configuration APKs that have ARM native libraries, the Chinese language,
and LDPI resources. They would not receive any of the other configuration APKs
such as the x86 libraries, Spanish language strings, or HDPI resources.

Setting up configuration APKs for your app is a simple change to your gradle
setup. Just follow the steps in our public
documentation.

Persistent user context after installation

On Android Oreo, the internal storage of the instant version of the app is
directly available to the installed version of the app. With this release of the
SDK, we are enabling this functionality on older versions of the Android
Framework, including Lollipop, Marshmallow, and Nougat devices.

To extract the internal storage of the instant app, installed apps can now call
InstantAppsClient.getInstantAppData()
using the Instant Apps Google Play Services API and get a ZIP file of the
instant app's internal storage.

Start building your Android Instant App

It's simple to start building your instant app on the latest SDK. Just open the
SDK Manager in Android Studio and update your Instant Apps Development SDK to
1.1.0. We can't wait to see what instant app experiences you build with these
new features.

Android developers know that dex compilation is a key step in building an APK.
This is the process of transforming .class bytecode into .dex bytecode for the
Android Runtime (or Dalvik, for older versions of Android). The dex compiler
mostly works under the hood in your day-to-day app development, but it directly
impacts your app's build time, .dex file size, and runtime performance.

That's why we are investing in making important improvements in the dex
compiler. We're excited to announce that the next-generation dex compiler, D8,
is now available for preview as part of Android Studio
3.0 Beta release.

When comparing with the current DX compiler, D8 compiles faster and outputs
smaller .dex files, while having the same or better app runtime performance.

How to try it?

D8 is available for your preview starting with Android Studio
3.0 Beta. To try it, set the following in your project's gradle.properties
file:

android.enableD8=true

We have tested D8's correctness and performance on a number of apps, and the
results are encouraging. We're confident enough with the results that we are switching to use D8 as the default dex compiler for building AOSP. There are currently no known
issues, but we would love to hear your feedback. You can file a bug report using
this
link.

What's next?

We plan to preview D8 over the next several months with the Android Studio 3.0
release. During this time, we will focus on addressing any critical bug reports
we receive from the community. We plan to bring D8 out of preview and enable it
as the default dex compiler in Android Studio 3.1. At that time, the DX compiler
will officially be put in maintenance mode. Only critical issues with DX will be
fixed moving forward.

Beyond D8, we are also working on R8, which is a Proguard replacement for whole
program minification and optimization. While the R8 project has already been open sourced, it has not yet been
integrated with the Android Gradle plugin. We will provide more details about R8
in the near future when we are ready to preview it with the community.

Tool developers: get your bytecode tools Java 8 ready

In April, we announced
Java 8 language features with desugaring. The desugaring step currently
happens immediately after Java compilation (javac) and before any bytecode
reading or rewriting tools are run. Over the next couple of months, the desugar
step will move to a later stage in the pipeline, as part of D8. This will allow
us to further reduce the overall build time and produce more optimized code.
This change means that any bytecode reading or rewriting tools will run before
the desugar step. If you develop .class bytecode reading or rewriting tools for
Android, you will need to make sure they can handle the Java 8 bytecode format
so they can continue to work properly when we move desugaring into D8.

Earlier
this year, we began testing Android
Instant Apps, a new way to run Android apps without requiring installation.
Thanks to our incredible developer community, we received a ton of feedback that
has helped us refine the end-to-end product experience.

Today, we're opening Android Instant Apps to all developers, so anyone can build
and publish an instant app. There are also more than 50 new experiences
available for users to try from a variety of developers, such as HotPads, Jet,
the New York Times, Vimeo, and One Football. While these experiences have only
been live for a short amount of time, the early data shows positive results. For
example, Jet and HotPads are seeing double digit increases in purchases and
leads generated.

(left to right: One Football, Dotloop, Jet, Vimeo, HotPads and The New York Times)

Feedback from our early partners has directly shaped the development tools we're
making available to all of you today.

To get started building an instant app, head over to developer.android.com and
download the latest preview of Android
Studio 3.0 and the Android Instant Apps SDK. You'll continue to use a single
codebase. Android Studio provides the tools you need to modularize your app so
that features can be downloaded as needed. Every app is different, but we've
seen with our early partners that with the latest tools, instant app development
typically takes about 4-6 weeks.

Once you've built your app, the Play Console provides support for distributing
your instant app. You just upload your instant app APKs together with your
installable APK.

Instant Apps continues to ramp up on the latest Android devices in more than 40
countries. And with Android O, we've gone further, building a new, more
efficient runtime sandbox for instant apps, sharable support libraries to reduce
app size, and launcher integration support.

For those of you who tried the Jack compiler, we now support the same set of
Java 8 language features but with faster build speed. You can use Java 8
language features together with tools that rely on bytecode, including Instant
Run. Using libraries written with Java 8 is also supported.

We first added Java 8 desugaring in Android Studio 2.4 Preview 4. Preview 6
includes important bug fixes related to Java 8 language features support. Many
of these fixes were made in response to bug reports you filed. We really
appreciate your help in improving Android development tools for the community!

It's easy to try using Java 8 language features in your Android project. Just
download Android Studio
2.4 Preview 6, and update your project's target and source compatibility to
Java version 1.8. You can find more information in our preview
documentation.

Robinhood allows users to buy and sell stocks commission-free* in the US. It is designed to make financial investment easy for all users, even if you’ve never traded before.

With a team of two Android developers, the company has relied on fast tools like
Android Studio to
build rich new features, which have helped make Robinhood the highest-rated
stock brokerage app on Google Play.