| **Important:** From August 2021, new apps are required to publish with the[Android App Bundle](https://developer.android.com/guide/app-bundle)on Google Play. New apps larger than 200 MB are now supported by either[Play Feature Delivery](https://developer.android.com/guide/app-bundle/dynamic-delivery)or[Play Asset Delivery](https://developer.android.com/guide/app-bundle/asset-delivery). From June 2023, new and existing[TV apps are required to be published as App Bundles](https://developer.android.com/docs/quality-guidelines/tv-app-quality#SC-E1).

Publishing is the general process that makes your Android app available to users. When you publish an Android app, you do the following:

- **Prepare the app for release.**

  During the preparation step, you build a release version of your app.
- **Release the app to users.**

  During the release step, you publicize, sell, and distribute the release version of your app, which users can download and install on their Android-powered devices.

This page provides an overview of the process for preparing to publish your app. If you plan to publish on Google Play, read[Release with confidence](https://developer.android.com/distribute/best-practices/launch/launch-checklist).

If you use a Continuous Integration server, you can configure it to automate the steps outlined here. You can also configure it to push builds to your[internal test distribution channel](https://developer.android.com/studio/publish/upload-bundle#test_with_play).

## Prepare your app for release

Preparing your app for release is a multistep process involving the following tasks:

- **Configure your app for release.**

  At a minimum, you need to make sure that logging is disabled and removed and that your release variant has`debuggable false`for Groovy or`isDebuggable = false`for Kotlin script set. You should also[set your app's version information](https://developer.android.com/studio/publish/versioning).
- **Build and sign a release version of your app.**

  You can use the Gradle build files with the*release* build type to build and sign a release version of your app. For more information, see[Build and run your app](https://developer.android.com/tools/building/building-studio).
- **Test the release version of your app.**

  Before you distribute your app, you should thoroughly test the release version on at least one target handset device and one target tablet device.[Firebase Test Lab](https://firebase.google.com/docs/test-lab/android/get-started)is useful for testing across a variety of devices and configurations.
- **Update app resources for release.**

  Make sure that all app resources, such as multimedia files and graphics, are updated and included with your app or staged on the proper production servers.
- **Prepare remote servers and services that your app depends on.**

  If your app depends on external servers or services, make sure they are secure and production ready.

You might need to perform several other tasks as part of the preparation process. For example, you need to create an account on the app marketplace you want to use, if you don't already have one. You also need to create an icon for your app, and you might want to prepare an End User License Agreement (EULA) to protect yourself, your organization, and your intellectual property.

To learn how to prepare your app for release, see[Prepare for release](https://developer.android.com/tools/publishing/preparing)for step-by-step instructions for configuring and building a release version of your app.

When you are finished preparing your app for release, you have a signed APK file that you can distribute to users.

## Release your app to users

You can release your Android apps several ways. Typically, you release apps through an app marketplace such as[Google Play](https://play.google.com). You can also release apps on your own website or by sending an app directly to a user.

### Release through an app marketplace

If you want to distribute your apps to the broadest possible audience, release them through an app marketplace.

Google Play is the premier marketplace for Android apps and is particularly useful if you want to distribute your apps to a large global audience. However, you can distribute your apps through any app marketplace, and you can use multiple marketplaces.

#### Release your apps on Google Play

[Google Play](https://play.google.com)is a robust publishing platform that helps you publicize, sell, and distribute your Android apps to users around the world. When you release your apps through Google Play, you have access to a suite of developer tools that let you analyze your sales, identify market trends, and control who your apps are being distributed to.

Google Play also gives you access to several revenue-enhancing features such as[in-app billing](https://developer.android.com/google/play/billing)and[app licensing](https://developer.android.com/google/play/licensing). The rich array of tools and features, coupled with numerous end-user community features, makes Google Play the premier marketplace for selling and buying Android apps.

[Releasing your app on Google Play](https://developer.android.com/distribute/googleplay)is a simple process that involves three basic steps:

- **Prepare promotional materials.**

  To fully leverage the marketing and publicity capabilities of Google Play, you need to create promotional materials for your app such as screenshots, videos, graphics, and promotional text.
- **Configure options and uploading assets.**

  Google Play lets you target your app to a worldwide pool of users and devices. By configuring various Google Play settings, you can choose the countries you want to reach, the listing languages you want to use, and the price you want to charge in each country.

  You can also configure listing details such as the app type, category, and content rating. When you are done configuring options, you can upload your promotional materials and your app as a draft app.
- **Publish the release version of your app.**

  If you are satisfied that your publishing settings are correctly configured and your uploaded app is ready to be released to the public, click**Publish**. Once it has passed Google Play review, your app will be live and available for download around the world.

For more information, see[How Google Play works](https://developer.android.com/distribute/googleplay).

## Release through a website

If you don't want to release your app on a marketplace like Google Play, you can make the app available for download on your own website or server, including on a private or enterprise server.

To release through a website:

1. [Prepare your app for release](https://developer.android.com/tools/publishing/preparing).
2. Host the release-ready APK file on your website.
3. Provide a download link to users.

When users browse to the download link from their Android-powered devices, the file is downloaded and the Android system automatically starts installing it on the device.

**Note:** The installation process will start automatically only if the user has configured their settings to allow the installation of apps from[unknown sources](https://developer.android.com/studio/publish#unknown-sources).

Although it is relatively easy to release your app on your own website, it can be inefficient. For example, if you want to monetize your app, you need to process and track all financial transactions yourself, and you can't use Google Play's[in-app billing service](https://developer.android.com/google/play/billing)to sell in-app products. You also can't use[app licensing](https://developer.android.com/google/play/licensing)to help prevent unauthorized installation and use of your app.

## User opt-in for unknown apps and sources

Android protects users from inadvertent download and installation of apps from locations other than a trusted, first-party app store, such as Google Play. Android blocks such installs until the user opts into allowing the installation of apps from other sources. The opt-in process depends on the version of Android running on the user's device:  
![Screenshot showing the settings screen for accepting install of unknown apps from different sources.](https://developer.android.com/static/images/publishing/publishing_unknown_apps_sm.png)

**Figure 1.** The**Install unknown apps**system settings screen, where users grant permission for a particular source to install unknown apps.

- On devices running Android 8.0 (API level 26) and higher, users must navigate to the**Install unknown apps**system settings screen to enable app installations from a particular source.
- On devices running Android 7.1.1 (API level 25) and lower, users must either enable the**Unknown sources**system setting or allow a single installation of an unknown app.

### Install unknown apps

On devices running Android 8.0 (API level 26) and higher, users must grant permission to install apps from a source that isn't a first-party app store. To do so, they must enable the**Allow app installs** setting for that source within the**Install unknown apps**system settings screen, shown in figure 1.

**Note:** Users can change this setting for a particular source at any time. Therefore, a source that installs unknown apps should always call[canRequestPackageInstalls()](https://developer.android.com/reference/android/content/pm/PackageManager#canRequestPackageInstalls())to check whether the user has granted that source permission to install unknown apps. If this method returns`false`, the source should prompt the user to re-enable the**Allow app installs**setting for that source.

### Unknown sources

![Screenshot showing the setting for accepting download and install of apps from unknown sources.](https://developer.android.com/static/images/publishing/publishing_unknown_sources_sm.png)

**Figure 2.** The**Unknown sources**setting determines whether users can install apps that aren't downloaded from Google Play.

To permit the installation of apps from non-first-party sources on devices running Android 7.1.1 (API level 25) and lower, users enable the**Unknown sources** setting in**Settings \> Security**, as shown in Figure 2.

When users attempt to install an unknown app on a device running Android 7.1.1 (API level 25) or lower, the system sometimes shows a dialog that asks the user whether they want to allow only one particular unknown app to be installed. In most cases, it is recommended that users allow only one unknown app installation at a time, if the option is available.

In either case, users need to make this configuration change before they can download and install unknown apps onto their devices.

**Note:**Some network providers don't let users install apps from unknown sources.