This page lists the new features introduced in Android Studio preview releases. The preview builds provide early access to the latest features and improvements in Android Studio. You can download these preview versions. If you encounter any problems using a preview version of Android Studio, let us know. Your bug reports help to make Android Studio better.
Canary releases contain leading edge features under active development, and are lightly tested. While you can use Canary builds for development, be aware that features might be added or changed. Release Candidates (RC) are the next version of Android Studio, and are almost ready for stable release. The feature set for the next version has been stabilized. See Android Studio release names to understand Android Studio version naming.
For the latest news on Android Studio preview releases, including a list of notable fixes in each preview release, see the Release Updates in the Android Studio blog.
Current versions of Android Studio
The following table lists the current versions of Android Studio and their respective channels.
Version | Channel |
---|---|
Android Studio Narwhal Feature Drop | 2025.1.2 | Stable |
Android Gradle plugin 8.12.0 | Stable |
Android Studio Narwhal 3 Feature Drop | 2025.1.3 | RC |
Android Studio Narwhal 4 Feature Drop | 2025.1.4 | Canary |
Compatibility with Android Gradle plugin previews
Each preview version of Android Studio is published alongside a corresponding version of the Android Gradle plugin (AGP). Preview versions of Studio should work with any compatible stable version of AGP. However, if you're using a preview version of AGP, you must use the corresponding preview version of Studio (for example, Android Studio Chipmunk Canary 7 with AGP 7.2.0-alpha07). Attempts to use divergent versions (for example, Android Studio Chipmunk Beta 1 with AGP 7.2.0-alpha07) will cause a Sync failure, which results in a prompt to update to the corresponding version of AGP.
For a detailed log of Android Gradle plugin API deprecations and removals, see the Android Gradle plugin API updates.
Studio Labs
Studio Labs lets you try out the latest AI experimental features in a stable version of Android Studio, so you can more quickly integrate our AI assistance offerings in your development workflow. For more information, see Studio Labs.
The following are features currently available in Studio Labs.
Feature | Description | Docs |
---|---|---|
Compose preview generation | Gemini can automatically generate Compose previews, including mock data for preview parameters, for a specific composable or all composables in a file. | Generate Compose previews |
Attach images | Attach an image to your query to help generate UI, debug UI bugs, document an app's architecture, and more. | Attach images |
Attach files | Attach files to your query to help Gemini better understand the context for your question and identify what code needs to be updated. | Attach files |
Transform UI | Use natural language to update your app UI directly from the Compose preview panel. | Transform UI |
Android Studio Narwhal 3 Feature Drop | 2025.1.3
The following are new features in Android Studio Narwhal 3 Feature Drop | 2025.1.3.
To see what's been fixed in this version of Android Studio, see the closed issues.
Resizable Compose previews
Compose Preview now supports dynamic resizing to give you instant visual feedback on how your UI adapts to different screen sizes.
To use the feature, enter Focus mode in Compose Preview by changing the view option on the toolbar:

You can now resize the preview window by dragging its edges:
Or, you can use the resize toolbar, which is shown after the preview has been resized:
If you want to save the new size as a new Preview
annotation, use the
right-click menu:

The dynamic resize feature helps you create UIs that look great on any screen size.
Android view setting to display build files under corresponding modules
There is a new setting to display build files under their corresponding module
in the Android view. This view can be helpful when you work on projects with
many modules. To enable the view open the Options
menu available next to the Android view.
Then select Appearance > Display Build Files In Module.

Play Policy Insights in Android Studio
Android Studio now includes richer insights and guidance on Google Play policies that may impact your app. This information helps you build safer apps from the start, preventing issues that could disrupt your launch process and cost more time and resources to fix later on.
Starting with Android Studio Narwhal 3 Feature Drop, you can see Play Policy Insights as lint checks. These lint checks will present the following information:
- An overview of the policy.
- Dos and don'ts to avoid common pitfalls.
- Links to Play policy pages where you can find the full formal policy and more helpful information and resources.
This feature is intended to provide helpful pre-review guidance so you can have smoother app submission experiences. It does not cover every policy, nor does it provide final app review decisions. Always review the full policy in the Policy Center for guidance. We are also actively evolving and improving this integration. If you have any feedback, please report it.
To see if there are any Play Policy Insights for your project, go to Code > Inspect for Play Policy Insights… Insights will be listed in the 'Problems' tool window and they will also appear as Lint warnings in the corresponding files.

Test and develop with app backup and restore
Ensuring Android Backup and Restore works properly for your app is a critical aspect of ensuring users stay engaged with your app after switching to a new device or restoring from the cloud. However, testing whether data backup and restore is working for your app can be difficult.
Android Studio Narwhal provides ways for you to generate a backup for your app and restore it to another device. This can be useful for testing whether your app behaves as expected when restoring app data from device to device or from a cloud backup, or if you want a faster way to set up a test device with data you need to develop and debug your app.
Generate a backup
To generate a backup file, do the following:
- Deploy a debug version of your app to a connected device
- Use one of the following actions to generate a backup:
- From the Running Device window, click the Backup App Data action from the toolbar
- Select Run > Backup App Data from the main menu bar
- From the Device Explorer > Processes tab, right-click on the app process and select Backup App Data
- In the dialog that appears, do the following:
- Confirm the application ID for the app you want to generate a backup for
- Select whether you want to generate a Device to Device, Cloud, or Cloud (Unencrypted) backup
- Confirm the name and location of the backup you want to save. By
default, the backup is saved to the root directory of the current
Android Studio project.
Generate a backup for your app.
- Confirm the application ID for the app you want to generate a backup for
- Click Ok when Android Studio asks if it can stop the app. To generate the backup, Android Studio must stop the app process.
You can view the backups that you generate in the Project > Android tool window under the Backup Files node.
Backup types
You can generate different types of backup for your app. When generating a backup, select the backup type that relates to the scenario you want to test:
- Device-to-device: Generates a backup of your app, similar to one created during device-to-device transfer. In device-to-device transfers the app's backup data is sent directly to another device, for example over USB or Wi-Fi.
- Cloud: Generates a backup of your app, similar to one saved to the user's Google Account storage. When a user sets up a new device, they can choose to restore from a Cloud backup.
- Cloud (unencrypted): Generates a backup of your app, similar to one saved to the user's Google Account storage on a device which does not have client side encryption enabled.
Note: When using the feature to test Cloud, Cloud (Unencrypted) or Device to Device backups, the generated backup is not sent to Cloud or to another device, unlike actual backup flow. It generates the backup of your app as if it was going to be saved to Cloud or to be sent to another device. The backups generated for any Backup type can be under Backup Files in Project > Android tool window.
Restore app data
To restore app data, do the following:
- Deploy your app to the connected device. The app should have the same application ID as the backup file you want to restore onto the device.
- Navigate to and click one of the following actions:
- From the Running Device window, click the Restore App Data action from the toolbar, and either select a backup file from the recent history or click Browse.
- Navigate to Run > Restore App Data from the main menu bar.
- From the Device Explorer > Processes tab, right-click on the app process and select Restore App Data.
- From the Project > Android tool window, right-click on a backup under the Backup Files node and select Restore App Data.
- If applicable, either select a backup from the recent history or click Browse to select a backup file to restore from local storage.
Alternatively, you can include a backup file as part of a run configuration, so that deploying your app also restores the app data from a backup file. To do this, do the following:
- Navigate to Run > Edit Configurations from the main menu bar.
- Select an app run configuration and navigate to Restore options.
Restore options in a run configuration. - To restore an app from a backup, check the box next to Restore app state.
- Either select a backup file from recent history or browse and select the backup file from local storage.
- If you only want to restore app data on a fresh app installation, check the box next to Only restore on fresh apk installation. This option can be helpful if you are deploying to a new test device and want to restore data to aid in debugging and app development.
- Click OK to save the run configuration.
- Deploy your app using the run configuration to test restoring your app data to a connected device.
Proguard inspections
Android Studio now includes inspections to prevent poorly crafted Proguard
rules, or rules that prevent R8 optimizations. Overly broad keep rules such as
-keep class **.*
and consumer Proguard rule configurations such as
dontshrink
and -dontoptimize
trigger a warning now in the Studio IDE. To
craft a good keep rule that allows for code shrinking, scope the rule to a
specific package and be explicit about what you want to keep.
AGENT.md files for project-level context
You can now include AGENT.md
files in your project. These are Markdown files
that provide project-specific instructions, coding style rules, and other
guidance to Gemini as context.
Gemini automatically discovers and applies instructions from any file named
AGENT.md
in your project. If an AGENT.md
file is not present, Gemini instead
looks for a GEMINI.md
file as a fallback.
New setting to disable Automatic Sync
Android Studio now offers a setting to switch from the default Automatic Sync mode (e.g. Sync runs automatically when a project is opened) to a new Manual Sync mode with reminders. The default behavior is still Automatic Sync. To switch to Manual Sync go to File (Android Studio on macOS) > Settings > Build, Execution, Deployment > Build Tools and set Project Sync mode to Manual Sync with reminders as the Project Sync mode.
Features graduating from Studio Labs
The following experimental features from Studio Labs are stable beginning in Narwhal 3 Feature Drop:
Android Studio Narwhal 4 Feature Drop | 2025.1.4
The following are new features in Android Studio Narwhal 4 Feature Drop | 2025.1.4.
To see what's been fixed in this version of Android Studio, see the closed issues.
Journeys for Android Studio
Journeys for Android Studio helps make end-to-end tests easy to write and maintain by letting you use natural language to describe the steps and assertions for each test—called a journey. By leveraging Gemini's vision and reasoning capabilities, steps written in natural language are converted into actions that Gemini performs on your app, making it both easy to write and understand your journeys. Additionally, you can write and describe more complex assertions, which Gemini evaluates based on what it sees on the device in order to determine whether your journeys pass or fail.
And because Gemini reasons about which actions to perform to satisfy the goals, journeys are more resilient to subtle changes to your app's layout or behavior, resulting in fewer flaky tests when running against different versions of your app and different device configurations.
Write and run journeys right from Android Studio against any local or remote Android device. The IDE provides a new editor experience for crafting journeys as well as rich results that help you better follow Gemini's reasoning and execution of your journey.
Backup and Sync

You can now back up Android Studio settings to cloud storage using either your Google or JetBrains account. This helps sync your settings, such as keymaps, Code Editor settings, system settings, and more. To get started, do one of the following:
After opening a project in Android Studio, sign into your Google Account by clicking the avatar in the top-right corner of the IDE, and clicking Sign in.
- Follow the prompts in the dialog that appears and make sure to check the box to authorize Android Studio to access your Google Account Storage.
- Follow the prompts to authorize Android Studio.
Navigate to Settings > Backup and Sync.
- Select Google to use your Google Account Storage to sync your app data across Android Studio installs. Alternatively, you can use a JetBrains account to sync your app data across IntelliJ and Android Studio installs.
- After you follow the prompts to authorize Android Studio to access your preferred account's storage, return to Android Studio.
- On the Settings > Backup and Sync page, you can review the categories of app data that you want to sync to your account.
- To disable Backup and Sync, uncheck the box that enables the feature.
If you already have data synced to your selected device, Android Studio gives you the option to either download settings from your remote storage (this is the default option) or upload your local settings and overwrite settings synced to your remote storage.
Suggested fixes for crashes
In Android Studio Meerkat Feature Drop, we launched Gemini insights for crashes reported in the App Quality Insights tool window. Now, Android Studio can use Gemini to analyze the crash data along with your source code to suggest potential fixes. After selecting a crash in the App Quality Insights tool window, navigate to the Insights tab and click Suggest a fix after Gemini generates an insight for the crash. Gemini then generates suggested code changes that you can review and accept in an editor diff tab.

New setting to open new projects with the Project view
There is a new setting to have new projects open in Project view by default. To enable the setting go to File (Android Studio on macOS) > Settings > Advanced Settings > Project View and select Set Project view as the default.
Compose Preview Screenshot Testing tool
Use the Compose Preview Screenshot Testing tool to test your Compose UIs and prevent regressions. The new tool helps you generate HTML reports that let you visually detect any changes to your app's UI. Learn more at Compose Preview Screenshot Testing.
Embedded Layout Inspector component tree enhancement
Interacting with the component tree in the Embedded Layout Inspector is now more intuitive and efficient thanks to several key improvements. These updates are designed to streamline your workflow and provide clearer insights into your Compose UI structures.
- Horizontal Scrolling: You can now scroll horizontally within the component tree, making it easier to navigate and inspect wide or deeply nested layouts without losing context.
- Automatic Scrolling on Selection: Selecting an item in the component tree will now automatically scroll the view, both horizontally and vertically, to bring the selected item neatly into focus. This ensures the element you're interested in is always front and center.
- Improved Relationship Visualization: We've refined the support lines within the component tree to offer more explicit visual cues for understanding node relationships. Dotted lines now clearly indicate a call stack relationship between a parent and its child node, helping you trace programmatic connections more effectively. Solid lines continue to represent all other standard parent-child relationships within the tree.
These enhancements aim to provide a smoother, more efficient debugging experience, allowing you to quickly understand and refine your UI.

Use a local LLM
Android Studio Narwhal 4 Feature Drop lets you choose the LLM that powers the IDE's AI features.

The LLM must be on your local machine, which is advantageous if you have limited internet connectivity or restrictions regarding the use of AI models, or you just want to experiment with open-source research models.
A local LLM offers an alternative to the LLM support built into Android Studio. However, Gemini in Android Studio typically provides the best Android development experience because Gemini is tuned for Android and supports all features of Android Studio. With Gemini, you can choose from a variety of models for your Android development tasks, including the no-cost default model or models accessed with a paid Gemini API key.
Support for local LLMs requires installation of an LLM provider such as LM Studio or Ollama on your local computer along with a compatible model of your choice.
Android SDK Upgrade Assistant now supports Android 16 / API 36
The migration from Android 15 / API 35 to Android 16 / API 36 has been added to the Android SDK Upgrade Assistant. To get help migrating, go to Tools > Android SDK Upgrade Assistant.
Android Gradle plugin 9.0
Android Gradle plugin 9.0 is a new major release of AGP, and brings API and behavior changes.
To update to Android Gradle plugin 9.0.0-alpha02, use the Android Gradle plugin Upgrade Assistant in Android Studio Narwhal 4 Feature Drop | 2025.1.4.
The AGP upgrade assistant helps preserve existing behaviors when upgrading your project when appropriate, allowing you to upgrade your project to use AGP 9.0, even if you're not ready to adopt all the new defaults in AGP 9.0.
Compatibility
The maximum Android API level that Android Gradle plugin 9.0.0-alpha02 supports is API level 36.
Android Gradle plugin 9.0.0-alpha02 requires Gradle 9.0.0.
Minimum version | Default version | Notes | |
---|---|---|---|
Gradle | 9.0.0 | 9.0.0 | To learn more, see updating Gradle. |
SDK Build Tools | 35.0.0 | 35.0.0 | Install or configure SDK Build Tools. |
NDK | N/A | 28.2.13676358 | Install or configure a different version of the NDK. |
JDK | 17 | 17 | To learn more, see setting the JDK version. |
Behavior changes
Android Gradle plugin 9.0 has the following new behaviors:
Behavior | Recommendation |
---|---|
Android Gradle plugin 9.0 uses NDK version r28c by default.
|
Consider specifying the NDK version you want to use explicitly. |
Android Gradle plugin 9.0 by default requires consumers of a library to use the same or higher compile SDK version. |
Use the same or higher compile SDK when consuming a library.
If this is not possible, or you want to give consumers of a library you
publish more time to switch, set
AarMetadata.minCompileSdk
explicitly.
|
AGP 9.0 includes updates to the following Gradle properties' defaults. This gives you the choise to preserve the AGP 8.13 behavior when upgrading:
Property | Function | Change from AGP 8.13 to AGP 9.0 | Recommendation |
---|---|---|---|
android.uniquePackageNames |
Enforces that each library has a distinct package name. | false → true |
Specify unique package names for all libraries within your project. If that is not possible, you can disable this flag while you migrate. |
android.dependency.useConstraints |
Controls the use of dependency constraints between configurations. The default in AGP 9.0 is false which only uses constraints in application device tests (AndroidTest).
Setting this to true will revert back to the 8.13 behavior.
|
true → false |
Don't use dependency constraints everywhere unless you need them. Accepting the new default of this flag also enables optimizations in the project import process which should reduce the import time for builds with many android library subprojects. |
aandroid.enableAppCompileTimeRClass |
Compile code in applications against a non-final R class, bringing
application compilation in line with library compilation. This improves incrementality and paves the way for future performance optimizations to the resource processing flow. |
false → true |
Many projects can just adopt the new behavior with no source changes. If the R class fields are used anywhere that requires a constant, such as switch cases, refactor to use chained if statements. |
android.sdk.defaultTargetSdkToCompileSdkIfUnset |
Uses the compile SDK version as the default value for the target SDK
version in apps and tests. Before this change, the target SDK version would default to the min SDK version. |
false → true |
Specify the target SDK version explicitly for apps and tests. |
android.onlyEnableUnitTestForTheTestedBuildType |
Only creates unit test components for the tested build type. In the default project this results in a single unit test for debug, where the previous behavor was to have unit tests run for debug or release. |
false → true |
If your project doesn't require tests to run for both debug and release, no change is required. |
android.proguard.failOnMissingFiles |
Fails the build with an error if any of the keep files specified in the AGP DSL don't exist on disk. Before this change typos in filenames would result in files being silently ignored. | false → true |
Remove any invalid proguard files declarations |
android.r8.optimizedResourceShrinking |
Allows R8 to keep fewer Android resources by considering classes and Android resources together. | false → true |
If your project's keep rules are already complete, no change is required. |
android.r8.strictFullModeForKeepRules |
Allows R8 to keep less by not implicitly keeping the default constructor
when a class is kept.
That is, -keep class A no longer implies
-keep class A { <init>(); } |
false → true |
If your project's keep rules are already complete, no change is required.
Replace -keep class A
with
-keep class A { <init>(); }
in your project's keep rules for any cases where you need the default
constructor to be kept.
|
android.defaults.buildfeatures.shaders |
Enables shader compilation in all subprojects | true → false |
Enable shader compilation in only the subprojects that contain shaders to
be compiled by setting the following in those projects' Gradle build
files:
android { buildFeatures { shaders = true } } |
Removed features
Android Gradle plugin 9.0 removes the following functionality:
- Embedded Wear OS app support
AGP 9.0 removes support for embedding Wear OS apps, which is no longer supported in Play. This includes removing thewearApp
configurations and theAndroidSourceSet.wearAppConfigurationName
DSL. See Distribute to Wear OS for how to publish your app to Wear OS.
Changed DSL
Android Gradle plugin 9.0 has the following breaking DSL changes:
- The parameterization of
CommonExtension
has been removed. In itself, this is only a source-level breaking change to help avoid future source level breaking changes, but it also means that the DSL block methods need to move fromCommonExtension
toApplicationExtension
,LibraryExension
,DynamicFeatureExtension
andTestExtension
.
Removed DSL
Android Gradle plugin 9.0 removes:
AndroidSourceSet.jni
, because it was not functional.AndroidSourceSet.wearAppConfigurationName
, as it relates to the removed embedded Wear OS app support.BuildType.isRenderscriptDebuggable
, because it was not functional.ComponentBuilder.enabled
. It is replaced byComponentBuilder.enable
.Installation.installOptions(String)
. It is replaced by the mutable property ofInstallation.installOptions
.VariantBuilder.targetSdk
andtargetSdkPreview
, as they were not meaningful in libraries. UseGeneratesApkBuilder.targetSdk
orGeneratesApkBuilder.targetSdkPreview
instead.The experimental, but never stabilized
PostProcessing
block.ProductFlavor.setDimension
, which is replaced by thedimension
propertyVariant.unitTest
, as it was not applicable to thecom.android.test
plugin.unitTest
is available onVariantBuilder
subtypes extendingHasUnitTest
.VariantBuilder.enableUnitTest
, as it was not applicable to thecom.android.test
plugin.enableUnitTest
is available onVariantBuilder
subtypes extendingHasUnitTestBuilder
.VariantBuilder.unitTestEnabled
is removed in favor of the more consistently namedenableUnitTest
on theVariantBuilder
subtypes extendingHasUnitTestBuilder
.
Removed Gradle properties
The following Gradle properties were initially added as ways to globally disable features that were enabled by default.
These features have been disabled by default since AGP 8.0 or lower. Enable these features in only the sub-projects that use them for a more efficient build.
Property | Function | Replacement |
---|---|---|
android.defaults.buildfeatures.aidl |
Enables AIDL compilation in all subprojects |
Enable AIDL compilation in only the subprojects where there are
AIDL sources
by setting the following property in those projects' Gradle build files:
android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript |
Enables RenderScript compilation in all subprojects |
Enable renderscript compilation in only the subprojects where there are
renderscript sources
by setting the following property in those projects' Gradle build files:
android { buildFeatures { renderScript = true } } |
Removed APIs
Android Gradle plugin 9.0 removes:
- The deprecated and disabled
BaseExtension.registerTransform
APIs, which only remained to allow compiling against the latest AGP version while targeting running on AGP 4.2 or lower.
Enforced Gradle properties
AGP 9.0 throws an error if you set the following Gradle properties.
The Android Gradle plugin Upgrade Assistant won't upgrade projects to AGP 9.0 that use these properties.
Property | Function |
---|---|
android.r8.integratedResourceShrinking |
Resource shrinking is now always run as part of R8, the previous implementation has been removed. |