免Root按应用伪装位置:用Xposed模块FakeLocation完成Android虚拟定位的完整实操
【免费下载链接】FakeLocationXposed module to mock locations per app.项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation
设置里没碰过"模拟位置"开关,某个App却显示你人在千里之外——这是怎么做到的?答案是Android虚拟定位模块FakeLocation:它不需要Root,不依赖系统"模拟位置"权限,还能按应用单独设置虚拟位置,甚至同时伪造GPS与基站信息。下面从原理讲到实操,三步完成首次配置,再解锁模板与悬浮窗等进阶能力。
FakeLocation主界面就是这张应用清单:手机上装的所有App都在这里,每个应用对应独立的模拟开关,互不干扰。
免Root怎么改位置:Xposed在系统作答之前换了答案卡
先说清楚它和"开发者选项里那个模拟位置开关"的本质区别。
传统方案走的是系统公开的模拟位置通道:App向系统要位置,系统发现模拟开关是开的,返回一个假坐标,同时给这个坐标打上"来自模拟位置"的标记。等于在出口贴公告——假坐标本身没问题,但公告谁都能看,稍微留心的App一读标记就露馅。
Xposed走了另一条路。它是一个运行在系统层的Hook框架,能在目标App进程启动时注入一段代码,把关键函数的"返回环节"接住。FakeLocation正是利用它,在定位相关的系统API被调用时,在系统作答之前先把答案卡换掉:App问"我现在在哪",它拿到的是一份看起来完全正常的定位结果——没有模拟标记,没有异常开关,进程内一切如常。
被接管的定位通道主要有三条:
- LocationManager:Android系统的标准定位接口,绝大多数App的入口;
- Google Play services Location API:大量App通过GMS拿位置,模块直接从App侧接管,无需再单独设置GMS进程;
- 腾讯定位SDK:国内许多App使用它获取位置,同样在源头被替换。
所以它不需要你开任何系统开关,也不需要Root去改系统文件——改的是"答案"本身,而不是"出口的公告板"。前提只有一个:设备上有可用的Xposed环境(Android 4.3及以上)。
一张表对比:三种虚拟定位方式各差在哪
把市面上常见的三条路线放在一起看,取舍就很清楚了:
| 对比维度 | 系统开发者选项"模拟位置" | Root改机工具 | FakeLocation(Xposed虚拟定位模块) |
|---|---|---|---|
| 是否依赖"模拟位置"开关 | 需要,且带模拟标记,易被识别 | 不需要 | 不需要 |
| 能否按应用单独设置虚拟位置 | 不支持,全局生效 | 部分工具支持 | 支持,每个App独立开关 |
| 基站信息模拟 | 只能模拟GPS | 视工具而定 | 支持,GPS与基站双模模拟 |
| 是否需要Root | 不需要 | 需要 | 不需要 |
| 对系统的影响范围 | 全局定位服务 | 较深,可能改动系统文件 | 仅Hook定位相关接口 |
| 定位结果被App识别的难度 | 低,标记一读即现 | 中 | 相对较高 |
它放弃了"改全局"的粗暴路线,换来的是更细的粒度和更少的权限痕迹——这正是它常用于应用测试与隐私保护场景的原因。
🎯 首次配置:3步完成按应用虚拟定位伪装
最短路径如下,每步只做一件事:
- 装好可用的Xposed环境,在Xposed管理器中激活FakeLocation模块,然后重启设备——这一步决定了模块能否注入目标进程;
- 打开FakeLocation,在应用列表里找到目标App,打开它旁边的模拟开关;
- 进入该App的设置页,为它选择一个虚拟位置来源并保存。
单应用设置页里有两个可自由组合的模块:GPS模拟(纬度、经度,精度到小数点后6位)和基站模拟(Cell type、MCC、MNC、LAC/TAC、CID)。两个同时开启时,App看到的不仅是"卫星说你在哪",还有"蜂窝网络说你在哪个基站下",组合出的定位画像更接近真实设备。
位置来源有三种,按场景任选:
- 地图选点:在高德、百度或Google地图上直接点选,顶部支持地名搜索;选过的地点会进入"最近"列表,开启"即时更新"后点完即写入,无需返回;
- 手动输入:手头正好有一组坐标时直接填经纬度;
- 随机生成:按一下"FEELING LUCKY",模块替你随机挑一个位置,适合快速验证功能是否生效。
地图选点是最直观的方式:搜索、点选、打勾,坐标即刻写入该App的虚拟位置设置。
🕹️ 进阶解锁:模板一键换址、摇杆悬浮窗模拟连续轨迹
基础配置跑通后,这几个功能能让虚拟定位真正好用到日常:
模板管理与一键换址。把常用坐标存成GPS模板或基站模板,之后在"快速填充"菜单里点一下就能整套填入,不用重新填参数;"当前基站信息"还能一键捕获设备真实的基站数据存成模板,伪造的蜂窝信号从此有据可依。
摇杆悬浮窗。在App设置页先点"关联悬浮窗",之后摇杆的方向与力度会实时更新虚拟坐标——模拟步行、驾车这类连续移动轨迹,比反复改坐标自然得多。
更新间隔与GPS状态。位置刷新频率可以调整;GPS状态可自定义,配合目标App的定位逻辑做精细调试。只开GPS模拟时若App提示"正在定位",还可以点设置页或悬浮窗上的"更新"按钮推送一次新位置。
自我隐藏。在模块设置中让特定App看不到FakeLocation本身的存在,降低被反向探测到的概率。
模板与最近记录把换址成本压到最低:存一次,之后点一下模板即可整套切换虚拟位置。
FakeLocation高频问题:Root、不生效、被检测与耗电
Q1:需要Root吗?不需要。模块只要求设备上有可用的Xposed环境(Android 4.3及以上),本身不申请Root权限,也不要求刷第三方系统。
Q2:设置了位置,目标App却没有变化?按顺序排查:①模块是否已在Xposed管理器中激活并重启设备;②该App的模拟开关是否打开;③App若缓存了旧位置,清除其数据再试;④在模块设置中打开Verbose log,复现一次,把日志连同Xposed Installer中的记录对照查看,通常能直接定位卡在哪一环。
Verbose log开关在模块设置的Feedback分组里,排查问题时务必先打开再复现。
Q3:虚拟定位会被App检测到吗?它绕过了系统模拟位置通道,结果上没有模拟标记,比传统方式更难被识别;但任何方案都不存在绝对安全。建议用合理精度、避免高频跳变,别制造"上一秒东京、下一秒巴黎"的轨迹。
Q4:支持哪些Android版本与定位SDK?Android 4.3及以上;除系统LocationManager外,还适配了Google Play services Location API与腾讯定位SDK,并对国内坐标偏移做了修正处理。
Q5:一直开着很耗电吗?资源占用很低。建议只为确实需要的App开开关,不使用时随手关闭,或直接在Xposed中停用整个模块。
🚀 动手环节:从源码编译到验证红点搬家
想从源码开始,流程很短:
- 克隆仓库:
git clone https://gitcode.com/gh_mirrors/fak/FakeLocation - 用Android Studio打开工程编译安装到设备,或直接安装Release APK;
- 在设备装好兼容的Xposed环境,激活FakeLocation模块并重启;
- 打开FakeLocation,选一个测试App,在地图上点一个位置,打开开关;
- 回到测试App刷新定位——看看那个红点是不是已经"搬家"了。
更完整的版本演进(地图搜索、基站模拟增强、GMS新实现、自我隐藏等)可翻项目内的 README.md 与 CHANGELOG.md。
把虚拟定位用在应用测试、隐私保护这些合法场景里,它就是顺手的小工具;位置是你自己的数据,决定让它被谁看到,权利在你手上。
【免费下载链接】FakeLocationXposed module to mock locations per app.项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考