Project Marble: Android Studio 3.3 Stable Release

Akshay Nandwana
MindOrks
Published in
7 min readJan 15, 2019

Android Studio latest version 3.3 released in the stable version which developers are calling project marble.

In this release, focus areas are reducing the number of crashes, hangs, memory leaks, and user-impacting bugs. As the developers are saying “This release of Android Studio is a solid milestone for the product”. Download Android Studio 3.3.

Develop

  • Navigation Editor
  • IntelliJ 2018.2.2 Platform Update
  • Kotlin 1.3.11 Update
  • Clang-Tidy Support for C++
  • New Project Wizard update
  • Delete Unused IDE Directories
  • IDE User Feedback

Build

  • Improved incremental Java compilation when using annotation processors
  • Lazy task configuration
  • Single-variant project sync
  • Android App Bundles now supports Instant Apps

Test

  • Multiple Emulator AVD instance Launch
  • Android 9 Pie — Emulator System Images
  • Emulator Snapshot Save Speed Improvement

Optimize

  • Profiler Performance Improvements
  • Memory Profiler: Allocation Tracking Options
  • Network Profiler: Formatted Text
  • CPU Profiler: Frame Rendering Data

Let’s discuss them one by one:

Develop

Navigation Editor — The Navigation Editor lets you quickly visualize and build navigation into your app by using the Navigation Architecture Component. It is a visual editor which allows you to construct XML resources. With the Navigation Editor and the Navigation Component, you can build predictable interactions between the screens and content areas of your app. Learn more.

Implement navigation with the Navigation Architecture Component

IntelliJ 2018.2.2 Platform Update — The core Android Studio IDE updated with improvements from IntelliJ IDEA through the 2018.2.2 release. New preview editor, updated icons, MacBook Touch Bar support, plus enhanced version control integrations. Learn more.

Kotlin 1.3.11 Update — This release of Android Studio bundles Kotlin 1.3.11, with support for Kotlin coroutines and contracts plus IDE support for the recommend Kotlin coding style. Learn more.

Clang-Tidy Support for C++ — Android Studio now includes support for static code analysis using Clang-Tidy for projects that include native code. To enable support for Clang-Tidy, update your NDK to r18 or higher.

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 Options section of the right-most panel. To allow additional checks, add them to the list and click Apply.

To configure Clang-Tidy with additional options, click Configure Clang-Tidy Checks Options and add them in the dialog that opens. Learn more.

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

Delete Unused IDE Directories — 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 found. Past versions of Android Studio left these old directories that were hard to find and remove on your hard drive.

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.

IDE User Feedback — 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:

Just 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 understand your sentiment better. In some cases, such as when you indicate a negative experience with the IDE, you’ll have an opportunity to provide additional feedback.

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 to Send usage statistics to Google.

Build

Improved incremental Java compilation when using annotation processors — Android Studio 3.3 decreases build time by improving support for incremental Java compilation when using annotation processors. The optimization requires Android Gradle plugin 3.3.0 or higher. Learn more.

Lazy task configuration — The plugin uses Gradle’s new task creation API to avoid initializing and configuring tasks that are not required to complete the current build (or tasks not on the execution task graph). For example, if you have multiple build variants, such as “release” and “debug” build variants, and you’re building the “debug” version of your app, the plugin avoids initializing and configuring tasks for the “release” version of your app. Learn more.

Single-variant project sync — Along with build speed, project sync speed can be a development bottleneck to for those who have large app projects with multiple build variants. In this version of the IDE, you can you can limit syncing to only the active build variant. In order for this optimization to work, your project needs to use Android Gradle plugin 3.3.0 or higher. You can enable this option under the Experimental preferences in Android Studio 3.3. 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.

Android App Bundles now supports Instant Apps — You can now build and deploy Google Play Instant experiences from a single Android Studio project, and include them in a single Android App Bundle. Learn more.

Test

Multiple Emulator AVD instance Launch — Android Emulator 28.0 now supports the ability to launch multiple instances of the same Android Virtual Device (AVD). Each instance of the AVD uses a minimal set of system resources. For those developers with continuous integration (CI) testing environments, this can be a convenient way to run tests in parallel off one AVD configuration. On the command line run the following commands:

$./emulator -avd <avdname> -read-only &
$./emulator -avd <avdname> -read-only &

Android 9 Pie — Emulator System Images — Alongside Android Studio 3.3, you can also download Android 9 system images for your emulator for your app testing. The Google Play emulator system images not only passe the official Android Compatibility Test Suite (CTS), they also include support for Peer-to-Peer Wi-Fi direct connections between two emulators. To start using this feature, launch the emulator (v28.0.22 or higher) via the command line and ensure the two emulators share the same Wi-Fi server and client port command line arguments.

$./emulator @<server-avd-name> -wifi-server-port 9999
$./emulator @<client-avd-name> -wifi-client-port 9999

Emulator Snapshot Save Speed — The time taken to close the emulator and Quickboot save a snapshot was slow. To solve this, they optimized the way snapshots are saved and managed, using a mapped file to save guest RAM. From aggregate metrics, they found that this optimization led to driving down the average quickboot save time from the last stable version to now from 27 seconds down to 3 seconds — a 8x improvement. Learn more here.

Optimize

Profiler Performance Improvements — Based on our feedback, they have dramatically improved Android Studio performance while using the profilers in this release. They have seen improvements on average of 2x in frame rates in our local tests.

Memory Profiler: Allocation Tracking Options — In previous releases, our app performs significantly worse while profiling with the default settings. To address this, they have changed the default Memory Profiler capture mode on Android 8.0 Oreo (API level 26) and higher devices to sample for allocations periodically. You can adjust this setting in the Allocation Tracking dropdown menu. By default, they also now temporarily turn off allocation tracking during CPU recordings to minimize the impact on recording results. Learn more.

Network Profiler: Formatted Text — The Network profiler in Android Studio 3.3 now formats common text types found in network payloads by default, including HTML, XML and JSON. You can toggle between formatted and raw text by navigating to either the Response or Request tab, and click on the View Parsed / View Source link. Learn more.

CPU Profiler: Frame Rendering Data — The CPU Profiler now shows you the render time for each frame on the main UI thread and Render Thread when you record with Trace System Calls. If you are trying to investigate and understand the bottlenecks or the source of UI jank in your app, this data can come in handy to see where you can improve your app performance. Learn more.

Thanks for reading! If you find this reading useful, please click the 👏 button and share to help others find it! Feel free to leave a comment 💬 below.
Have feedback? Let’s be friends
on Twitter.

--

--

Akshay Nandwana
MindOrks

Founder @AndroidEngineers | Ex-Android Engineer @Zee5 @Google @Doubtnut | 9k+ LinkedIn | Jetpack Compose | Android | Kotlin | Ex-GDSC Lead | Ex-GSoC Mentor