使用nekobox客户端Google Play商店无法下载或更新应用的原因分析与解决办法
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. 问题解决方案 转圈时断开代理或关闭 WiFi，直接用数据下载 缺点：每次都需要手动切换代理或 WiFi，操作较为繁琐。 ※推荐方案：设置谷歌商店相关域名的直连规则 在 nekobox 的路由配置中，修改 “中国Play商店规则” 如下并启用该规则： 优点：精准解决问题，无需影响其他流量，且一劳永逸。 domain： googleapis.cn xn--ngstr-lra8j.com outbound： 绕过