In Android version 2.2 (Froyo) Google introduced the option of moving apps to the SD card, rather than having to have them installed on internal memory.
This was very useful for devices that didn’t come with very much internal memory. Unfortunately it is down to the app developer to enable the option of moving the app to the SD card, and some older apps that are not actively still in development never got updated to support App2SD.
Sometimes you will also come across an app that just doesn’t support it, perhaps the developer forgot to flip the switch or feels that the app requires a high read or write speed which some slow SD cards don’t offer. Either way this can be frustrating if you find yourself running out of space due to lack of being able to move apps to the SD card.
This tutorial will take you through the process of forcing all apps to be installed to the SD card without the need for them being App2SD enabled using ADB (Android Debug Bridge). Using this method you do not need to have rooted your phone and it is easily reversed if you decide you no longer want it.
You will need to install the Android SDK (Software Development Kit) onto your computer, and this guide shows you how, it will also require a small bit of terminal work, but don’t panic, its not complicated!
Enable USB Debugging
The first step is to enable USB debugging on the phone. This is usually used by developers to output useful info to the computer when developing apps. On the phone open up the ‘Settings’ menu then ‘Applications’ then ‘Development’ then tick ‘USB Debugging’.
Get the Android SDK
Next we need to install the Android SDK. Navigate to: http://developer.android.com/sdk/index.html and then choose the version of the SDK that is for your particular operating system. Once this has finished downloading open your downloads folder that the program was saved to.
Install the SDK
If you are using Windows then you will probably have an .exe file, double click on this to install the SDK , if you are using Linux or OSX then you will have a zipped folder. Unzip it to see all the files inside.
Update the drivers (Windows)
If you are using Windows then you might need to update the drivers for the phone. Plug the phone in but don’t choose to mount the SD card on the phone. Windows will prompt to install new drivers, if you haven’t already done so.
Open Up Terminal/Command Line
Next you will need to open up terminal or the command line interface. In Windows this is done by pressing the ‘Start’ button , then ‘Run’ and typing ‘cmd’. In OSX open the Terminal app from the ‘Utilities’ folder. If you are on Linux it should be in your app list.
Navigate To The SDK
Next in terminal you need to navigate to the directory containing the SDK. To do this type ‘cd‘ (short for change directory) and then the location of the SDK. E.g ‘cd Android Development/android-sdk-mac_x86/platform-tools‘. In windows it would be something like ‘cd ‘Users/YourUserName/Downloads/AndroidSDK/platform-tools‘
Test out ADB
Plug your phone back in to the USB and then to make sure all is well, type ‘adb devices‘ in OSX ‘./adb devices‘. This should then list your phone model. If it says ‘adb command not found’ then you are not in the correct directory where the SDK was downloaded.
Force apps to install on SD card
In the terminal then type ‘adb shell pm setInstallLocation 2‘ or ‘./adb‘ for OSX. After a brief pause the command prompt will return. Thats it! All apps you now install will go on the SD card by default, saving your internal memory space.
Its worth noting that apps you have previously installed to the internal memory will not automatically be moved using this method. You will need to uninstall and then re-install any that don;t support App2SD to gain the benefits. You can however move apps from the SD back to internal memory as normal.
Revert The Changes
To undo the changes you have made, just follow the previous steps, but instead of typing ‘ adb shell pm setInstallLocation 2′ type ‘ adb shell pm setInstallLocation 1’. This will not move any previously installed apps back to the internal, you will need manually do that.