Need help? Check out Spotify Answers for solutions to a wide range of topics. |
With the latest version of Android called Marshmallow (6.x) Google have introduced something called ‘Adoptable Storage’ - So what is it and how does this affect Spotify?
Android and Apple have always shunned the use of external memory in their devices as the type, quality and age of the memory used is up to the user and may negatively impact the experience. It may seem like the OS is at fault, when in fact it’s sometimes caused by old or faulty memory cards – Hence why Nexus (and soon to be Android One) or Apple devices do not natively offer the ability to use an SD card in the devices.
However Google have accepted that people will always want expandable memory, and to try and make things easier in Marshmallow they have introduced something called ‘Adoptable Storage’. What this does is convert the SD card into an extension of the internal device memory allowing apps and their data to be stored in this extended file system.
When you insert a card into a device running Marshmallow it will ask you if you want to use the SD card as a portable device or Internal. By selecting portable it will continue to function as before allowing you to remove it without affecting the performance of the phone. By selecting ‘Internal’ you are now moving to the new Adoptable Storage function and the SD card will be formatted and 128-bit AES encrypted before being mounted into the device as Internal memory and part of the system before moving existing apps & their data across.
This is great for devices with small internal memory or for Android TV boxes where the SD card will never be removed. If you try and remove an SD card once you’ve converted it to Adoptable Storage then your phone will start throwing errors at you and apps will start crashing.
So what are the issues Adoptable Storage may cause?
There are several complications this can cause, these are the deciding factors to consider and the last is something to take note of when using Adoptable Storage and apps that require the ability to cache such as Soptify:
Note: If you have set your SD Card to act as 'Internal' you will no longer see the 'Storage' setting in the settings menu of the Spotify application as all memory is classed as Internal so you won;t be able to specify where the cache is to be stored.
How do I convert back to Portable memory from Adopted memory?
To convert an SD back to ‘Portable’ you will first need to backup the existing data by plugging your phone into a PC and copying anything visible on the device over. Once done go to the ‘Storage’ section of Android settings and format the SD card. Once done make sure to restart your phone so that the system correctly identifies the SD card as portable again. Once done, reconnect your phone to the PC and copy all the files previously extracted back onto the portable memory. After this is done it’s best to again reboot the device to ensure links are correctly initiated.
What else has the upgrade to Marshamallow introduced?
In the upgrade to 6.x Marshmallow Google have changed the way application permissions are handled. Sometimes if an application is installed on the device and then you update the device software to Marshmallow these permissions need to be reinitialised. If you are finding that Offline data cannot be stored on an SD card or the SD card is not able to be selected then check the permissions are enabled following the official Android guide here:
Control your app permissions on Android 6.0 and up
Solved! Go to Solution.
Add support for adoptable storage or lose your customers.
EDIT:
I figured it out:
1. delete data and cache for spotify, then uninstall.
2. go to settings --> storage --> SD card --> the three dots in the right upper corner --> migrate data
3. download spotify, but do not start it yet.
4. settings --> apps --> spotify --> move from internal to sd card
5. settings --> apps --> spotify --> add permission for storage
6. fire up spotify, all your songs will end up in the SD card.
I've given up with hope for the Spotify team ever fixes something on Android. I guessing they only have one mediocre Android programmer
Anyone having issues after trying the steps above should perform a clean install. The guide below details the steps to take to ensure a full 'clean installation' is achieved - This includes checking redundant folders and a REBOOT!
[COMPLETE GUIDE] How to fix most Android issues
I would expect adoptable storage to be a good thing for the relability of Spotify.
SD Cards are often the cause of issues seen with Spotify on Android. The how to fix most Android issues guide starts with SD Cards for this reason. SD Cards are unreliable partly because they uses the ExFAT file system. ExFAT has no understanding of flash memory and has minimal error recovery features. In contrast F2FS is a modern filesystem which is designed for flash storage.
From the Adoptable Storage page on source.android.com:
Adopted devices must be formatted with a filesystem that supports POSIX permissions and extended attributes, such as ext4 or f2fs. For optimal performance, the f2fs filesystem is recommended for flash-based storage devices.
Traditional SD cards are designed to be shared between machines and so they need to be formatted using a widely supported filesystem like ExFAT. Adopted storage does not have this constraint. So adopted storage can use F2FS which has better error recovery.
I found this presentation by Tristan Lelong comparing filesystems for SD Cards. Skip to slide 97 on "detection/recovery of corrupted files". In Tristan's most difficult test F2FS recovers 100% of corrupt files and beats the alternatives. I think better error recovery on SD cards would lead to fewer "Help - Android" queries for Spotify.
So why the dislike of adopted storage for Spotify? Does it do badly in your in-house tests? Is there something that can be fixes so we get the benefits of moving from ExFAT to F2FS?
F2FS Links: Usenix paper, Wikipedia.