RouteSim

LSPosed 路线 / 位置模拟模块 —— 按你画好的路线或选定的位置,给指定 App 模拟 GPS 定位。

只在 LSPosed 作用域内的 App 进程里生效,不 hook 系统框架(system_server),不影响其他 App 和系统定位。

License Android API


功能

路线模拟

  • 地图选点:在高德瓦片地图上点选路线点,拖动微调、点线段插入点、撤销。
  • 手绘路线:单指直接在地图上画,松手自动去手抖、平滑成曲线。
    • 平滑程度分弱 / 中 / 强三档,切换后会重新处理刚画的那一笔
    • 可以画多笔,后一笔自动接在前一笔的尾巴上,接口处也会平滑
    • 画回起点附近自动闭合成一圈
    • 「✋ 移动/缩放」可以随时切去拖动、缩放地图,再回来接着画
  • 三种跑法
    • 单程:跑到终点停下
    • 循环:首尾相连一直跑,适合操场
    • 往返:到终点掉头倒着跑回起点,再正着跑。掉头时自然减速,方向角随之翻转
  • 跑步参数:配速、速度波动、GPS 漂移、定位回调间隔都可以调,起步时有加速过程。
  • 保存路线:给路线命名保存,随时载入、重命名、覆盖、删除。

位置模拟

  • 固定在一个位置。速度接近 0,可以设 0–10 米的自然漂移。
  • 位置的来源:地图选点、手动输入坐标(GCJ-02 / WGS-84 / BD-09),或者一键用路线起点。
  • 顶栏一键在「路线模拟 / 位置模拟」之间切换,运行中约 2 秒生效。

地点搜索

  • 默认使用 OpenStreetMap,无需配置。
  • 在设置的「高级」里填高德「Web服务」Key 后,改用高德搜索,国内地点更准,并优先显示当前视野附近的结果。
  • 也可以直接输入「经度,纬度」跳过去。

定位覆盖

  • 系统定位接口(LocationManager):截获定位请求,由模块按路线推送 WGS-84 定位和假卫星状态(Android 11+)。真实 GPS 和 NMEA 不再进入 App。
  • 高德定位 SDK(AMapLocation):直接返回路线上的 GCJ-02 点,定位类型为 GPS。可以强制高德只用 GPS,防止被 Wi-Fi / 基站定位拉回真实位置。
  • 隐藏模拟位置标记:isFromMockProvider / isMock 一律返回 false。
  • 兼容加固 App:高德类在壳解密后才加载,也能补挂上。
  • 运行中修改路线、配速、模式约 2 秒生效,不用重启目标 App。

环境要求

项目 要求
Android 8.0(API 26)及以上
框架 支持 Modern Xposed API(libxposed API 101+)的 LSPosed
作用域 只勾选要模拟定位的 App,不需要勾选「系统框架」

安装与使用

LSPosed

  1. 从 Releases 下载 APK 并安装。
  2. 在 LSPosed 中启用 RouteSim,作用域勾选目标 App。
  3. 打开 RouteSim,顶部显示「已连接 LSPosed」即表示和框架连通。
  4. 选择「路线模拟」或「位置模拟」,设置好路线或位置。所有改动自动保存并同步。
  5. 强行停止并重新打开目标 App。模块生效。
  6. 查看日志:LSPosed 管理器 → 日志,搜索 RouteSim。

Npatch(如果你没有ROOT权限,或从未听说过ROOT权限,看这里)

  1. 从Releases 下载RouteSim的 APK 并安装,从Npatch的Releases页面下载Npatch并安装。

  2. 授予Npatch必要的权限(不需要Shizuku服务,无视即可)

  3. Npatch → 管理 → 应用 → 右下角加号 → 选择一个目录用于存储修补过的安装包 → 选择目标应用 → 选择本地模式,破解签名校验改为Extreme →更多选项,打开注入加载器DEX → 开始打包 → 卸载原目标应用,安装打包后的apk

  4. Npatch → 应用 → 目标应用 → 作用域 → 勾选RouteSim

  5. 关闭Npatch → 打开RouteSim → 打开Npatch,此时RouteSim顶部应显示已连接Npatch

  6. 在RouteSim中选择「路线模拟」或「位置模拟」,设置好路线或位置。

  7. 强行停止并重新打开目标 App。模块生效。

    对于鸿蒙系统,使用卓易通完成以上操作即可

构建

Android Studio / Gradle

直接打开项目根目录即可。libxposed API 通过 compileOnly 'io.github.libxposed:api:102.0.0' 从 Maven Central 引入。

不用 Android Studio

需要 aapt、aidl、dalvik-exchange(dx)、zipalign、apksigner,以及 API 30+ 的 android.jar:

# 用自动生成的 debug.keystore 签名
ANDROID_JAR=/path/to/android.jar ./build_local.sh

# 用自己的正式密钥签名
RELEASE_KS=/path/to/release.jks RELEASE_ALIAS=routesim RELEASE_PASS=你的密码 \
ANDROID_JAR=/path/to/android.jar ./build_local.sh

输出在 build_local/RouteSim.apk。stubs/ 是只给这个脚本编译用的 libxposed API 桩,不会打进 APK。

项目结构

app/src/main/
├── java/io/github/xashian/routesim/
│   ├── Hook.java          # 模块入口:定位接口 / 高德 SDK 的 hook
│   ├── RouteEngine.java   # 路线插值、配速、漂移、往返、单点
│   ├── Coord.java         # WGS-84 / GCJ-02 / BD-09 坐标转换
│   ├── Config.java        # 配置项(同步给目标 App)
│   ├── XService.java      # 与 LSPosed 框架通信(Remote Preferences)
│   ├── MainActivity.java  # 设置界面
│   ├── MapActivity.java   # 地图选点 / 手绘页(WebView)
│   ├── PlaceSearch.java   # 地点搜索(OpenStreetMap / 高德)
│   └── Store.java         # 本地数据:已保存路线、高德 Key(不同步给目标 App)
├── assets/map/            # 地图页面(map.html)与 Leaflet
├── aidl/                  # libxposed service 接口
└── resources/META-INF/xposed/   # 模块入口、元数据、推荐作用域

关于本项目的生成方式

本项目的源代码完全由 AI(Anthropic 的 Claude)根据我的需求生成。需求、功能设计和取舍由我决定,并在设备上测试;我没有手写代码。

  • 代码可能存在未发现的缺陷,请自行审阅后再使用。
  • AI 生成内容的著作权在各法域尚无定论。本人在可主张的范围内以 MIT 许可证发布;若相关部分不受著作权保护,则任何人均可自由使用。

免责声明

本模块仅供学习和研究位置模拟技术。使用时请遵守当地法律法规和目标 App 的用户协议,由使用本模块产生的后果由使用者自行承担。

许可证

MIT © 2026 Xashian

第三方组件保留其原许可证:

  • Leaflet 1.9.4:BSD-2-Clause,见 app/src/main/assets/map/LEAFLET_LICENSE
  • stubs/ 与 app/src/main/aidl/:按 libxposed API(Apache-2.0)接口编写的编译期桩代码
  • 地图瓦片:© 高德地图,使用须遵守其服务条款

Releases