◉RORK LABJP
●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…●GPT-6.1 SOL — Added to Rork's model menu (09-29) with Low, Medium and High effort; included on Pro and Max●SONNET 5.5 — Claude Sonnet 5.5 is selectable: strong at UI design and faster than Sonnet 5 (09-28)●SDK 58 — Beta since 09/15 with no stable date yet; running projects in Expo Go has required login since 09/03●WIDGET — A write-up traces an iOS widget that renders black only in production builds●OBSERVE — EAS Observe now records native crashes too (SDK 57.0.21 or later, 10/07)●NEW — My App Open Ad Only Showed When the App…
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.

Android55Play Storedrawable-nodpidensity splitsAPK splitsRork585wallpaper 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 $10 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-10-07
Japanese Headings Won't Turn Bold on Android: How to Trace and Fix a fontWeight That Does Nothing
A troubleshooting note for Rork apps where headings look bold on iPhone but stay thin on Android. How to tell the symptoms apart, pick weights through fontFamily, and verify the fix.
⬡ 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-05-18
Adapting Your Rork iOS App to iPhone Air and 17 Pro Series — Layout Patterns for 2026's New Resolutions
iPhone Air introduced a 420pt width that sits between the standard and Max models, quietly breaking layout conditionals in existing Rork apps. Based on updating four iOS apps at once, this covers device constant management, Safe Area handling, and full-screen image display fixes.