GoGoGo 免 ROOT 虚拟定位:Android 位置模拟与摇杆控制教程
【免费下载链接】GoGoGo一个基于 Android 调试 API + 百度地图实现的虚拟定位工具,并且同时实现了一个可以自由移动的摇杆项目地址: https://gitcode.com/GitHub_Trending/go/GoGoGo
如果你正在做位置相关功能的测试,又不想对设备做 ROOT 处理,GoGoGo 是一个可以试试的开源虚拟定位工具。它基于 Android 调试 API 与百度地图 SDK,允许你在不暴露真实位置的情况下模拟任意坐标,并附带一个可自由拖动的位置摇杆,让"移动"这件事变得可控。下文按照"适不适合你、怎么装、怎么配、出问题查哪里"的顺序来讲。
先判断它适不适合你的场景
在动手之前,先确认自己是否落在它的使用范围内:
- 适合:Android 开发者验证签到、导航、位置类游戏等逻辑;测试人员需要在多个坐标之间快速切换。
- 前提:Android 8.0 及以上、已开启 USB 调试的真机;构建需要 Android Studio 与 JDK 环境。
- 不适合:期望"绝对不被任何应用识别"的场景——它本质是调试辅助工具,识别效果与目标应用、系统版本相关,以实际运行结果为准。
运行前提:设备与环境怎么准备
- 用 USB 连接设备,执行
adb devices确认能识别到设备。 - 准备 Android Studio(4.0 及以上)与 JDK 11 及以上。
- 获取代码到本地:
git clone https://gitcode.com/GitHub_Trending/go/GoGoGo- 在 Android Studio 中打开项目,构建并安装到设备,再启动应用即可看到地图界面。
五分钟完成第一次位置模拟
按下面顺序操作,预期每一步都有明确反馈:
- 打开应用,进入地图主界面。
- 用两种方式之一确定目标点:直接在地图上点击,或输入精确经纬度坐标,也可以按地址搜索。
- 点击启动按钮,等待通知栏出现定位服务标识,表示虚拟位置已生效。
- 打开任意依赖位置的应用,确认其读取到的坐标与你在 GoGoGo 中设置的一致。
如果目标应用显示的位置没变化,先回到"排错"一节检查权限与服务状态。
三种定位模式怎么选:GPS、网络与被动
GoGoGo 同时创建了几种不同的位置提供者,对应不同的信号来源。选择时主要看目标应用依赖哪种:
| 模式 | 信号来源 | 典型用途 | 注意点 |
|---|---|---|---|
| GPS | 卫星 | 户外导航、高精度轨迹 | 功耗相对较高 |
| 网络 | 蜂窝 / WiFi | 室内或城市环境定位 | 依赖网络环境 |
| 被动 | 其他应用提供的更新 | 只接收、不主动发起 | 本身不产生新位置 |
GPS 模式下的提供者参数配置大致如下,精度、卫星依赖等字段决定了它的定位特性:
摇杆与历史记录:两个值得留意的模块
- 摇杆:支持八方向控制虚拟位置的移动,指令即时生效,适合模拟连续走动。相关视图代码位于 joystick 模块。
- 定位服务:负责创建与移除虚拟位置提供者、驱动摇杆移动,是核心逻辑所在,见 ServiceGo.java。
- 历史数据:坐标与搜索记录的存储检索由 database 模块 承担,可保存常用位置、一键复用。
原理与边界:虚拟定位提供者如何工作
它的核心思路是通过系统的LocationManager注册测试用的位置提供者,再持续向其写入坐标,从而让上层应用"读到"模拟位置。服务启动时会移除旧的测试提供者并重新添加,避免残留状态:
需要注意的边界:
- 需要系统在设置中允许该应用作为模拟位置来源,否则写入不生效。
- 提供者参数(精度、是否支持速度、功耗等级等)会影响某些应用的判断,具体表现因目标应用而异。
- 服务停止时会移除提供者并回收摇杆资源,属于预期行为。
位置跳回或不被识别时,从这里查起
- 位置偶发跳回真实坐标:确认服务持续在前台运行,检查更新间隔设置,并留意系统是否优先使用了其他定位源。
- 应用读不到虚拟位置:确认目标应用已授予位置权限,尝试切换定位模式后重启该应用。
- 摇杆无反应:检查悬浮窗权限是否开启。
下一步你可以:在设备实测中记录不同模式的表现,遇到异常时在仓库提交 Issue,或阅读 README 补充细节。若只想快速验证,建议先从"五分钟完成第一次位置模拟"流程走通,再逐步尝试摇杆与历史功能。
【免费下载链接】GoGoGo一个基于 Android 调试 API + 百度地图实现的虚拟定位工具,并且同时实现了一个可以自由移动的摇杆项目地址: https://gitcode.com/GitHub_Trending/go/GoGoGo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考