Android 免 root 虚拟定位
至今仍有人认为没有 root 就无法虚拟定位。这种看法已经过时:模拟位置机制内置于 Android,用户在开发者选项中选择的任何应用都能使用它。下面看看这条路线能做什么、不能做什么,以及为什么另一种选择(修改固件)的代价比看上去更高。
确认您真的不需要 root
如果任务是向通过系统以常规方式获取位置的应用提供坐标,内置机制就足够了:地图、天气、附近搜索、您正在开发和测试的应用。这涵盖了绝大多数场景。

开启开发者模式
设置 →“关于手机”→ 点按“版本号”七次。设置中会出现“开发者选项”;根据系统不同,它位于第一级、“系统”中或“更多设置”中。

选择模拟位置信息应用
在开发者选项中找到“选择模拟位置信息应用”,选择已安装的应用。同一时间只能启用一个:系统不允许多个应用同时提供坐标。

开始模拟并检查
在地图上选点,开启模拟,然后打开另一个地图应用。如果它显示的是所选位置,说明机制在系统层面生效,而且不需要任何额外权限。

它实际上是如何工作的
Android 允许被选中的应用注册所谓的测试位置提供程序,并向其中写入坐标。然后系统把这些坐标提供给所有以常规方式请求位置的应用。移动应用的自动化测试使用的也是这套机制,它本来就是为开发而设计的,而不是为了绕过什么。
因此模拟不需要超级用户权限:应用不干预其他进程,也不改写系统库,而是使用由用户有意开启的官方功能。
root 能带来什么,又为什么代价不菲
修改固件唯一能从根本上增加的,是隐藏模拟这一事实的能力:去掉“模拟来源”标记,骗过检查它的应用。这需要解锁引导加载程序,以及 Magisk 或类似模块。
代价是:失去保修;一些银行应用和服务会因系统完整性检查而无法启动;系统更新无法正常安装;刷机失败还可能让手机变砖。我们不支持也不介绍这条路线,Mock Location 严格在内置机制范围内工作。
局限在哪里
不使用 root 时,想发现模拟的应用都能如实看到它。把位置当作事实证明的服务(配送签收确认、考勤打卡、基于位置的奖励)通常会做这项检查,不会接受模拟坐标。带反作弊系统的游戏也是如此。
这不是某个应用的缺陷,而是有意的架构选择:应用只做系统允许的事,不假装能做得更多。
虚拟定位与 VPN 有何不同
两者常被混淆。VPN 改变的是网络流量的来源:按 IP 地址判断,服务会认为您在另一个国家。虚拟定位改变的是操作系统提供给应用的坐标。
这是两条不同的渠道,彼此不能替代:按 IP 判断位置的应用不会注意到模拟坐标,向系统请求坐标的应用也不会注意到 VPN。有时两者都需要。