The Death of External Storage: Where's Google?
Under the fairly innocuous title of “scoped storage”, Google has announced that external storage, as Android developers have used it, effectively is dead, for Android Q and onwards.
I am going to spend some time on this over the course of the week, as this change needs some attention:
- Monday, I described what has changed and what you are supposed to use.
- Tuesday, I covered the limited options for actually getting a file on external or removable storage.
- Wednesday, I reviewed how you might still wind up with references to files… that you cannot access
- Yesterday, I offered some guesses as to why all of this is going down
Today, I am going to wonder what might have been.
In truth, I was not terribly surprised to see some changes in external storage in Android Q.
Particularly with Android 7.0’s
FileUriExposedException, “the writing was on the wall”
for the use of files, at least for app-directed content sharing with another
I was surprised at the scope of the changes. That is not because I expected something more limited, but rather I expected more warning for a change of this magnitude.
It’s not like on the morning of March 12th, the day before the Android Q release, some manager woke up and decided to greatly limit the use of external storage. This has been in the works for months, if not years.
Of course, Google is not one for making statements about future changes. I did not expect to hear “oh, in the next version of Android, external storage will be neutered” in some conference fireside chat.
However, I would expect Google to be emphasizing heavily the eventual
alternatives: the Storage Access Framework and
MediaStore. That way, when Android
Q shipped, they could point to all this prior material on those alternatives as
a way of helping developers move to them. Plus, some developers would already
have taken their advice and started that switchover before Android Q even showed up.
And if the plan for restricting external storage has been in place since Android 7.0 — three years ago — I would have expected Google to be consistently promoting the Storage Access Framework. An old saying in marketing is that it takes nine ad impressions before the ad even really registers in the mind of the viewer. While the science behind that is hazy, there is no question that repetition of a message is important. So, I would expect the proper use of storage to be a regular theme in presentations and posts.
But, if they did any of that, I’m not aware of it.
I see nothing in the 2017-2019 archives in the Android Developers Medium channel.
(and I sure hope somebody is keeping backups, as those posts seem like one Medium bad financial quarter away from being memory-holed…)
I can find nothing about this in the past few years’ of posts in the Android Developers Blog.
Little of that came up at the 2018 Android Dev Summit.
UPDATE 2019-03-30: Andrew Hughes and Yacine Rezgui pointed out that I missed Jeff Sharkey’s presentation. It has about four minutes of material on storage options for ordinary apps, including about a minute for the Storage Access Framework.
I also do not see any sessions on storage on the agenda for this year’s Google I/O, though not all sessions have been announced.
UPDATE 2019-03-30: If you go back farther, closer to when the Storage Access Framework was introduced, you start to get more material, such as this Ian Lake presentation from 2015 and this Android DevBytes presentation from 2013. However, the fact that we have to go that far back to get relevant material illustrates my point. If you want developers to change, you have to keep repeating the request to change. The approach you want developers to take needs to be in the forefront of their minds, not off in some dusty corner of the Internet.
I really hope that there are two sessions on storage at this year’s I/O:
One would be focused on the Storage Access Framework, how you migrate away from external storage to it, how you deal with devices that lack it, how you deal with buggy implementations, like 2019’s Google Drive, how you deal with incomplete implementations, etc.
The other would spend time on
MediaStoreand its role in replacing typical uses of external storage
In addition, some blog posts would be nice.
I and others will do what we can to help developers figure out how to adapt. However, official stuff from Google is orders of magnitude more valuable, as it will get orders of magnitude more attention. Plus, I and others can then point to it as Google’s recommendations.
To be honest, though, I am not hopeful that we will see any of that, unless some new AndroidX library comes out that will help with the transition. What we need always seems to be less than what we get.
We’ll muddle along. We always do. It’s just disappointing, that’s all.
Nervous about how the newest version of Android affects your app? Consider subscribing, then asking questions in the office hours chats!