What is Adoptable storage on Android?
Android has had limited support for removable storage in one form or another since the beginning. Since Marshmallow, it supports what's called Adoptable storage. It's a feature that lets you turn your removable SD card into a more or less permanent (and no longer removable) part of the device.
The idea is simple, really, and most of the confusion surrounding Adoptable storage is easy to clear up. There are a few things to keep in mind so you understand how it works and what it's doing.
Your phone probably doesn't support it
You might read this and think it's a great idea. But when you go into the settings or insert a card you don't see the option to use it. You're not crazy and it's probably not there.
Most high-end Android phones don't support Adoptable storage and that might not be a bad thing.
A byproduct of Android being distributed as free source code is that companies who make phones can alter it. And many companies remove the adoptable storage option or remove the user-facing portion so you can't enable it. Samsung does this, and it is the undisputed heavyweight champ of Android, so there is a good chance you can't use the feature unless you are comfortable hacking it in, as explained further down.
If this is the case we suggest you use your SD card to store movies and pictures and music and everything else you have to store and leave the room on your phone to use for your apps.
Your storage device really gets adopted
You can force any storage device (even ones connected via USB OTG) to be adopted using one simple command:
adb shell sm set-force-adoptable true
But you probably shouldn't.
Once a storage device is adopted, it becomes part of the system and is no longer removable. Sure you can physically remove it, but you'll be prompted to put it back while apps and services crash on your phone or tablet. It's adopted — taken in and loved by the system, and made part of the whole.
This means Adoptable storage is really only useful for two things:
- An SD card placed in a phone or tablet and never to be removed
- A USB storage device attached to your Android TV box, and never to be removed.
When you insert an SD card into the HTC One or your Moto G5 or any other phone that supports it, you have the choice of using it as a Portable device or an Internal device if you attempt to reformat it. If you choose Portable, it acts like any other SD card and you can take it out and swap it between devices at your leisure.
Once an SD card is adopted it has to stay inserted and working.
If you choose Internal, things change. The device is formatted as a local, 128-bit AES encrypted EXT4 drive and mounted as part of the system every time you start your phone. It's then set as the preferred storage, and you're prompted to move data over. Newly generated data is placed on the adopted storage by default.
If you try to remove it, things go haywire. Your phone will throw errors until you are forced to factory reset it and you can't read the data on the SD card with any other device or the original phone once it's been factory reset. That means you either have to insert the card back in the phone and hope things return to normal or delete all your stuff and reformat the card. If an SD card you're using for adoptable storage fails, you are out of luck.
It might be a little slow
Your phone will "benchmark" storage when it's adopted. Whenever I've tried it, I've always seen a pop-over telling me that my storage was slower than recommended at the end of the process. I didn't notice any significant slow-down, but I might not have been doing the right things to make it become slow.
In any case, when you want to use an SD card as adopted storage, I recommend using the fastest SD card you can find. Class 10 and UHS are words to look for.
In any case, it's never going to be as fast as the internal flash storage built into your phone. This might make a difference to you, and you might not like what you see.
Do you really want to adopt your SD card as part of the system?
Chances are, if you try you will wish you hadn't.
General consensus is that Google made this move because Android One devices all ship with limited internal storage, and users will need more space to install apps and their associated data. I agree, and this is a decent solution if you're in a similar situation. Storage that's a little slower and might fail and force you to reset your phone is better than no storage (and no apps).
Adoptable storage is a great idea but it does have some serious drawbacks.
But for many of us reading this, we really only want more storage to store things like pictures, music, and movies. We're better off using an SD card as a portable storage device that we can remove and use wherever we want (like to transfer files back and forth between devices), and keep apps and data off of the card.
There's also the bit about how SD cards have a limited number of times they can be read from and written to. Using an SD card the "normal" way means failures are uncommon. When you start caching data and reading and writing at a rate higher than a card was designed to handle, problems can arise. Android takes some precautions here with formatting and mounting options that reduce the indexing, but it can still happen. SD card manufacturers will soon start selling "class A" SD cards that have been designed for more frequent use with apps. But even then, a card that is in use a lot will fail before a card that isn't.
Adoptable storage is a good idea. Formatting an SD card as an ext partition and mounting it at boot is something Android hackers have been doing for a while. It allowed my Nexus One to live a much longer life than it should have.
But it's not magic, and the idea is simple once you stop and think about how it works. You'll have to decide if it's an idea you want to use or not.