An independently written Android virtual-location debugger using Material Design 3, OpenStreetMap, Root, and LSPosed.
Licensed under GPL-3.0-only.
Testing-only notice. This project is for lawful, authorized device and application testing only. Do not use it to bypass access controls, misrepresent real-world activity, evade platform rules, or affect third-party services. You are solely responsible for complying with applicable law, service terms, and consent requirements.
The source is organized around an explicit Root boundary, reboot-volatile control state, LSPosed
location rewriting, fixed-location mode, and a time-stepped route engine. See
INDEPENDENT_IMPLEMENTATION.md for the implementation-separation audit and
THIRD_PARTY_NOTICES.md for the current dependency inventory.
Requirements: JDK 17, Android SDK 35, and an internet connection for Gradle dependencies.
./gradlew assembleDebug- Install the APK on a rooted device with LSPosed.
- Enable AtlasMock in LSPosed. Select System Framework as the minimum scope; add an individual target app if its client-side location wrapper also needs interception.
- Reboot or restart the selected scopes.
- Open AtlasMock, grant Root and notification access, choose a point, and start simulation.
The control properties intentionally disappear after reboot. AtlasMock marks rewritten locations
with the atlasmock.active extra; it does not implement mock-detection concealment.
AtlasMock is provided as is, without warranty of any kind. It is a debugging and test tool, not a guarantee that any app, service, device, or platform will accept simulated data. Use only on devices and software you own or are explicitly authorized to test. See DISCLAIMER.md.
- General: advances route coordinates at a selectable speed from
0to1000 km/hand does not synthesize step events. - Walking/running: uses a pace from
2to20 min/km, derives a reasonable cadence, and generates step-counter, step-detector, accelerometer, linear-acceleration, and gyroscope state. Optional natural variation introduces small, continuous position and cadence changes.
When enabled, system-side delivery hooks rewrite GPS, network, passive, and fused LocationResult
objects before clients receive them. GNSS callbacks can be populated with synthetic GPS, BeiDou,
and Galileo satellite state. Motion-sensor synthesis requires the target app itself to be included
in the LSPosed scope.