Most Android devices have an ability to enable mock locations under developer options. As the name would suggest, it can be used to specify a different location from where you actually are.

This is perfect for Pokemon Go! Theoretically, one could spoof the location and let a bot do all the walking from the comfort of the couch.

But the developers at Niantic, Inc are smart. They detect spoofed locations and all that you are presented with is this….

Mock Location Fail
:(

This detection feature can only be as good as the underlying platform. The trick is to sabotage the Android source on which Niantic relies to detect spoofed location.

To do this,

  • Download the Android Source code.
    I decided to work with PureNexus Project for my Nexus 6P.
  • Open frameworks/base/location/java/android/location/Location.java
  • Modify the function isFromMockProvider() so that it always returns false
Mock Location Fail
  • Build the modified source.
    This step can be tricky and can test your proficiency with computers. There are various sources online where one can learn to do this.
Mock Location Application
  • That’s it! Time to sit back, relax and let a bot do all the walking.
Mock Location Win!
:D

In case you're using a Nexus 6P, you may use a build of PureNexus ROM modified by me.
Download pure_nexus_angler-6.0.1-20160714-mocklocation.zip [mirror]



PS:
Well, all said and done, I would still recommend that you play this game the way developers intended it to. Pokemon Go is all about exploring your surroundings and interacting with friends in creative ways. There’s really no fun in letting a bot do this for you.