如何用 FakeLocation 为每个应用独立模拟定位:零 Root 的完整上手指南
如何用 FakeLocation 为每个应用独立模拟定位:零 Root 的完整上手指南
【免费下载链接】FakeLocationXposed module to mock locations per app.项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation
FakeLocation 是一款基于 Xposed 框架的 Android 模拟定位模块,核心能力是"按应用模拟定位":无需开启系统的模拟位置权限,就能为每个应用单独设置虚拟位置,并同时支持 GPS 坐标与基站数据的双重伪装。下面这篇指南会带你从原理走到实操,把它真正用起来。
从一场错过的限时活动说起
晚上八点,小林点开心仪手游的公告:东京限定副本开启,登录即可领取绝版道具。可他的定位在杭州,活动页面灰着,只能看着倒计时一点一点归零。他想起手机上有个"开发者选项—模拟位置",打开后换了个国外坐标,结果游戏秒弹"检测到模拟定位"的警告,直接把他踢下线。
问题出在哪?系统级模拟位置开关是公开的,任何应用只要调用一行标准 API 就能查到这个开关是否打开,被识别几乎是必然的。更重要的是,这个开关一旦打开,所有应用都会共享同一个坐标——你没法让游戏落在东京、让外卖落在公司楼下、让社交软件落在另一座城市。小林需要的,是一款能"逐个应用"精确控制、又不容易露馅的工具,这正是 FakeLocation 的定位。
同样是"假定位",FakeLocation 赢在哪里
市面上把位置改掉的方法大致有三类,先看一张对比表,你就能明白差异在哪:
| 对比维度 | FakeLocation(Xposed) | 系统"模拟位置"开关 | 普通改坐标工具 |
|---|---|---|---|
| 实现原理 | 在框架层 Hook 定位 API,直接改写返回值 | 系统公开的开发者选项 | 同左,基于模拟位置权限 |
| 是否需要 Root | 不需要(需安装 Xposed 框架) | 不需要 | 通常不需要 |
| 按应用独立设置 | ✅ 每个应用一套坐标 | ❌ 全局一个位置 | ❌ 全局一个位置 |
| 被应用识别的难度 | 较难(接口返回层面无法察觉) | 极易(有公开检测开关) | 极易 |
| 能否模拟基站信息 | ✅ 支持 MCC/MNC/LAC/TAC/CID | ❌ 只能改 GPS | ❌ 只能改 GPS |
结论很直观:多数工具的短板不是"能不能改",而是"改得太显眼、管得太粗糙"。FakeLocation 选择在 Android 的定位 API 出口处做文章——所有应用获取位置都要走这套接口,它在这里拦截并替换返回值,应用拿到的是一份"看起来完全正常"的定位数据,自然无从察觉。这也解释了为什么它不需要那个惹眼的"模拟位置"开关。
功能深潜:它凭什么能"骗过"应用
既然说到了原理,就值得再往下挖一层。Xposed 框架可以理解为系统级的"钩子":它允许模块在不改动系统文件的前提下,拦截并修改系统函数的执行结果。FakeLocation 正是挂上了LocationManager这一系列定位相关方法,无论是应用调用"获取最后一次定位"还是"注册位置更新回调",拿到的都是模块返回的虚拟数据。
真正体现设计功力的是它做"全"而不只做"精":
- 六位小数精度:纬度、经度支持到小数点后 6 位,精度约 0.1 米,够逼真;
- 基站数据模拟:能配置 MCC(国家码)、MNC(网络码)、LAC/TAC(位置区码)、CID(基站编号)整套参数,让某些"优先靠基站定位"的应用也能正常响应;
- 主流定位通道全覆盖:除了原生接口,还支持 Google Play services 的 Location API 和腾讯定位 SDK——很多应用走的是这三条路之一,只 Hook 一条必然漏风;
- 自我隐藏:可以把模块从指定应用面前"隐身",进一步降低被扫描出 Xposed 环境的概率。
下面这张截图展示的,就是单个应用的完整配置面板:上半部分是 GPS 模拟,下半部分是基站模拟,每一项都能独立开关。
实战案例:三分钟给目标应用设置一个虚拟位置
理论讲完了,来走一遍完整流程。
第一步:环境准备与模块激活。在支持 Xposed 的设备上安装框架(Android 4.3 及以上),然后克隆项目:git clone https://gitcode.com/gh_mirrors/fak/FakeLocation,编译安装后,在 Xposed 管理器中勾选启用 FakeLocation 模块,重启设备让钩子生效。
第二步:在应用列表里找到目标应用。重启后打开 FakeLocation,主界面会列出设备上所有已安装的应用,右上角还支持按应用名或包名搜索,用起来很顺手:
第三步:选点并保存。点击应用进入设置页,打开"GPS Mocking"开关,有两种选点方式:一是直接输入经纬度,二是进入地图界面点选。地图选点更直观——支持搜索地名、查看历史记录,还有个"Feeling Lucky"按钮能随机给你一个坐标,选中后点击确认即可写回设置:
设置完成后,直接打开目标应用,它获取到的位置就会是你刚设的那个点。整个过程不到三分钟。
避坑指南:位置没生效,八成是这几个原因
如果设置后应用毫无反应,先别急着删软件,按下面的顺序排查,绝大多数问题都能解决:
① 模块没真正生效。Xposed 模块修改后必须重启设备才会加载,只重启应用是没用的。确认 Xposed Installer 里模块处于勾选状态,再完整重启一次。
② 应用显示"正在定位""无法定位"。部分应用的定位逻辑比较特殊,不会主动重新拉取数据。这时可以点设置页里的"Notify(更新)"按钮,手动推送一次位置,位置通常会立刻刷新。
③ 位置缓存作祟。一些应用会缓存上一次定位结果。设置好坐标后如果没变化,尝试清除该应用的数据再打开。
④ 应用走的是 Google 服务定位。这类应用需要在全局设置里打开"Google Service API support",然后在对应应用的设置页配置,而不是去单独改 com.google.android.gms。
⑤ 国内坐标出现偏移。国内地图普遍使用加密坐标系,FakeLocation 在设置里提供了"Offset correction(坐标偏移修正)",开启后能自动校正国内坐标的偏移量。
如果你自己排查不了,记得先在设置里打开"Verbose log(详细日志)",复现问题后把 Xposed 日志一并提交,能省去大量来回沟通的时间。
进阶玩法:让虚拟定位更"像真人"
会用基础功能之后,FakeLocation 还有两件利器值得掌握。
第一件是模板与最近记录。把常用的坐标存成 GPS 模板或基站模板,下次只需一步填充,不必重新输入一长串数字;地图选点历史也会自动保留,来回切换城市也就是点两下的事:
第二件是摇杆悬浮窗。在应用设置页点击"Connect(关联)"后,屏幕上会出现一个悬浮摇杆,拖动它就能实时改变虚拟位置,还能调节更新间隔和移动速度。想要模拟"从家走到地铁站"这种连续移动,比手动改坐标自然得多。配合"Remember last position"选项,悬浮窗还会记住上次关闭的位置,不会每次都跑回默认角落。
写在最后:世界在你手中,位置由你掌控
回到开头那位小林——装上 FakeLocation 之后,他在游戏里领到了限定道具,社交软件上又是另一个"城市"的人设,而这一切没有动过系统的模拟位置开关。这就是按应用模拟定位的魅力:一套机制,每个应用各取所需,互不干扰。
最后提醒一句:虚拟定位是把双刃剑。请把它用在合法的测试、隐私保护等场景,不要在涉及交易、打卡考勤、防沉迷等严肃用途上滥用,也不要用来破坏任何服务的公平性。技术本身是中性的,怎么用,取决于你。
想立刻上手的话,先给设备装好 Xposed 框架,再执行git clone https://gitcode.com/gh_mirrors/fak/FakeLocation获取源码,编译安装、启用模块、重启设备,你的"位置自由"之旅就正式开始了。
【免费下载链接】FakeLocationXposed module to mock locations per app.项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
