模拟位置死活不动免ROOT虚拟定位拖个摇杆就走【免费下载链接】GoGoGo一个基于 Android 调试 API 百度地图实现的虚拟定位工具并且同时实现了一个可以自由移动的摇杆项目地址: https://gitcode.com/GitHub_Trending/go/GoGoGo做回归测试时你在地图上点了个模拟位置目标 App 里的蓝点却纹丝不动——八成忘了在开发者选项里把它设为模拟位置应用。GoGoGo 就是个免 ROOT 的虚拟定位工具百度地图选点靠 Android 调试 API 改坐标还带一个能拖着走的悬浮摇杆。四步装好门槛只有 Android 8.0 以上环境硬条件就一条Android 8.0 及以上鸿蒙实测能跑更老版本作者手里没有设备、不做适配。拉源码git clone https://gitcode.com/GitHub_Trending/go/GoGoGoAndroid Studio 打开工程等 Gradle 同步完成——报 Java 相关错误时先对齐JAVA_HOME和 Studio 用的 JDK 版本这是编译期最常见的翻车点连接设备编译安装后启动依次授予定位、悬浮窗权限进开发者选项 → 选择模拟位置信息应用选中 GoGoGo——漏掉这步一切白搭应用内检测到未设置时也会弹窗直接带你跳转装完启动你看到的主界面就是一张百度地图点哪算哪右下角按钮一按模拟定位服务就跑起来通知栏会挂一个常驻图标。三个高频场景卡住的点都在这儿卡住你的基本是三类情况想让位置动起来、想快速回固定点、手上只有一串坐标。让蓝点持续走起来摇杆模拟位置移动测路径规划或运动轨迹时一个静态坐标根本不够用位置得一直在走。点地图左侧的摇杆按钮调出悬浮摇杆通知栏快捷按钮也能控制它显隐摇杆指向哪个方向模拟位置就按当前速度朝哪个方向位移速度能在设置里调步行、跑步、骑行的节奏都能对上悬浮窗模式下可以直接在摇杆面板里搜点、选点不用切回主界面效果目标 App 看到的位置每 100ms 刷一次表现是持续移动而不是瞬移。固定点位反复切搜索与历史记录秒回同一批点位反复测每次重新搜一遍地名既慢又容易搜串。点搜索图标输入关键词从 POI 结果列表里点选即设点用过的地点自动存进历史菜单进历史页点一下就能跳回去从历史列表选点时还能加随机偏移避免每次都落在同一组坐标历史页工具栏带下载、分享、清空测完把点位列表直接发给同事效果配合几个常测点位回归时切点基本是秒回。手上只有经纬度WGS84 与 BD09 坐标系换算工单里贴的坐标往往是 WGS84直接贴进百度地图会偏出几百米还得手动换算。打开坐标输入入口填入经纬度坐标系可选 GPS(WGS84) 或 BD09选 WGS84 时由MapUtils的wgs2bd09自动换算成百度坐标系地图上先确认落点位置对了再点传送确认后地图居中落点直接启动模拟效果不用再拿别的 App 手动算偏移量。模拟位置的原理测试 Provider 接管 LocationManager说白了GoGoGo 干的就一件事用LocationManager的测试 Provider 机制把 GPS 和网络定位两个数据源接管过来。启动时先addTestProvider注册测试源参数照抄系统真实 Provider 的属性作者用调试器截了图存在仓库里再开一条独立HandlerThread上面的 Handler 每 100ms 把当前坐标装进一个新的Location对象写进系统// 把当前坐标包装成一次真实 GPS 上报每 100ms 执行一次 Location loc new Location(LocationManager.GPS_PROVIDER); loc.setAccuracy(Criteria.ACCURACY_FINE); loc.setLatitude(mCurLat); loc.setLongitude(mCurLng); loc.setAltitude(mCurAlt); loc.setBearing(mCurBea); loc.setSpeed((float) mSpeed); loc.setTime(System.currentTimeMillis()); mLocManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, loc);GPS 和网络定位两个源都注册、都喂同一个坐标是因为不同 App 有的只读 GPS、有的只读网络定位漏喂一个就可能被判定为信号异常。摇杆自己不直接写位置它只以每秒位移量 方向角回调onMoveInfo由ServiceGo按1 度纬度 ≈ 110.574km的换算更新当前坐标下一个 100ms 周期自然带出去。想深挖看这几个文件ServiceGo.java测试 Provider 注册、100ms 定位循环、通知栏控制、JoyStick.java摇杆手势与速度换算、MapUtils.javaWGS84/BD09 坐标换算。坑与边界用之前先看问题基本都出在模拟源和真实源打架上另有几条边界要提前知道。现象模拟位置偶尔跳回真实位置。原因Android 定位是多源融合基站、WiFi 定位还开着时真实信号会盖过测试 Provider作者也承认这是调试 API 的固有问题。怎么办目标 App 走高精度定位关掉无关的联网定位或换 WiFi 信号弱的环境再测。现象微信等腾讯系 App 完全没反应。原因这类客户端有自己的定位校验逻辑。怎么办README 原话是建议去问一下腾讯实操就是换个被测应用验证遇到这类 App 先确认它读的是哪个定位源再决定要不要继续折腾。现象Android 8.0 以下用不了。原因作者手头机器就是 8.0没有低版本设备做适配。怎么办直接用 8.0 设备鸿蒙系统实测可正常运行。现象编译时 Gradle 报 Java 版本错。原因环境变量里的JAVA_HOME与 Android Studio 用的 JDK 不一致。怎么办把两处版本对齐即可。不同 App 对位置的态度差很多先对号入座再调参应用类型常见定位策略模拟表现建议导航类GPS网络高频更新基本生效实时刷新用合理移动速度避免瞬移社交/游戏类网络定位或简化逻辑基本生效偶发跳变别短时间跨城市加微小随机偏移校园运动类专门反作弊校验明确不支持开发者已声明不做适配README 里专门写了警告本工具不支持任何校园运动类 App 的作弊行为开发者也不赞同采用任何形式在校园运动中作弊。这条不是技巧问题是边界问题别拿它去刷课。和别的方案比选哪个四个方向比下来GoGoGo 赢在交互成本而不是能力上限。维度GoGoGo需 ROOT 的模拟工具其他免 ROOT 同类工具开发者选项手动模拟操作方式地图点选摇杆命令/配置为主点选为主手动改参数连续移动模拟摇杆持续位移部分支持基本不支持不支持坐标系换算BD09/GPS 均支持部分支持基本不支持不支持位置历史保存内置自动存部分有部分有无只验证一个静态坐标系统开发者选项就够要做轨迹模拟、或在多个预设点位间反复切换选 GoGoGo 交互成本最低。需要 ROOT 的场景不多见——路径模拟、点位切换、坐标系换算它都免 ROOT 做到了。搭着用的几样东西单独一个都解决不了定位问题但搭着用能省一半排查时间。ADB logcat看目标 App 的定位回调日志GPS Test 类应用交叉验证精度与刷新频率Charles抓包判断是否走服务端校验百度地图开放平台文档查地图、POI 与坐标转换 API下次回归再点完地图那个不动的蓝点会自己走起来——前提是开发者选项里那一下没忘。【免费下载链接】GoGoGo一个基于 Android 调试 API 百度地图实现的虚拟定位工具并且同时实现了一个可以自由移动的摇杆项目地址: https://gitcode.com/GitHub_Trending/go/GoGoGo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?