Have an Android device that’s quickly running out of space due to limited internal memory? Have a large collection of apps that refuse to move over to your SD card? If either of these is true, then you need to know about a simple tweak that can be done to forcibly move over many apps to your SD card – all without rooting.
A nice feature that most Android devices offer is an SD slot, and nicer still is the fact that the Android OS allows you to move most apps over to external storage to help free up space on the main device. For those with phones or tablets that offer plentiful storage, this perk might not matter much, but for those with older or budget devices, it could be the only way that additional apps can be installed.
Take, for example, the HTC Legend I used to use, which offered a mere 160MB to take advantage of, or more recently, Sony’s Xperia Ray, which improved things a bit with a boost to 300MB. Sure – these devices weren’t expensive when new, but storage this limited is ridiculous. It’s no wonder some users end up needing to move some of their apps off of the device and onto external storage.
But if you’re an Android user who has moved apps before, you’re likely aware that there are limitations. Some software is considered to be integral and thus cannot be moved, and then there is other software like Google Maps that you may not even use but can’t move even with the trick we’re going to talk about.
Complicating things further, when developers publish their apps, they can design them in such a way that they can’t be moved over to an SD card. This is what some would call a dumb move, but the reason for it is because phone storage is faster than external flash; even so, having a choice would be nice.
For those games and other apps that don’t inherently allow you to move them to an SD card, there are solutions – and they don’t require rooting. Instead, you’ll need to download the Android development kit (aka: SDK), change the default install destination on your phone, move your apps over, and then revert back to stock. If it sounds complicated, it really isn’t.
There are a couple of things to bear in mind before diving into this though, and those are important. While using this technique will allow you to move over widgets and OS tools, I recommend that you don’t do it. After a phone boots, the SD card is not immediately mounted, and as such, if your widgets or other important software is stored there, you’re not going to have access to it right away. Further, even after the storage is mounted, you might run into an issue where widgets are bugged because of the configuration.
Apps that Shouldn’t be Moved to the SD Card
I can’t stress the above enough, so be wise!
NOTE: Even after applying the below tweak, some apps may still refuse to be moved over. In all likeliness, Facebook will be one of these. In this case, rooting your mobile device will be the only way to truly move or remove such an app.
Given the fact that a simple tweak like this should be doable with nothing other than the mobile device itself, it’s unfortunate that software must be downloaded to get the job done. On the upside, nothing has to be installed; on the downside, the download weighs in at ~450MB. That’s a big “ouch” for those with tight bandwidth constraints, but don’t fret: We have a solution.
The Android SDK package is a series of folders littered with various tools, and as it turns out, the folder with the tool we need (adb) can be pulled out and used independently. As that folder weighs ~4MB, we took the liberty of archiving it and uploading it to our server here (776KB, VirusTotal scan). If you run into an issue with that download, or prefer to get the tool straight from the source, head here. Once the SDK is downloaded and extracted, the “platform-tools” folder can be found inside of the “sdk” folder.
Note: If Java is installed (*cringe*), the entire Android SDK (targeted for developers) can be installed to your computer, including the platform-tools that we need. You can get that done by clicking the “SDK Manager” executable in the extracted folder (or ‘android.bat’ in the tools folder if that doesn’t work), and then checking off what you want and finally hitting the install button. If you take this route, you’ll need to monitor where everything (including adb) is being installed to.
The options that need to be configured to prepare your phone or tablet could vary from device to device, so bear that in mind. Almost always, the ‘USB debugging’ option in the Developer options menu will need to be checked off; if no Developer menu is present, go to the “About device” option in the main system menu and tap on the device’s “Build number” option 7 times.
Sometimes, enabling USB debugging is all that’s needed, but if not, you’ll want to fish around for connection options and make sure the device is set to to “MTP”. This option is usually kept inside of a special menu for your device; on the Sony Xperia Ray, it’s in a menu simply called “Xperia™”.
After the tweak has been applied, feel free to undo all of the options you set. I’d actually recommend disabling the USB debugging option since it shouldn’t ever be needed except for this purpose (or rooting).
With the software and phone prepped, it’s time to open up a Windows command prompt and travel to the folder where ‘adb’ can be found; this location is wherever you A) extracted our special download to; B) extracted the official Android SDK download to or C) installed the platform-tools to using the official Android SDK manager.
NOTE: If after plugging in your phone, it’s not picked up by Windows, you might need to install some drivers. For any Android phone you have, starting here would be a good idea.
If you simply extracted the archive inside of Windows’ download folder, your path should be:
Or, if you extracted the full SDK from the official website, the path could be:
Once you’ve established where the ‘adb’ executable is, you can navigate to its location using the ‘cd’ tool. Using the first location mentioned above, moving to the folder would require this command:
Quotes are not needed around the filepath unless one of the folder names has a space in it.
NOTE: An alternative way to open a command-line in the same folder as adb.exe is to go to that folder in your file manager, hold Shift, and then right-click with your mouse in an open area (eg: not on top of a file) and choose to “Open command window here”. You’ll see something like this as a result.
Discovering the plugged-in device, and then changing its default install location
Here are the commands that need to be run:
Probes Android devices connected to the PC. Do this first to assure that the phone is being detected.
adb shell pm getInstallLocation (Android <4.0)
adb shell pm get-install-location (Android 4.x)
This results in a numerical value to state where the default install location is (0: phone, 2: external).
adb shell pm setInstallLocation 2 (Android <4.0)
adb shell pm set-install-location 2 (Android 4.x)
This sets the default install location to the external storage.
Once the last command is set, you can run the ‘get-install-location’ command again to verify that it took effect. If so, then you can unplug your phone and get on with moving some apps.
Use Linux? The steps for this tweak are no different, although acquiring ‘adb’ can be made easier if your distro’s repository stores it. In the case of Linux Mint, all I had to do was run sudo apt-get install android-tools-adb, and seconds later I was good to roll. If adb isn’t able to be installed this way for you, you can download and extract the Android SDK to access adb.
Below is an example of an app that isn’t able to be moved to external storage without this tweak. On the left, the device was left as it was; on the right, the tweak above was applied. As you can see, the tweak lit up the “Move to SD card” option.
Figuring out which apps can or can’t be moved is the most tedious part of using Android, but fortunately, apps exist to make the chore a lot easier to deal with. One solution I’ve used is called “App 2 SD“, as it’s both free and intuitive. Here’s another before and after example:
As you can see, using this tweak suddenly allows me to move over many apps to my SD card, freeing up valuable space. As mentioned earlier, I emplore you to not copy over things like widgets as it will result in some headaches. Some system tools might be fine to be moved over, but I’d be careful there also.
Once you have moved over everything that you need to, I’d highly recommend reverting the tweak by connecting your phone and setting the default location back to 0. This will avoid any potential headaches, some of which I’ve experienced in the past.
With that, go forth and free up some space!
This article was originally published on December 21, 2011, and since updated.