海外上架的 Android App,测试只靠带 Play 商店的模拟器行不行?

国内买的安卓手机,开机后大多找不到 Play 商店。做海外 App 的人头一回准备测试设备,往往就卡在这儿。Android Studio 自带的模拟器能装 Google 全家桶,于是不少人干脆不买机器,全靠虚拟设备。这条路能走多远,官方文档写得挺清楚。

模拟器这边能做到的

Device Manager 新建设备时,硬件配置列表里有一列 Play Store。按官方文档的描述,这一列带 Google Play 标志的设备定义既装了商店应用,也能用 Play 服务。这类设备的扩展控制面板(Extended controls)里多一个 Google Play 标签页,上面有个按钮专门用来更新服务。其中设备类型为 Phone 的还符合 CTS。

系统镜像另有一类标着 Google APIs 的,文档只写了它能访问 Play 服务,至于带不带商店,没提。地图、FCM 推送这些依赖 Play 服务的功能,用它调一般就够。FCM 的接入文档对客户端的要求是 Android 7.0 起步:真机得装着 Play 商店,模拟器则要用带 Google APIs 的镜像。

带 Play 商店的镜像用发布密钥签名,拿不到 root。排查问题非得要提权的话,文档建议换成不含 Google 应用和服务的 AOSP 镜像,用 adb root 和 adb unroot 来回切换。Doze 也不必上真机,官方测试步骤写明模拟器同样可以,用 adb 把系统强制切进 idle 状态就行。

卡在模拟器上的几件事

接了 Play Integrity 的 App 最容易踩坑。判定说明页里,MEETS_DEVICE_INTEGRITY 要求 App 运行在经过认证的正品 Android 设备上,Android 13 及以上还要有硬件级的证明,表明 bootloader 已锁、跑的是认证过的厂商系统镜像。没通过 Google Play 完整性检查的模拟器,拿到的 deviceRecognitionVerdict 是空的。MEETS_VIRTUAL_INTEGRITY 只在 App 上架 Google Play Games for PC 时才会出现,普通手机应用指望不上。所以服务端按设备完整性做拦截的那段逻辑,得拿真机过一遍。文档建议真机保持出厂 ROM、锁好 bootloader。完整性 API 本身也能在 Play Console 里建测试来验。

模拟器的相机给的是软件生成的画面,或者直接借电脑摄像头,扫码、对焦、闪光灯这类细节测不出来。硬件配置项里也找不到 NFC。

下面两样官方没专门写,属于做久了的共识:

  • 海外品牌在原生系统上加的省电和进程管理,模拟器里没有。推送准不准时、任务会不会被杀,只能拿对应品牌的机器看。
  • 帧率、发热、低端机内存吃紧时的表现,模拟器跑在性能富余的电脑上,得出的数字参考意义不大。

不想囤一抽屉手机

上传 app bundle 以后,只要设备实验室容量够,Play Console 就会生成一份预发布报告:把 App 装到一批 Android 设备上爬几分钟,检查稳定性、兼容性、性能和无障碍问题。结果一般一小时内出来。测试机都在美国,内容按地区限制的 App 看到的只是那边的版本。

Firebase Test Lab 的免费 Spark 方案,每天额度是虚拟机 10 次、物理设备 5 次。可它的配额页顶部挂着弃用通知:Test Lab 将在 2027 年 9 月 30 日彻底关停,官方给的去处是 Google Cloud 上的 Developer Device Platform。新项目要不要把 CI 绑在上面,得掂量一下。

2023 年 11 月 13 日以后注册的个人开发者账号,上架前还得跑一轮封闭测试:至少 12 个人连续加入满 14 天,才能申请正式版访问权限。这批人手里的机器就是现成的真机样本,帮助页也建议多找设备类型不同的人。

真要自己买几台,标准不复杂。出厂就带 Play 商店、Google 服务能正常更新的机器才考虑;覆盖系统版本时,低的贴近 minSdk,高的选较新的 Android 大版本。刷机或解锁 bootloader 的二手机别碰,Play Integrity 那关多半通不过,测出来的东西也说明不了问题。

大家手上常备的海外测试机都是哪几台?