RORK LABJP
TOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the roundTOOLING — Rork's developer repos keep moving: rork-xcode was updated on July 16, rork-device on July 15, and rork-plist on July 13OPUS46 — Claude Opus 4.6 is live in Rork, and Rork Max is built to assemble apps on top of Claude CodeSIM — A cloud iOS simulator runs in the browser, with one click to install on a device and two clicks to publish to the App StoreMAX — Rork Max emits pure Swift rather than React Native, reaching iPhone, iPad, Apple Watch, Apple TV, Vision Pro, and even iMessageNATIVE — That opens up HealthKit, ARKit and LiDAR, NFC, Dynamic Island, Live Activities, 3D through Metal, and on-device inference with Core MLSEED — Rork raised a $15M seed led by Left Lane Capital, with Peak XV and a16z Speedrun joining the round
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.

Android43Play Storedrawable-nodpidensity splitsAPK splitsRork515wallpaper app23

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-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.
Dev Tools2026-05-28
Syncing 'Favorite Wallpapers' Across Devices with NSUbiquitousKeyValueStore in Rork iOS Apps — Implementation Notes from Six Apps Run in Parallel
For Rork-generated iOS apps, syncing a small set of favorites across devices is often better served by NSUbiquitousKeyValueStore than CloudKit. From the perspective of running six wallpaper apps in parallel, this article shares the threshold design, conflict resolution, and first-launch restore order learned in production.
📚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 →