We all rejoiced when we heard that in Froyo, Android would officially implement a way to store apps on SD card storage (commonly known as “apps2sd”). Documentation on how this will work has been published, and some of the details, while reasonable in the context of addressing real concerns, may be surprising. The most important surprise: no apps currently in the Market can be stored on the SD card without being updated.
While many of us have already taken advantage of unofficial ways to use sd card space for app storage, its inclusion in the OS will encourage developers to think big, and will remove a barrier to entry for those deciding whether to buy an Android phone. Not to mention the fact that what’s been implemented is a way to store apps on any external storage, not necessarily an SD card. This could have implications as we see Android popping up on different kinds of devices. But we waited so long for an official solution because of a number of barriers: developers needed to be assured that app storage on a card that can be mounted as a mass storage device would not facilitate piracy; users needed a seamless, easy experience that does not require special partitioning of the SD card, and there had to be some provision for the fact that sometimes sd cards get taken out or are otherwise not available.
The implementation of this feature in Froyo addresses all those concerns, but it does so by placing some limitations on how it works. Or rather, by allowing app developers to place limitations.
The key limitation is that developers will choose whether or not their app can be installed on external storage. Why would a developer choose not to do so? Froyo’s apps2sd solution does not require a specially partitioned sd card, so there is an issue when the phone is connected to another computer and the user mounts the sd card as a mass storage device. When that happens, it’s as if the sd card has been removed: apps stored there are unavailable to the system. Because of this, Android’s documentation recommends that apps that use certain features (such as services, alarm services, live wallpapers or folders, widgets, and others) should not be eligible to be installed on external storage. Games and other apps not deeply integrated with the system will be the best candidates for external installation.
For safety’s sake, the assumption is that unless specifically authorized by the developer, an app cannot be installed on external storage. So, until developers update current apps to include this authorization, no current apps can installed externally.
Another important concern was making sure externally installed apps would not be more easily pirated. To address this, apps installed on the SD card will be encrypted in such a way that they can only be decrypted by the device they were installed with. In other words, if you remove the SD card and put it in another phone, the apps stored on the card will be unavailable to you.
Two final notes: private user data is never stored on external storage, even if the app it is associated with is, and the documentation claims that “there is no effect on the application performance so long as the external storage is mounted on the device,” with no mention of requirements for the SD card’s transfer speed.