没有 Google 服务的 Huawei 上的模拟位置
没有 Google 服务的 Huawei 和 Honor 手机用户经常听到一种说法:他们无法使用虚拟定位。这是错误的:模拟位置是 Android 自身的一部分,而不是 Google 在其上附加的组件,在没有 Google Play 的手机上,这套机制的工作方式完全相同。区别只在于从哪里获取应用,以及 EMUI 把需要的设置放在哪里。
确认不需要 Google 服务
应用需要 Android 8.0 或更高版本、开发者模式和位置权限,任何 Huawei 手机都具备这些。既不需要 Google 账号,也不需要 Google Play 服务或 root:模拟通过系统自带的测试位置提供程序机制实现。


开启开发者模式
设置 →“关于手机”→ 连续点按“版本号”七次。之后“开发人员选项”会出现在“设置 → 系统和更新”中(在较早的 EMUI 版本中就是“系统”)。

选择模拟位置信息应用
在开发人员选项中找到“选择模拟位置信息应用”,选择 Mock Location。同一时间只能有一个应用提供坐标,这是 Android 的限制,而不是 EMUI 的。

设置应用启动管理
设置 →“电池”→“应用启动管理”→ 找到 Mock Location,为它关闭“自动管理”。会弹出带三个开关的窗口:“允许自启动”“允许关联启动”和“允许后台活动”,把三个都打开。这是关键一步:在自动管理模式下,EMUI 会自行决定关闭后台服务。

检查效果
点按地图开始模拟,然后打开另一个地图应用。如果它显示的是所选位置,说明机制在系统层面生效,没有 Google 服务并无影响。

为什么模拟不依赖 Google
模拟位置在 Android 本身中实现:系统允许一个被选中的应用注册测试提供程序并向其中写入坐标,然后把这些坐标提供给所有以常规方式请求位置的应用。Google Play 服务与这套机制无关:它在系统 API 之上提供自己的位置 API,但并不取代系统 API。
实际结果是:在没有 Google 服务的手机上,模拟可以正常工作。而只通过 Google API 获取坐标的应用,在这类手机上即使不模拟也无法工作,原因与模拟无关。
三个开关缺一不可
“允许自启动”让系统在关闭应用后可以把它重新拉起。“允许关联启动”允许应用因其他应用或系统的事件而启动,重启后恢复模拟靠的就是它。“允许后台活动”让服务在应用切到后台时继续运行。
关闭第三个开关和关闭第一个一样,都会让模拟中断,所以请把三个都打开,而不只是最显眼的自启动。
HarmonyOS 和 Honor
在 HarmonyOS 上,各项设置的位置与 EMUI 几乎相同:开发者模式同样通过点按七次开启,这一项位于“系统和更新”中,启动管理位于“电池”中。名称可能差一两个字,思路相同。
两家公司分开后,Honor 有了自己的系统,但也保留了带同样三个开关的应用启动管理,请在电池设置中查找。
如果模拟仍然停止
检查应用是否又回到了自动启动管理:系统大版本更新有时会重置这项设置。服务存活的标志是通知栏中的常驻通知;如果通知消失了,说明系统关闭了服务。
其他原因与厂商无关,单独讲解见为什么模拟会在后台中断。