RORK LABJP
PLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updatesPLAY — Google Play's target API level 36 requirement took effect yesterday, August 31. From today, new apps and updates must target Android 16VISIBILITY — Apps still on API 35 stay listed but disappear for users on newer Android versions. No error is raised; new installs simply fade, which makes the change easy to missEXTENSION — If you missed the deadline, an extension through November 1, 2026 can be requested in Play Console — best filed alongside a concrete migration planAPPLE — On the Apple side, the event lands September 9 and iOS 27 is reported to ship September 14. Testing generated apps on iOS 27 hardware before release week is time well spentEXPO — Expo released expo-paste-input on August 28, a native module that brings image, GIF, and sticker paste to React Native TextInputEAS — EAS Observe reached general availability on August 20, putting crash and performance monitoring on the same EAS platform as builds and updates
Articles/Dev Tools
Dev Tools/2026-05-17Intermediate

Images Vanishing After Play Store Release — Fixing drawable-nodpi in Rork Android Apps

After publishing a Rork-generated Android app to the Play Store, images disappeared on low-density devices. The culprit: Play Store's density APK splits and how they handle drawable-nodpi resources. A real-world fix from 12 years of app development.

Android47Play Storedrawable-nodpidensity splitsAPK splitsRork547wallpaper app22

Shortly after releasing version 2.1.0 of Beautiful HD Wallpapers for Android, multiple reviews came in reporting blank white images. Every affected device turned out to be a low-resolution ldpi or mdpi handset — typically older budget phones.

The Rork Max-generated native Android code worked perfectly in Android Studio and on local emulators. The problem only appeared once the app was live on the Play Store.


What Was Actually Happening

The Play Store uses density APK splits to reduce download sizes. When you publish an Android App Bundle, Google Play generates separate APKs for each screen density (ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) and delivers only the relevant one to each device.

This optimization has an unexpected interaction with the drawable-nodpi/ folder.

drawable-nodpi/ is designed to hold resources that should be delivered to every device regardless of density — watermark images, icon assets, anything you don't want scaled. However, when density splits are active, low-density device APKs can fail to pick up files stored exclusively in drawable-nodpi/.

Specifically, if an image exists only in drawable-nodpi/ and not in any density-specific folder, Play Store's split logic can misidentify it as having no applicable resource for that density bucket and exclude it from delivery.


Why This Hits Rork Max Apps in Particular

Rork Max typically places images in res/drawable/ or res/drawable-xxhdpi/ — a high-resolution-first approach that makes sense for most scenarios. Problems arise when developers manually move certain assets (logos, placeholders, dividers) into drawable-nodpi/ to prevent scaling.

In my case, I moved a placeholder image and some ad-separator assets into drawable-nodpi/ after Rork Max generated the initial project. Local emulators showed no issues because Android Studio doesn't simulate the Play Store's density split behavior. The bug only surfaced after publishing.

After 12 years of building apps — with over 50 million cumulative downloads across my portfolio — I still occasionally run into Play Store delivery behaviors that don't match local testing. The density split edge case is one of the trickier ones.


Three Ways to Fix It

Option 1: Move assets back to drawable/

The simplest fix. If density-dependent scaling is acceptable for the asset, move it back to the standard drawable/ folder.

<!-- Before: vulnerable to density split issues -->
res/
  drawable-nodpi/
    placeholder.png     ← missing on ldpi devices
    divider_asset.png   ← same issue
 
<!-- After: delivered to all densities -->
res/
  drawable/
    placeholder.png
    divider_asset.png

Option 2: Disable density splits in build.gradle

If reliable delivery matters more than APK size, you can turn off density splitting entirely.

// app/build.gradle.kts (App Bundle)
android {
    bundle {
        density {
            enableSplit = false
        }
    }
}

For legacy APK format, use the splits block instead:

// Legacy APK format
android {
    splits {
        density {
            isEnable = false
        }
    }
}

Option 3: Duplicate assets across density folders

If you want to keep density splitting active while using drawable-nodpi/-style assets, duplicate the file into each density bucket.

res/
  drawable-ldpi/placeholder.png
  drawable-mdpi/placeholder.png
  drawable-hdpi/placeholder.png
  drawable-xhdpi/placeholder.png
  drawable-xxhdpi/placeholder.png
  drawable-xxxhdpi/placeholder.png

More maintenance overhead, but it keeps your bundle sizes small while guaranteeing delivery across all devices.


Pre-Launch Checklist for Rork Max Android Projects

Before publishing any Rork Max-generated Android app, run this check in your project root:

# Find all images in drawable-nodpi
find . -path "*/res/drawable-nodpi/*" \( -name "*.png" -o -name "*.webp" -o -name "*.svg" \)

If files appear, decide which of the three options above applies. Text resources (strings.xml, AndroidManifest.xml) are not affected — this only applies to image assets (PNG, WebP, SVG, 9-patch).


The Outcome

The blank-image reports that appeared in v2.0.0 reviews were fully resolved in v2.1.0 by moving three files from drawable-nodpi/ back to drawable/. No similar reports since.

Rork Max generates high-quality native Android code that's often production-ready as-is. But Play Store's internal optimization logic — density splits, language splits, ABI splits — introduces behavior that doesn't show up in local testing. Building a habit of testing on low-spec API 21–23 devices before every release is worth the extra step.

If you're hitting blank images on older Android devices after a Play Store release, check drawable-nodpi/ first.

Share

Thank You for Reading

Rork Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • Copy-paste ready implementation code
  • New advanced guides published daily
  • $5/mo or $15 for lifetime access
View Membership →

If you found this article helpful, a small tip ($1.50) would mean a lot to us. Your support helps keep this site ad-free and covers server and hosting costs.

Related Articles

Dev Tools2026-08-21
The four acceptance checks I still run after the build turns green
A successful build does not mean a shippable build. Here are the four failure classes an AI build loop cannot see, and a dependency-free script that inspects the artifact itself before you submit.
Dev Tools2026-06-26
Watermark Only the Shared Image in Your Rork Wallpaper App
In a Rork-generated Expo wallpaper or image app, keep saved images untouched and burn a watermark only into the share export, shown two ways — react-native-view-shot and Skia — with the resolution-loss pitfalls to avoid.
Dev Tools2026-05-29
Diagnosing 'Network request failed' That Only Hits Android Emulator in Rork
Your fetch returns fine in the iOS simulator but throws 'Network request failed' the moment you switch to Android. Here is the diagnosis order I use to separate localhost, cleartext, certificate, and proxy issues, with code that actually compiles.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →