Here’s the situation: You have a phone with a 32GB internal storage, and you bought a 128GB SD card because you have a massive app collection. You set your SD card as the default storage for app installation – and yet, over time, you notice that your internal storage is nearly full, while your SD card is barely used. What the heck is going on?
Here’s the thing – apps are pretty much designed to run from internal storage. The app developer can configure them to run from SD card, but a majority of developers optimize their apps for internal storage for performance reasons. The read/write speed of internal storage is much faster than an SD card in a majority of cases. Thus, even if you’ve set your SD card as the “default” installation point, the app’s preferences are overriding your preferences, by design of the developer. So how do you force apps to install to the SD card? I’m going to show you a couple methods of achieving this.
Note: Your phone must be rooted. Search Appuals for a guide on how to root your Android phone.
The App Method
There are a handful of apps that can forcibly move your apps from internal storage to SD card. Some have better success than others – for example, some apps may only move the /cache folder to your SD card, leaving the rest of the app in internal. They are very similar to simply going into Settings > Storage > Apps and tapping the “Move to SD Card” button – in fact, those apps are just a shortcut to that button wrapped in a GUI.
What you want is an app that actually does the entire job – for this you need Link2SD. However, Link2SD requires that your phone has init.d support.
To check if you have init.d support, you can install Universal Init.D from Play Store.
So go ahead first install Universal Init.D, launch it, and press the “Test” button. Reboot your phone and launch Universal Init.D again, and it will tell if you the test was successful for checking init.d support. If your phone does not have init.d support, you can toggle the “Off/On” button in Universal Init.d to emulate the support you need.
Once you’re done with that, install Link2SD from the Play Store, and launch it. Now press the first button in the top right corner, and filter your apps by Internal storage.
Find an app you want to move to your SD card and press it. If you’re on Marshmallow, ignore the message about “Second partition not found” – this is because in Marshmallow and higher, Android treats the SD card as an expansion of the internal storage, not as a separate device. You want to press the “Move to SD card” button under the “Android App2SD” menu.
The ADB Method
This is a bit more technical, but forces your phone to always install apps to the SD card, so you don’t need to use an app to move them from internal to SD. First read “How to install ADB on Windows” if you’re not familiar with the ADB terminal.
Once you have ADB all set up, connect your phone to your PC via USB, and launch the ADB terminal on your computer. Now type the following command:
adb shell pm set-install-location 2
To reverse it back to normal, type:
adb shell pm set-install-location 0 If the above command does not work, you may need to completely format your SD card in your PC, re-insert it into your Android phone, and select it as a Portable storage, rather than Internal. But if your device was previously treating the SD card as an Internal storage expansion, you cannot simply format it and switch it over to Portable storage, without pretty much factory resetting your phone as well. This is because in some Android phones running Marshmallow or higher, the system literally adopts the SD card as an expansion of the internal storage, not as a separate storage device – thus, your SD card will have a bunch of important system data on it, and removing the SD card will cause the Android system to go haywire.