Some months ago I bought a new Android phone. The internal storage was only 16 GB, so I put in an external SD card of 32 GB.

As I started installing apps, I began to move the larger ones to the SD card using the Android Apps menu.

And I ran out of internal space quickly.

What?!

I checked the storage on my external SD card. Very little of it was used.

What was going on?

I found that there was a directory called /storage/emulated/0. And another one called /storage/sdcard1.

The latter was the real SD card. The former was simply a mount point within the internal memory. However, the former is where my apps were being moved to.

It seems when Android moves an App to the SD card, it is just shuffling it within the internal space.

This is as stupid as it gets.

Looking across the Internet, I am not alone. There are various solutions on web sites, but nothing “clean”.

One of the problems is that newer versions of Android really don’t like writing apps to FAT file systems, due to the latter’s poor permissions capabilities. Most SD cards are by default formatted as FAT.

The solution I picked:

  • Root your device (mine was already rooted).
  • Backup your SD Card.
  • Install Apps2SD.
  • Install BusyBox.
    • Run BusyBox, and run Install.
  • Install SuperSU.
    • In SuperSU, disable Mount Namespace Separation.
  • Launch Apps2SD.
  • Partition your SD. Set some amount for apps, and use the ext4 file system. The rest of the card should be formatted as FAT32.
    • If partitioning didn’t work, use a dedicated partitioning app.
  • Once the partitioning/formatting is complete and you have rebooted, in Apps2SD, click Link apps to SD Card.
  • Select the app you want to move to the SD card, and click on Link/Unlink. Select everything you can select.

This Youtube video explains how to use Apps2SD very well.