需要 root 吗?
不需要。既不需要也不使用 root:只需在 Android 开发者选项中把 Mock Location 选为模拟位置信息应用一次即可。
不需要,而且这不是妥协,而是这套机制本身的特性。Android 从一开始就支持用于开发和测试的模拟位置:系统允许一个被选中的应用注册测试提供程序并向其中写入坐标,然后把这些坐标提供给所有以常规方式请求位置的应用。
应用不会干预其他进程,也不会改写系统库,它使用的是官方提供、由您自己在开发者选项中开启的功能。因此既不需要解锁引导加载程序,也不需要 Magisk 或 Xposed。
修改固件唯一能从根本上增加的,是隐藏模拟这一事实的能力:去掉让应用区分模拟坐标和真实坐标的“模拟来源”标记。其余所有功能,内置机制无需 root 都能做到。
而这种能力的代价很高:失去保修;一些银行应用和服务会因系统完整性检查而无法启动;系统更新无法正常安装;刷机失败还可能让手机变砖。Mock Location 严格在内置机制范围内工作,不支持这条路线。
实际结论是:不使用 root 时,想发现模拟的应用都能如实看到它。地图、天气、附近搜索、您正在开发和测试的应用都能正常使用。而把位置当作事实证明的服务(配送、考勤打卡、基于位置的奖励)通常不行,这是它们有意的选择,而不是缺陷。详见免 root 虚拟定位一文以及问题为什么应用看到的是真实坐标。