1. Play商店不能正常安装应用的来龙去脉:国内安卓设备的谷歌服务差异与域名解析问题

2016年有消息称“谷歌要推出 Google Play China版”,虽然后来没有大范围推广,但这一尝试仍然对国内安卓设备的谷歌服务产生了影响。至今,许多国内安卓手机出厂时自带的谷歌服务(Google Play Service)软件与国际版本存在差异。例如,本人手中的小米、OnePlus 手机自带谷歌服务,在 apkpure 上更新 Google Play Service 时,会提示“安装失败,已安装了签名冲突的应用”。这说明国内安卓手机自带的谷歌服务与国际版本并不一致。

谷歌服务的 API 请求域名也存在差异:

  • 国际版的域名为 "services.googleapis.com"
  • 国内版的域名为 "services.googleapis.cn"

然而,在一部分代理软件中,默认情况下国内设备会优先使用 "services.googleapis.cn" 域名,并不会将其重定向到 "services.googleapis.com" 域名,这种情况下,代理软件会解析该域名为国内 IP地址。在"services.googleapis.cn"解析为国内地址时,会返回国内cdn的下载地址,其域名形式为"[xxxx].xn--ngstr-lra8j.com",而国内cdn会阻止国外ip的访问,若此时域名"[xxxx].xn--ngstr-lra8j.com"走代理,请求无效,即表现为无法下载;但若在使用nekobox下载play商店应用过程中,在提示"等待中"时关闭代理,则又可以正常下载应用。


2. 进一步分析:Google Play 应用下载地址解析机制与代理问题

在 Play 商店下载应用时,谷歌商店会根据以下因素判断应用的下载地址是 "services.googleapis.cn" 还是 "services.googleapis.com"

  • 谷歌账号区域
  • 使用者 IP 地址
  • 手机系统 ROM

随后,下载地址会通过 302 跳转 转到真正的谷歌全球 CDN 下载地址,其中国内的 CDN 下载地址形式为 "[xxxx].xn--ngstr-lra8j.com"

特别说明

国产 ROM 系统不会考虑谷歌账号区域或使用者 IP,默认使用 "services.googleapis.cn"。从 v2rayNG 的日志可以发现,在下载应用时,v2rayNG 会将 "services.googleapis.cn" 重写为 "services.googleapis.com",因此 v2rayNG 可以正常下载谷歌商店应用。但 nekobox 并没有这一配置,所以无法正常安装应用。

此外,国区账号、国内 IP 或部分香港 IP 也很可能被指定为 "services.googleapis.cn"。此时,如果 "services.googleapis.cn""[xxxx].xn--ngstr-lra8j.com" 没有 “同时直连” ,就无法正常下载安装谷歌商店的应用。


3. 问题解决方案

  1. 转圈时断开代理或关闭 WiFi,直接用数据下载

    • 缺点:每次都需要手动切换代理或 WiFi,操作较为繁琐。
  2. ※推荐方案:设置谷歌商店相关域名的直连规则
    在 nekobox 的路由配置中,修改 “中国Play商店规则” 如下并启用该规则:

    • 优点:精准解决问题,无需影响其他流量,且一劳永逸。
domain:
googleapis.cn
xn--ngstr-lra8j.com
outbound:
绕过

标签: nekobox

评论已关闭