Looks like another app can no longer be stored on SD, great!

  • Thread starter Thread starter Android Central Question
  • Start date Start date
A

Android Central Question

Why do more and more apps insist they cant be moved to sd card? It seems ridiculous for the owners of said apps to do so, surely just means that a large amount of "users" are less inclined to do just that with your app, my phone is a barely a year old yet with limited 'internal' storage im forced to limit myself to a few 'essentials'
 
Welcome to Android Central! I realize you probably don't want to hear this, but moving an app to the SD card (whether it's the old method that moves only a portion of the app, or the newer Adoptable Storage method which formats the card as Internal Storage) has a lot of disadvantages, so it may not be worthwhile for developers to allow it. SD cards are inherently much less reliable than onboard storage, and if you rely on the card to run an app, you run a greater risk of data loss and system instability if/when the card crashes or fails. In addition, read/write speeds on SD cards will always be significantly slower than with onboard storage, so the performance of the app will take a hit (and this can lead to worse reviews on Google Play -- developers hate that).

It's always best to get a phone with as much internal storage as you can comfortably afford. Don't consider the SD card as an easy way to expand the device's ability to install apps.
 
There's another reason. As we get newer and newer versions of Android (meaning higher and higher API levels), more and more functions just won't run if they're stored on the SD card, so more and more developers, rather than answer hundreds of emails asking why the app won't run, are just opting to not let it be moved. Even if you could move it (assuming a portable SD card - an adoptable SD card may get the app installed on it, but that's not up to you, it's up to Android), it wouldn't work. Even if you have an older version of Android, the code being used to write (or update) the app won't run from the portable SD card.

(An adoptable SD card is, to the phone, just more internal storage, it's not "an external SD card". So you'd be moving an app from internal storage to ... internal storage, which doesn't make sense. Moving an app to an SD card only means something when the card is formatted as portable storage. With an 8GB phone and a 32GB SD card formatted as adoptable storage, you have a 40GB phone.)

I guess Google got fed up with the constant notices we used to see about not moving apps to the card, because people wrote apps to do it anyway, so now they're addressing it by not allowing apps to run from a portable SD card. (It's so bad that Android Studio still doesn't handle API 28 [Android 9 - Pie] correctly - we have to create an app, then modify the so-far-blank app to API 27, then start developing it.

But it's because Android was never designed to tun apps from a portable SD card. Android looks for apps, and library files (parts of apps) ion internal storage. (Moving parts of an app to an SD card means leaving links to where on the SD card that part was put, and if the part moved was small - about the size of a link - you haven't saved any internal storage. Worse, if the part moved is smaller than a link, you've used more internal storage by moving the app to the SD card.)

SD card life is measured in writes. (It's a huge number, but it's finite.) Android apps have to keep track of where they are at all times, because if an app isn't the foreground app, and Android needs the RAM space, it can just kill the app. (Windows is totally different - it asks a program if it can close it. If the program says no, Windows doesn't. Which is why, when you're rebooting, you see "The following programs are keeping Windows from closing ...") Then, when you bring that app to the foreground again, Android runs it, selling it "and start where you left off". It knows where it left off because it's constantly writing its current state to storage. Do that to an SD card (especially if the app is doing internal things, and writing its current state 500 times a second) and the card won't last long. (That's also why you have to clear an ap's cache sometimes - the app was in the background and got killed - but the cache was still storing the information it would need when it ran again. Then you restart the phone or turn it off. The data remains in the cache. The app can't look in the cache when it start fresh to see if there's any "old cache data", there's no "tag" in the data saying "I'm old cache data" - to the app, that's just data it doesn't know about [because when it asks the OS for say 1K of storage to cache some data, the OS looks, sees that the old data is still marked as used and give it a different place to use for cache]. So you now have to tell the OS - "clear any cache storage that's ever been assigned to this app".)


An SD card won't last long as adoptable storage either if apps get stored on it, but adoptable storage is a stopgap - you're still running an 8GB phone in mid 2018, and don't quite have the money for a 64GB phone, so you can use your phone for a while yet. But you might go through 3 or 4 SD cards doing it. It's not meant to turn an 8GB phone into a 128GB phone to be used for the next 5 years. (That's why people have SD cards, that used to last for decades - SanDisk's premium cards have a lifetime warranty, their mid-level card have a 10 year warranty, even their cheap cards have a 5 year warranty - fail in 6 months. Apps constantly writing to them. And no, it's not the manufacturers' fault - the technology limits the number of times a cell can be written to. An SD card with an infinite number of write cycles is like dry water - it's not possible.)
 

Trending Posts

Forum statistics

Threads
956,419
Messages
6,968,142
Members
3,163,540
Latest member
Thomaspeter