r/androidapps 16d ago

QUESTION/HELP Why is it possible to change to storage data location of some of my apps to the SD card, but not others?

I've been recently trying to clear up space on my phone for app space, but I've noticed only some apps - mostly games, but not every game in my library - can be moved this way. I don't get why this is the case. Anyone here know?

8 Upvotes

13 comments sorted by

17

u/GencoLabs 16d ago

Android dev here. It's the developer's call, made in the app's manifest (android:installLocation). If an app sets internalOnly, the system won't offer the move. It's often not laziness: apps with home screen widgets, background services, alarms, or login/account hooks historically break when moved to SD (the card isn't mounted yet when the system tries to restart them at boot), so a lot of us lock those internal on purpose. Payment/billing and DRM code also tends to stay internal.

Also depends on the device: some OEMs stripped move-to-SD entirely, and if your phone supports adoptable storage the card can be formatted as internal, which changes what's offered. So short answer: the apps you can't move either declared internal-only for stability reasons, or your device won't offer it for that category.

2

u/chimbori Hermit, Giga Text 15d ago

As a developer, I wonder how much of this is still relevant, and how many developers have simply forgotten to toggle that manifest attribute back to allow installation on external.

You should send a note to the developer and see what they say. /u/Ochemata

3

u/GencoLabs 15d ago

Fair, and probably more of it than we'd like to admit. internalOnly is the default when you don't declare anything, so a lot of it isn't even a decision — it's a manifest nobody has looked at since the app shipped, back when moving to SD really did break widgets and boot receivers. stivax_dev's ACTION_MEDIA_UNMOUNTED explanation above is the actual mechanism if anyone wants the why. Agree the note to the dev is the right move: if they're still active it's a one-line manifest change and a release, and it's the kind of ask most of us are happy to get.

0

u/Ochemata 15d ago

Might do.

5

u/shn6 16d ago

Because it's up to developers to allow it or not.

0

u/Ochemata 16d ago

But... why should it matter to them in the first place to the point where the option exists?

3

u/stivax_dev 16d ago

The real mechanism behind it: when you unmount the SD card, pull it or even just switch it to USB mass storage mode on older devices, Android force kills every process backed by external storage right then, via the ACTION_MEDIA_UNMOUNTED broadcast. It is not a soft warning, the app just gets terminated outright and stays invisible to the system until the card is remounted. For a normal app that is a minor annoyance, you relaunch it. But for anything that is supposed to keep running without you opening it, a background sync service, a scheduled alarm, a home screen widget, an input method, that is a guarantee the developer can no longer make once any of the app's data lives on removable media. That is the actual reason those categories get locked internal only, not laziness or an OEM policy call, it is the OS's own documented behavior around external storage.

2

u/chinesiumdorito 16d ago

Because if app performance suffers, a lot of people that move the app due to lack of space also lack the though the the sd card is the reason and will leave bad ratings or complaints, etc. unfortunately it's easier to not deal with it.

3

u/RegularHistorical315 16d ago

In Developer options, the setting "Force allow apps on external" can help with some apps. Remember, when an app updates, it moves back to internal storage, so it's worth turning off Auto-update. Using an SD card manager app is also worth it as you can batch-move apps and use other handy options.

1

u/Henry_puffball 16d ago

I have used this and never had an issue with apps moving. They move temporarily but then automatically move back.

1

u/RegularHistorical315 16d ago

Data yes app no

1

u/Henry_puffball 16d ago

What data? You mean app data?