Welcome! Android 10 has many new APIs for building new experiences, as well as updated system behaviors that can affect your app when it's running on Android 10 devices.

To get started, we recommend reviewing the[system behavior changes](https://developer.android.com/about/versions/10/behavior-changes-all),[privacy changes](https://developer.android.com/about/versions/10/privacy/changes), and[new features and APIs](https://developer.android.com/about/versions/10/highlights), then migrating your apps in these two phases:

1. [Ensure basic compatibility](https://developer.android.com/about/versions/10/migration#compat). As soon as possible, make sure your existing published app is ready for users who are updating or purchasing new devices running Android 10. Test your app to verify that it's fully functional, then publish the compatible version of the app to users.
2. [Build with Android 10 features and APIs](https://developer.android.com/about/versions/10/migration#use_apis). Next, explore the new features and APIs in Android 10. Set up your development environment, change your app's`targetSdkVersion`, and build with the new APIs that are relevant for your app.

The following sections highlight what you'll need to do in each of these phases. Before you get started, make sure you've[prepared a hardware device](https://developer.android.com/about/versions/10/get)or emulator) to run and test your app.

## Phase 1: Basic compatibility

The goal of this phase is to identify any functionality regressions or other impacts when your app is running on Android 10, then address them and publish an updated version to users. In many cases you shouldn't need to change your app's`targetSdkVersion`or use new APIs, although you can optionally change your`compileSdkVersion`to support compatibility.

It's important to test the functionality of your existing app through all flows, because some platform changes can affect the way your app behaves. When you publish the compatible version of your app, we recommend notifying users of Android 10 support in your update notes.

To give your users a smooth transition to Android 10, we recommend publishing a compatible version of your app as early as possible --- ideally before devices begin receiving Android 10 updates.

![](https://developer.android.com/static/images/about/versions/10/q-compat-flow.png)

### Perform testing

Compatibility testing entails the same type of testing you perform when preparing to release your app. This is a good time to review the[core app quality guidelines](https://developer.android.com/develop/quality-guidelines/core-app-quality)and[best practices for testing](https://developer.android.com/training/testing).

Make sure to familiarize yourself with the known behavior changes that can affect your app.[These behavior changes](https://developer.android.com/about/versions/10/behavior-changes-all)will apply to your app, even if you haven't changed your`targetSdkVersion`. Reviewing the changes in advance will help you to identify possible impact areas and debug any issues more quickly.

Android 10 includes extensive changes for privacy, so make sure you also[review the key privacy changes](https://developer.android.com/about/versions/10/privacy/changes)and understand the possible impacts on your app.

## Phase 2: Build with Android 10

Whenever you are ready, you can explore the new features and APIs in Android 10 and enhance your app with new experiences. To start developing with the new APIs, you'll need to set up the Android 10 (API 29) SDK in Android Studio and change both your`targetSdkVersion`and`compileSdkVersion`to`29`.

When you change your`targetSdkVersion`, you'll also need to account for[system behavior changes](https://developer.android.com/about/versions/10/behavior-changes-10)that apply to your app when you are targeting Android 10 (API 29) or higher.

Some behavior changes might cause regressions or crashes, so make sure to review the changes and test thoroughly before publishing an app update that changes your`targetSdkVersion`.
| **Note:** The previously described steps to[ensure platform compatibility](https://developer.android.com/about/versions/10/migration#compat)are prerequisite to targeting your app to Android 10, so be sure to complete those steps first.

![](https://developer.android.com/static/images/about/versions/10/q-building-flow.png)

### Get the SDK

To get the SDK packages to build your app with Android 10, first make sure you're using the latest version of[Android Studio](https://developer.android.com/studio). To learn more, read[Set up the SDK](https://developer.android.com/about/versions/10/setup-sdk).

### Perform testing

With the previously described preparations complete, you can build your app and then test it further to make sure it works properly when targeting Android 10. This is another good time to review the[core app quality guidelines](https://developer.android.com/develop/quality-guidelines/core-app-quality)and[best practices for testing](https://developer.android.com/training/testing).

When you build your app with the`targetSdkVersion`set to`29`, there are specific platform changes you should be aware of. Some of these changes, which are described on the[Android 10 behavior changes](https://developer.android.com/about/versions/10/behavior-changes-10)page, can significantly affect your app's behavior or cause crashes --- even if you don't yet use new APIs.