Android - Moving installation location on non rooted Android 5 Lollipop device

Basically speaking: You can't. At least not without rooting.
The main reasons Android does not allow you to install an application to your external SD card are:

  1. Security: It's the main reason for that restriction. Basic file systems like NTFS or FAT (any version of it) do not allow for Unix-like permission management.
    This means: any application would be able to write to any file on that storage.
    Thinking of malicious apps, they would be able to replace proper apps with fake/infected ones, bricking your phone and rendering it unusable.

  2. Volatile storage: Your external SD card is not safe to be inserted in your device all the time. You are able to eject it any time what makes your SD card not a very good candidate for a permanent storage. Consider apps running off of your SD card and you eject it. Those apps will just crash and all other apps saved on your SD card are gone as well. You can't use them at that time and the data of those app is also affected by reason #1.

Basically you can! ;)

  • First, Root your phone!
  • Second, Create a secondary partition in your SD card (Ext.4) >= 2GB and set it as primary.
  • Third, download and install Link2sd app from playstore. Open the app, and I will ask you to create a mount point to your 2nd partition. Select Yes. Reboot.

After reboot, EVERY app you install will automatically go to SD card.

If you don't know how to create partition search for a guide in Google there are plenty of them

That was quite a journey searching for an answer not involving rooting but I ended up:

  1. Unlocking my bootloader

  2. Booting on TWRP without installing it:

    fastboot boot recovery.img
  3. Installing Chainfire's SuperSU with TWRP.

  4. From Terminal Emulator or adb's shell:

    pm set-install-location 2
  5. From an application's menu in Settings > Applications just pushing Move to SDCARD moves it* - its data and obb - to the external SDCARD.

  6. Removing SuperSU......

Full unroot

Nah... I didn't do that! 3:)