Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A runtime resource overlay (RRO) changes selected resource values in a target Android package without changing its code. To build one, declare the target package in the overlay manifest, map the target’s existing resources, install the overlay where the device permits, then enable and verify it for the intended Android user. Android version, target-app policy, signing, and OEM configuration determine which overlays are allowed.

What an RRO can—and cannot—change

The Android Open Source Project defines a runtime resource overlay as “a package that changes the resource values of a target package at runtime.” An overlay can replace values for resources that already exist in the target, such as a color or string. It does not replace app code, add arbitrary behavior, or contain DEX code. AOSP’s RRO documentation describes the mechanism and its constraints.

An RRO is not automatically usable against any installed app. The target package must be correct, and the target’s overlayable-resource policy, overlay signing or preinstallation, Android release, and device-maker configuration can all limit what will work.

Choose the mapping method for the Android version

Target Android version How resources are matched Important consideration
Android 11 and later Map target resources in an XML file under the overlay package’s res/xml directory, then reference it with android:resourcesMap on the manifest’s <overlay> element. Confirm the mapping file is correctly referenced and each mapped target resource exists.
Android 10 and earlier Resources are matched by name. Target and overlay share resource ID space; references to the overlay’s own resources can collide.

These are the AOSP-documented mapping approaches; use the target device’s Android version rather than assuming every device runs the latest release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Sale
Samsung Galaxy A17 5G Smart Phone 128GB US 1 Yr Manufacturer Warranty Black
  • YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
  • LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
  • MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
  • NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
  • BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.

Check whether the target allows the overlay

On Android 10 and later, a target app can expose eligible resources in named <overlayable> groups and attach policies to them. If it declares such a group, the overlay must specify that group with android:targetName, and it can replace only resources exposed there under the applicable policy. If the target declares no overlayable group, AOSP requires the overlay to be preinstalled in the system image or signed with the same signature as the target. A well-formed APK alone does not bypass these rules.

In the overlay manifest, set android:targetPackage to the exact target package name and set the overlay application’s android:hasCode attribute to false. For Android 11 and later, also point the <overlay> element’s android:resourcesMap attribute to the XML map. If the target declares an overlayable group, provide the matching android:targetName.

Rank #2
Tracfone Motorola Moto G 2025, 64GB, Saphire Blue (Locked to
  • Carrier: This phone is locked to Tracfone, which means this device can only be used on the Tracfone wireless network. Tracfone plan required, activating is easy, just 3 steps.
  • DISPLAY: Immersive viewing on a 6.7-inch super-bright 120Hz display with powerful stereo speakers and Bass Boost for cinematic entertainment.
  • CAMERA SYSTEM: Advanced 50MP Quad Pixel camera captures sharp, detailed photos and videos in any lighting condition
  • PERFORMANCE: Lightning-fast 5G connectivity paired with a powerful processor and RAM Boost for smooth multitasking.
  • BATTERY LIFE: Long-lasting 5000mAh battery with TurboPower charging technology delivers hours of power in minutes.

Install, enable, and verify the overlay

The Android Automotive documentation demonstrates installing an RRO APK with adb install for its platform-development workflow. That is useful for iteration in that context, but it is not a guarantee that a retail device or every OEM build will accept a sideloaded overlay. System-image installation paths are also documented for Automotive development. See the Android Automotive RRO appendix for that platform-specific workflow.

  1. Install the APK using a method supported by the device and build. For the documented Automotive development workflow, the command is adb install path/to/overlay.apk.
  2. List overlays for the intended user: adb shell cmd overlay list --user current. Replace current with the intended user if needed.
  3. Enable the installed overlay for that user: adb shell cmd overlay enable --user current com.example.carrro. Replace com.example.carrro with the overlay package name.
  4. Run the list command again and check its state for the target package. AOSP’s troubleshooting guide uses [ ] for installed and ready to activate, [X] for installed and activated, and --- for an installed overlay with errors.

User scope matters: the system user that owns System UI may differ from the foreground user running ordinary apps. On a multi-user device, choose the user whose app you intend to customize and inspect that user’s overlay state. AOSP’s RRO troubleshooting guide explains overlay-state inspection.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Samsung Galaxy A17 5G Smart Phone 128GB, US 1 Yr Manufacturer Warranty Blue
  • YOUR CONTENT, SUPER SMOOTH: The ultra-clear 6.7" FHD+ Super AMOLED display of Galaxy A17 5G helps bring your content to life, whether you're scrolling through recipes or video chatting with loved ones.¹
  • LIVE FAST. CHARGE FASTER: Focus more on the moment and less on your battery percentage with Galaxy A17 5G. Super Fast Charging powers up your battery so you can get back to life sooner.²
  • MEMORIES MADE PICTURE PERFECT: Capture every angle in stunning clarity, from wide family photos to close-ups of friends, with the triple-lens camera on Galaxy A17 5G.
  • NEED MORE STORAGE? WE HAVE YOU COVERED: With an improved 2TB of expandable storage, Galaxy A17 5G makes it easy to keep cherished photos, videos and important files readily accessible whenever you need them.³
  • BUILT TO LAST: With an improved IP54 rating, Galaxy A17 5G is even more durable than before.⁴ It’s built to resist splashes and dust and comes with a stronger yet slimmer Gorilla Glass Victus front and Glass Fiber Reinforced Polymer back.

Understand dynamic and static overlays

Dynamic overlays are disabled by default; static overlays are enabled by default, subject to documented exceptions. A mutable overlay can be controlled through the OverlayManager API by its target package or by a package with android.permission.CHANGE_OVERLAY_PACKAGES. Applying an overlay change can send configuration changes to the target and relaunch its activities.

Static overlay priority and ordering depend on Android release and device configuration. Do not assume one universal precedence rule: inspect the actual overlay state and resource mapping on the target device when multiple overlays could affect the same resource.

Rank #4
Sale
Samsung Galaxy S26 Ultra, Unlocked Android Smartphone, 512GB, Black
  • PRIVACY DISPLAY: Automatically hide your screen from those beside you. The built-in privacy display can be preset¹ to turn on when receiving notifications, typing passwords, or using specific apps
  • TYPE IT IN. TRANSFORM IT FAST: Enhance any shot in seconds on your smartphone by using Photo Assist² with Galaxy AI.³ Add objects, restore details, or apply new styles by simply typing or tapping
  • NIGHTS, CAPTURED CLEARLY: From gigs to city lights, record and capture moments after dark with clarity using Nightography so your photos and videos stay crisp and clear on your Samsung Galaxy
  • MAKE IT. EDIT IT. SHARE IT: Turn everyday moments into something personal with creative tools built right into your mobile phone, whether it’s a special contact photo, custom wallpaper, an invitation or more⁴
  • HELP THAT KEEPS UP: Stay in the moment while Now Nudge with Galaxy AI helps you respond faster and stay organized with smart suggestions⁵ that appear exactly when you need them on your phone
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot an overlay that does not apply

  1. Check package names. Verify that the manifest’s android:targetPackage identifies the intended target and that you use the overlay APK’s actual package name in shell commands.
  2. Check target policy. If the target declares overlayable resources, confirm the overlay’s android:targetName matches a declared group and that the requested resources are exposed under a policy the overlay satisfies. If there is no overlayable declaration, check the AOSP signing or system-image preinstallation requirement.
  3. Check the mapping. On Android 11 and later, verify the res/xml map exists, the manifest references it through android:resourcesMap, and the mapped target resource exists. On Android 10 and earlier, check resource names and possible resource-ID collisions.
  4. Check installation, state, and user. Run adb shell cmd overlay list --user current for the user that owns the app. If the overlay is absent beneath its target, confirm installation and the target package name. An installed overlay shown with errors is not ready to apply.
  5. Inspect idmap diagnostics. Look for idmap errors in device logs. AOSP documents adb shell idmap2 dump --idmap-path [file] to inspect generated target-to-overlay mappings under /data/resource-cache/. Use the path to the relevant idmap file on the device.

For more diagnostic context, consult AOSP’s troubleshooting guidance, which covers manifest, configuration, target availability, and idmap problems.

Quick Recap

Best Value
Tracfone Moto g Play 2024 Prepaid Phone with a 1-Yr Plan Included
  • Carrier: This phone is locked to Tracfone, which means this device can only be used on the Tracfone wireless network. Activating is easy, just 3 steps.
  • ACTIVATION Promotion: Includes 1500 min, 1500 texts & 1500 MB Data + add more as you need it
  • CAMERA SYSTEM: 50MP Quad Pixel camera. Capture sharper, more vibrant photos day or night with 4x the light sensitivity.
  • PERFORMANCE: Blazing-fast Qualcomm performance. Get the speed you need for great entertainment with a Snapdragon 680 processor and 4GB of RAM.
  • 64GB built-in storage. Get plenty of room for photos, movies, songs, and apps. Made for US

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.