Problem was that noemulatedsd was not set in /fstab.goldfish which led to /mnt/secure/asec to not be mounted at boot. I had to look through Android's source code to find this -_-. Why google.
Steps to get working emulator:
- Install Android SDK Tools Only. The directory where the SDK is installed will henceforth be known as
<sdk>. - Launch the Android SDK Manager, install everything under the
Android 4.4.2group - Now overwrite the
ramdisk.imgfile (located at<sdk>/add-ons/addon-google_apis-google-19/images/armeabi-v7awith this modified version. This is the ramdisk file used by theGoogle APIs (Google Inc.) - API Level 19device target. - Launch the Android ADB Manager, create a new Android Virtual Device. Make sure the target is set to
Google APIs (Google Inc.) - API Level 19. Give the device plenty of RAM, and make sure that there is a SD Card!. (Also, remember to enable GPU Acceleration as well) - Launch the Android Virtual Device. Everything should work fine, especially apps that have
installLocationset topreferExternal.
Apparently ADB Manager on Windows is nerfed (cannot set SD Card size and enable GPU Acceleration), so the command line has to be used. To create the AVD,
"<sdk>/tools/android" create avd -n <avd_name> -t "Google Inc.:Google APIs:19" -c <size>M
<size> is the size of the SD Card in megabytes (e.g. 1000M). <avd_name> is what you want to name the AVD.
And to run the AVD,
"<sdk>/tools/emulator" -avd <avd_name> -gpu on