LSPosed 路线 / 位置模拟模块 —— 按你画好的路线或选定的位置,给指定 App 模拟 GPS 定位。
只在 LSPosed 作用域内的 App 进程里生效,不 hook 系统框架(system_server),不影响其他 App 和系统定位。
- 地图选点:在高德瓦片地图上点选路线点,拖动微调、点线段插入点、撤销。
- 手绘路线:单指直接在地图上画,松手自动去手抖、平滑成曲线。
- 平滑程度分弱 / 中 / 强三档,切换后会重新处理刚画的那一笔
- 可以画多笔,后一笔自动接在前一笔的尾巴上,接口处也会平滑
- 画回起点附近自动闭合成一圈
- 「✋ 移动/缩放」可以随时切去拖动、缩放地图,再回来接着画
- 三种跑法
- 单程:跑到终点停下
- 循环:首尾相连一直跑,适合操场
- 往返:到终点掉头倒着跑回起点,再正着跑。掉头时自然减速,方向角随之翻转
- 跑步参数:配速、速度波动、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,不需要勾选「系统框架」 |
- 从 Releases 下载 APK 并安装。
- 在 LSPosed 中启用 RouteSim,作用域勾选目标 App。
- 打开 RouteSim,顶部显示「已连接 LSPosed」即表示和框架连通。
- 选择「路线模拟」或「位置模拟」,设置好路线或位置。所有改动自动保存并同步。
- 强行停止并重新打开目标 App。模块生效。
- 查看日志:LSPosed 管理器 → 日志,搜索
RouteSim。
-
从Releases 下载RouteSim的 APK 并安装,从Npatch的Releases页面下载Npatch并安装。
-
授予Npatch必要的权限(不需要Shizuku服务,无视即可)
-
Npatch → 管理 → 应用 → 右下角加号 → 选择一个目录用于存储修补过的安装包 → 选择目标应用 → 选择本地模式,破解签名校验改为Extreme →更多选项,打开注入加载器DEX → 开始打包 → 卸载原目标应用,安装打包后的apk
-
Npatch → 应用 → 目标应用 → 作用域 → 勾选RouteSim
-
关闭Npatch → 打开RouteSim → 打开Npatch,此时RouteSim顶部应显示已连接Npatch
-
在RouteSim中选择「路线模拟」或「位置模拟」,设置好路线或位置。
-
强行停止并重新打开目标 App。模块生效。
对于鸿蒙系统,使用卓易通完成以上操作即可
直接打开项目根目录即可。libxposed API 通过 compileOnly 'io.github.libxposed:api:102.0.0' 从 Maven Central 引入。
需要 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
第三方组件保留其原许可证: