[Nexus 6  General] Choristav:
These past days I've been plagued with Google Play Services draining my battery, especially using the location services. Using Privacy Guard I could clearly see the absurd amount of times my location was requested, even with the location services OFF.

So I went digging and you wouldn't believe the amount of services and providers that google uses to enforce their location track onto the phone.

I am VERY selective with my startup apps, ranging from greenify to swiftkey and adaway, but nothing that explicitly requires any location services whatsoever. I know whatsapp requests your location, but only when you open it. At startup, with very few and selective apps starting up, NOTHING should require your location (having location services OFF), unless there's something that actively tries to monitor where you are (IE: watchdog service, locate my phone, etc).

By default, I had a LOT of requests from the play services for my location CONSTANTLY. I also had 6 or 7 services running in my phone associated with gapps (configfetch service, dispatchingservice, analytics, geolocation, etc).

By disabling all of what I disabled, I managed to decrease the amount of location requests (and therefore wakelocks and idle battery consumption) while still retaining basic functionality like being able to use google maps.

I effectively disabled GOOGLE LOCATION REPORTING, which IS ALWAYS RUNNING IN THE BACKGROUND and CAN NOT BE DISABLED unless you break the mechanism. How do I know? I used Greenify + Donation, and checked "Reveal hidden sync", then I went into accounts-> Google and BAM, location reporting was ALWAYS IN-SYNC, even if you disable it, after a reboot it would come back.

This is XDA so let's get technical, but first, proof:

Automatic method:

1 - If you're using SuperSU, go into

settings -> SuperSU -> Settings -> Enable SU during boot

2 - If you're unsure your rom has init.d support, try Universal init.d. If you're NOT using a nexus please let us know if it works (I'm looking at you touchwiz users ;))

3 - Go to the bottom of this post. Download either FixGS.zip or FixGSExtended.zip, flash through your recovery.

4 - After your next reboot it will take a while (couple of minutes tops, depends on eMMC speed, encryption, etc) to disable all the services.

Go back into the SuperSU settings and DISABLE SU during boot.

5 -That's it, if you need to revert either script, a _REVERT script is also attached at the bottom of the post.

FixGS has all the essential location services enabled. FixGSExtended furthermore disables all the items noted below, under "Additional stuff to remove" in the manual method.

Manual method:

1 - Go to the bottom of this post

2 - Download either FixGS.zip or FixGSExtended.zip, extract the .sh file from it.

3 - Place it in /system/etc/init.d/ and give it 755 permissions (allow all execute and read boxes, only allow owner to write)

4 - If you're unsure your rom has init.d support, try Universal init.d.

4b - I use terminal emulator for Android to execute the script. Simply write

su
./etc/init.d/FixGS.sh

or

./etc/init.d/FixGSExtended.sh

5 -That's it, if you need to revert either script, a _REVERT script is also attached at the bottom of the post.