Android 11 is the release where a permission could last for one session. Camera, microphone and location requests gained “Only this time”, and apps nobody opened for months lost their grants. For developers it closed the scoped storage opt-out and hid the list of installed apps from apps targeting API 30.
At a glance
| Version | Android 11 |
| API level | 30 |
| Name | Red Velvet Cake, internal only. Public name: Android 11 |
Build.VERSION_CODES | R |
| Release | Pixel rollout began 8 September 2020 |
| Launch devices | vivo V20, on sale 30 September 2020; Google’s Pixel 5 and Pixel 4a (5G) announced the same day |
| Google Play target-API deadline | New apps from August 2021, updates to existing apps from November 2021 |
Google released Android 11 and pushed its source to AOSP on 8 September 2020, starting with the Pixel 2, 3, 3a, 4 and 4a. Google’s announcement also named OnePlus, Xiaomi, OPPO and realme phones. The first phones sold with Android 11 were vivo’s V20, which went on sale in Southeast Asia on 30 September. Google announced its own, the Pixel 5 and Pixel 4a (5G), the same day.
The road there was a month longer than planned. The first developer preview came out on 19 February 2020. In May, Google added a fourth preview and moved Beta 1 and every later milestone back about a month. It then postponed the 3 June beta event “to allow people to focus on important discussions around racial justice”, and released Beta 1 on 10 June without one. Each preview and beta has its own part below this overview.
Dave Burke, Android’s VP of engineering, told the All About Android podcast in
July 2020 that his team called the release “RVC”, for Red Velvet Cake. He said
the name would not appear outside Google. The SDK constant is just R, and
build IDs start with R (RP1A.200720.009 was the first Pixel build).
What it brought
- Conversations. Messaging notifications get their own section at the top of the shade. Users can mark a conversation as priority, per contact rather than per app.
- Bubbles. Floating chat windows, experimental behind a developer option in Android 10, are open to all apps. An app targeting API 30 only gets bubbles for notifications linked to a shortcut.
- Device controls. A long press on the power button shows controls for
smart home devices. Apps add theirs with
ControlsProviderService. - Media controls. Players move into Quick Settings, in a swipeable carousel that can resume recent sessions, with an output switcher for speakers and headphones.
- Screen recording. A built-in recorder in Quick Settings, with audio from the microphone, the device or both.
- Wireless debugging.
adbconnects over Wi-Fi without a USB cable, after pairing with a code (adb pair ipaddr:port) or a QR code from Android Studio. - 5G APIs. Apps can tell when the user is on 5G
(
TelephonyDisplayInfo), whether the connection is temporarily unmetered (NET_CAPABILITY_TEMPORARILY_NOT_METERED), and its estimated bandwidth. The emulator gained a 5G network setting in version 30.0.22. - Developer tools. Data access auditing (see below), app exit reasons
(
ApplicationExitInfo), per-change compatibility toggles,adb install --incrementalfor large APKs, and more Kotlin nullability annotations. - Smaller additions. Synchronized keyboard animations
(
WindowInsetsAnimation.Callback), waterfall and hinge-angle APIs, NNAPI 1.3, low-latency decoding inMediaCodec, an NDK image decoder, and wireless Android Auto on compatible cars. - More APIs. An NDK Thermal API reports when the device is heating up, so a
game can cut its load before the CPU throttles. A
CallScreeningServicecan read the STIR/SHAKEN verification status of an incoming call.ImageDecoder.decodeDrawable()returns anAnimatedImageDrawablefor an HEIF file with several frames, such as a burst photo. - Small things users noticed. A notification history, off by default, keeps “Recently dismissed” notifications that still open their app, and those from the “Last 24 hours”. Apps can be pinned to the top of the share sheet. Dark theme can follow a schedule or sunset. A Wi-Fi network can be saved with “Auto-connect” off.
Security and privacy
- Data access auditing. An app registers
AppOpsManager.OnOpNotedCallbackand is told each time its own code, or a library inside it, touches private data. Attribution tags name the part of the app that made the call. - Scudo. Native heap allocations use the Scudo hardened allocator, except on
low-memory devices. Crashes it catches show up as
Scudo ERROR:. - fdsan aborts. The file descriptor sanitizer added in Android 10 now stops the process on a double close or use after close, instead of logging.
- Heap pointer tagging. For apps targeting 30, heap pointers carry a tag in their top byte, to prepare for Arm’s Memory Tagging Extension.
- Mainline. Google more than doubled the number of system modules it can update through Google Play system updates, with 12 new ones.
- Hardened identifiers.
getIccId()returns an empty string. App usage stats move to credential-encrypted storage and stay unreadable until the user unlocks the device. - Platform. The Generic Kernel Image (GKI) moves SoC support out of the core kernel into modules. Virtual A/B brings seamless updates with less storage. GWP-ASan runs in system apps to catch heap bugs.
- Resume-on-Reboot. After a reboot to install an OTA update, the device
can unlock credential-encrypted storage for every app, including apps without
Direct Boot support, so notifications arrive before the user enters the PIN.
Devices need the
android.hardware.reboot_escrowfeature for it.
Permissions
Three changes reach every app, whatever it targets:
- One-time permissions. The camera, microphone and location dialogs offer “While using the app”, “Only this time” and “Deny”. A one-time grant lasts while the activity is visible and a short while after the app goes to the background, or until a foreground service started from the visible activity stops.
- Two denials mean no. If the user taps “Deny” twice for the same
permission, the dialog stops appearing.
adb shell dumpsys package <package>shows it asUSER_FIXED. - “Files & Media”. The Storage permission group is renamed. An app using
scoped storage that asks for
READ_EXTERNAL_STORAGEgets a dialog about photos and media.

For apps that target API 30:
- Auto-reset. If the user does not open the app for a few months, Android resets its runtime permissions and tells the user. The per-app switch is “Remove permissions if app isn’t used” in App info > Permissions.
- Background location. A request for foreground and background location at
once is ignored. The app asks for foreground location first, then for
ACCESS_BACKGROUND_LOCATION, and the user turns on “Allow all the time” in Settings. - Phone numbers.
getLine1Number()needsREAD_PHONE_NUMBERSinstead ofREAD_PHONE_STATE. - New.
MANAGE_EXTERNAL_STORAGE(“All files access”) andQUERY_ALL_PACKAGES, both covered below.
The system owns both dashed steps. The dialog for background location has no button to grant it; the user must pick “Allow all the time” on the settings page.
The overlay permission also changed. ACTION_MANAGE_OVERLAY_PERMISSION always
opens the top-level settings list and ignores the package in the intent. Call
screening apps and apps capturing the screen get SYSTEM_ALERT_WINDOW on
request.
What changed for your app
All apps on Android 11
| Change | What to do |
|---|---|
| One-time permissions and the two-denial rule | Check the permission before every access; expect a denial without a dialog |
| Foreground services started from the background lose camera, microphone and location | Start them while the app is visible |
| Scudo is the native allocator, and fdsan aborts | Fix memory and file descriptor bugs in native code |
getIccId() returns an empty string | Use getSubscriptionId() |
| App usage stats need an unlocked user | Call UsageStatsManager after isUserUnlocked() returns true |
| Sharing a content URI | Set FLAG_GRANT_READ_URI_PERMISSION or FLAG_GRANT_WRITE_URI_PERMISSION on the intent |
| Maps v1 shared library removed | Move to the Maps SDK for Android and drop its <uses-library> |
Apps cannot read other apps’ folders under Android/data | Share files through a FileProvider or the Storage Access Framework |
Apps targeting API 30
| Change | What to do |
|---|---|
Scoped storage is enforced; requestLegacyExternalStorage is ignored | Use MediaStore and the Storage Access Framework; migrate legacy files before you raise targetSdkVersion |
WRITE_EXTERNAL_STORAGE grants nothing extra | Write to your own directories or to MediaStore collections |
Installed apps are filtered from getInstalledApplications() and similar calls | Declare the apps or intents you need in <queries> |
| Camera or microphone in a foreground service | Add camera or microphone to android:foregroundServiceType |
| Custom toasts from the background are blocked | Use a text toast or a notification; Toast.addCallback() reports show and hide |
| Foreground and background location in one request are ignored | Ask for them in two steps |
| APKs signed only with v1 cannot be installed | Sign with APK Signature Scheme v2 or higher, and keep v1 for older devices |
A compressed or unaligned resources.arsc blocks install | Store it uncompressed and 4-byte aligned |
Implicit IMAGE_CAPTURE and VIDEO_CAPTURE intents go to the system camera only | Name the package to use a third-party camera |
Firebase JobDispatcher and GcmNetworkManager stop on Android 6.0+ | Move to WorkManager |
Scoped storage itself arrived in Android 10, where an app
could still opt out. From API 30 there is no opt-out, but Android 11 brought
back direct file paths (File, fopen()) for media an app can already reach,
and added batch edits for media files.
Apps whose core job needs every file, such as file managers, antivirus and
backup apps, can declare MANAGE_EXTERNAL_STORAGE. The user enables “Allow
access to manage all files” on a settings page the app opens with
ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION, and isExternalStorageManager()
reports the result. Even then, other apps’ folders under Android/data stay
closed.
Package visibility works the same way. An app that talks to a text-to-speech
engine or a speech recognition service, for example, must declare that intent
in <queries>. For the rare app
that needs the full list, QUERY_ALL_PACKAGES exists. Google Play reviews both
permissions: All files access from May 2021, and QUERY_ALL_PACKAGES through
its Permissions Declaration Form.
What lasted
- Auto-reset grew into hibernation. From Android 12, an unused app also loses its jobs, push messages and cache. From December 2021 Google Play services brought the permission reset to Android 6.0 to 10.
- Package visibility and
<queries>are still the rule, and Play still limitsQUERY_ALL_PACKAGESto apps whose core function needs it. - Storage kept narrowing. Android 13 replaced
READ_EXTERNAL_STORAGEwithREAD_MEDIA_IMAGES,READ_MEDIA_VIDEOandREAD_MEDIA_AUDIO. - Foreground service types, required here for camera and microphone, became mandatory for every foreground service in apps targeting Android 14.
- Wireless debugging stayed. Android 17 with adb 37.0.0 added “adb Wi-Fi 2.0”, which reconnects on its own on a trusted network.
- One-time permissions and the two-denial rule are unchanged.
Worth knowing
- The Easter egg is a volume dial with 11 steps that stops at 10. Turn it to the top three times and it unlocks: it then reaches 11 and the next stage starts. The code says so: “until the dial is “unlocked”, you can’t turn it all the way to 11”.
- The next stage is Cat Controls, the Android 7.0 cat collector moved into the new device controls: a water bowl that fills from 0 to 200 mL, a food bowl, and a toy to throw.
- Google’s own launch post was titled “Turning it up to 11”, and its consumer post listed 11 new things.
- The
Rconstant in AOSP has a one-word comment,R., right below a three-line quotation on Android 10’sQ.

Android 11 Developer Preview 1: flash only
19 February 2020. The earliest preview Google had shipped, for Pixel 2 to 4 by manual flash, with one-time permissions, bubbles, 5G APIs and the plan for Platform Stability.
Read on its own: Android 11 Developer Preview 1: flash onlyGoogle released the first developer preview of Android 11 on 19 February 2020, almost seven months before the final release. Dave Burke’s post said Google was “making this year’s preview available to you earlier than ever”. It was “an early baseline build for developers only”.
| Release date | 19 February 2020 |
| Build | RPP1.200123.016 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator; GSI |
| How to get it | Manual download and flash only; Android Beta was not open for 11 |
| Platform stability | No; APIs still changing |
Much of Android 11 was already there: one-time permissions for location,
camera and microphone; the conversations section and the Bubbles API; images in
inline notification replies; 5G meteredness and bandwidth estimates; waterfall
screens; NNAPI 1.3; call screening with STIR/SHAKEN status; animated HEIF and a
native image decoder; low-latency video decoding; and heap pointer tagging for
apps targeting 11. Scoped storage gained raw file paths for media and batch
edits in MediaStore, and Google said its rules would apply only once an app
targets Android 11.
For compatibility, the preview brought per-change toggles in Developer options
and adb, so apps could be tested without changing targetSdkVersion. It also
added a public Resource Loader API, 12 new Mainline modules, and announced a new
milestone, “Platform Stability”, expected in early June. It would freeze not only
the APIs but “final internal APIs and system behaviors that may affect apps”.
A bug-fix update, Developer Preview 1.1 (RPP1.200123.020), followed on 4 March.
It stopped a security exception for apps requesting foreground location together
with another permission, and temporarily relaxed the non-SDK restrictions on a
few methods used by OkHttp.
Android 11 Developer Preview 2: first OTA
18 March 2020. The second preview reached DP1 users over the air and added the 5G state API, the hinge angle sensor, camera and microphone service types and resume on reboot.
Read on its own: Android 11 Developer Preview 2: first OTADeveloper Preview 2 came out on 18 March 2020, four weeks after the first. It was still for developers only, but owners of a Pixel already on Developer Preview 1 or 1.1 got it as an over-the-air update. The Android Flash Tool was a new, optional way to install it.
| Release date | 18 March 2020 |
| Build | RPP2.200227.009 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator |
| How to get it | Manual flash, Android Flash Tool, or OTA from Developer Preview 1 |
| Platform stability | No; APIs still changing |
The build added a 5G state API to tell when the user is on a 5G network, a
hinge angle sensor for foldables, and call screening apps that can report why
they rejected a call. Foreground services gained the camera and microphone
types, required to use either from a service. Scoped storage got a path to
migrate files from the legacy model.
It also brought synchronized keyboard animations through
WindowInsetsAnimationController and an insets animation listener, a preferred
frame rate per window for variable refresh rate screens, and resume on reboot:
after an OTA reboot, apps could read credential-encrypted storage before the user
unlocked the device. The emulator gained front and back cameras.
Developer Preview 2.1 (RPP2.200227.014) followed on 2 April with crash fixes
in the recent apps overview, the status bar and the Settings app.
Android 11 Developer Preview 3: developer tools
23 April 2020. The third preview focused on tools for developers, with wireless debugging, ADB Incremental, GWP-ASan for apps and revised exit-reason and data-auditing APIs.
Read on its own: Android 11 Developer Preview 3: developer toolsDeveloper Preview 3 came out on 23 April 2020. Google described it as “bug fixes and a set of productivity improvements for developers”. Pixels on an earlier preview got it over the air.
| Release date | 23 April 2020 |
| Build | RPP3.200320.017 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator |
| How to get it | Manual flash, or OTA from an earlier preview |
| Platform stability | No; APIs still changing |
Wireless debugging arrived, with the pairing-code flow on the command line; QR pairing from Android Studio was promised for later. ADB Incremental made installing APKs of 2 GB or more “up to 10x faster”, for APKs signed with the new signature scheme v4. In this build it worked only on the Pixel 4, because it needed a file system change on the device.
GWP-ASan, a sampling heap error detector, ran by default in platform binaries and system apps, and apps could turn it on. The app exit reasons API was revised from developer feedback, and several data access auditing APIs were renamed.
Apps targeting Android 11 now needed READ_PHONE_NUMBERS instead of
READ_PHONE_STATE to read phone numbers. The non-SDK restrictions relaxed for
OkHttp in Developer Preview 1.1 were back, and Google asked OkHttp users to
update.
Android 11 Developer Preview 4: added late
6 May 2020. An unplanned fourth preview came with a new schedule that moved Beta 1 and every later milestone back about a month, while keeping the final release in Q3.
Read on its own: Android 11 Developer Preview 4: added lateDeveloper Preview 4 was not in the original plan. Google’s February timeline, as 9to5Google reported it, had three previews and Beta 1 in May. On 6 May 2020, Google released a fourth preview instead and moved “Beta 1 and all subsequent milestones by about a month”, keeping the final release “later in Q3”.
| Release date | 6 May 2020 |
| Build | RPP4.200409.015 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator |
| How to get it | Manual flash, or OTA from an earlier preview |
| Platform stability | No; APIs still changing |
The new schedule put Beta 1, with final SDK and NDK APIs, on 3 June; Beta 2, with Platform Stability, in July; and Beta 3, with release candidate builds, in August. With no in-person Google I/O that year, Google planned an online “#Android11: the Beta Launch Show” for 3 June.
The build itself brought “the latest bug fixes, API tweaks, and features to
try”. Two changes reached apps targeting Android 11: they could no longer be
installed with a compressed resources.arsc, and getLine1Number() in
TelephonyManager and TelecomManager required READ_PHONE_NUMBERS.
Android 11 Beta 1: final APIs, no event
10 June 2020. Released a week late and without its launch event, the first beta opened Android Beta over the air, froze the SDK and NDK APIs and opened Play to apps targeting 11.
Read on its own: Android 11 Beta 1: final APIs, no eventBeta 1 came out on 10 June 2020, a week after the new date. On 29 May Google postponed the 3 June event and beta release, saying “now is not the time to celebrate”. It then cancelled the virtual event “to allow people to focus on important discussions around racial justice in the United States” and released the beta through short videos and web pages instead.
| Release date | 10 June 2020 |
| Build | RPB1.200504.018 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator |
| How to get it | Over the air through Android Beta, open for the first time, or by flash |
| Platform stability | No; SDK and NDK APIs final, system behaviors not yet |
The SDK and NDK APIs were final from this build, and Google Play accepted apps targeting Android 11. Google framed the release around three themes: People, Controls and Privacy. Conversation notifications and bubbles led the first; device controls on a long press of the power button and media controls led the second. Media controls were behind Developer options here, with Google saying they would be on by default in a later beta.
Permissions auto-reset joined one-time permissions: Android would reset the runtime permissions of an app not used for a long time. Autofill apps and keyboards could now show suggestions in the keyboard’s suggestion strip.
Beta 1.5 (RPB1.200504.020) followed on 17 June. It fixed reboots during
gesture navigation, contactless payments with Google Pay, and Bluetooth
unpairing.
Android 11 Beta 2: Platform Stability
8 July 2020. The second beta reached Platform Stability, new in Android 11, with final APIs, system behaviors and non-SDK restrictions two months before release.
Read on its own: Android 11 Beta 2: Platform StabilityBeta 2 came out on 8 July 2020 and brought Android 11 to Platform Stability, the milestone Google added that year “just for developers”. It meant “all app-facing surfaces and behaviors are now final”: SDK and NDK APIs, system behaviors, and the restrictions on non-SDK interfaces.
| Release date | 8 July 2020 |
| Build | RPB2.200611.009 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Android Emulator |
| How to get it | Over the air through Android Beta, automatic for Beta 1 users |
| Platform stability | Yes, from this build |
Google asked every app developer to start final compatibility testing, and SDK, library and game engine developers to ship first, since apps downstream “may be blocked” until they did. The four changes it listed for all apps were one-time permissions, no access to other apps’ files in external storage, the Scudo allocator for native code, and fdsan on by default.
Beta 2.5 (RPB2.200611.012) followed on 22 July. It fixed lost audio after a
VoIP call, random reboots, screen flicker at low brightness, and a block on
returning some Pixel 4 phones to Android 10.
Android 11 Beta 3: release candidate
6 August 2020. The last beta was a release candidate for Pixel 2 to 4, and later the 4a, and let Exposure Notification apps run with the device location setting off.
Read on its own: Android 11 Beta 3: release candidateBeta 3 came out on 6 August 2020, “our last update in this year’s preview cycle”. It was a release candidate build for Pixel phones and the Android Emulator, on the APIs and behaviors frozen since Beta 2.
| Release date | 6 August 2020 |
| Build | RPB3.200720.005 |
| Devices | Pixel 2, 3, 3a and 4, with their XL models; Pixel 4a from 24 August |
| How to get it | Over the air through Android Beta, Android Flash Tool, or by flash |
| Platform stability | Yes, since Beta 2 |
The one change Google called out was for the Exposure Notifications System. From Beta 3, apps built on it could scan for Bluetooth devices without the device location setting on. Every other app still needed location on and a location permission to scan.
The fixes included package visibility: an intent filter for browsers now made only browser apps visible, not a broader set. Google said Beta 3 would reach the Pixel 4a when the phone went on sale; 9to5Google saw it in Android Beta on 24 August. Android 11 shipped on 8 September 2020.