Appium自动化测试安卓平台总体架构图:

注意点
以下注意点面向 Appium3.7
Nodejs版本
大于20.19,小于等于22.x
npm > 10

安卓机Hidden API机制
-
安卓 9 引入谷歌原生机制,区分公开 SDK 与系统内部隐藏接口;uiautomator2‑server 做控件抓取大量依赖隐藏接口。
hidden_api_policy:系统全局设置,控制 ART 虚拟机拦截隐藏接口的松紧。 -
Appium 三条 shell 命令
settings delete global hidden_api_policy_pre_p_apps
settings delete global hidden_api_policy_p_apps
settings delete global hidden_api_policy
目的:adb 修改全局系统配置,整机放开 hidden‑api 拦截。
- Android9:普通 adb 有权限,可以生效。
- Android10 + 非 root:普通 adb 没有
WRITE_SECURE_SETTINGS权限,命令必然报权限拒绝,exit code=255。 - 海外 ColorOS(OPPO A78)叠加
OplusSecurityAgent厂商安全层,再次拦截 adb 操作,无系统开关关闭。
ignoreHiddenApiPolicyError
- 仅忽略新建 session 阶段上述 3 条 adb 命令执行失败报错,打印警告,不终止 session。
- 不会修改系统配置,不会解除 hidden‑api 限制,不给 uia2 增加权限。
- 生效条件:
- Python 客户端:必须
options.set_capability("appium:ignoreHiddenApiPolicyError", True);直接赋值对象属性不会下发 cap,直接失效。 skip_device_initialization = False;开启该参数,整套初始化逻辑直接跳过,cap 完全无效。
- Python 客户端:必须
- 两个关键 capability 开关
skip_server_installation=true:跳过 uiautomator2‑server、test 两个 apk 的 adb 安装与版本校验;手机上 apk 版本必须和电脑驱动版本严格匹配;和 hidden‑api 逻辑无关。skip_device_initialization=true:跳过 Appium Settings 安装、执行 hidden‑api 策略 shell 命令;会直接不执行 relaxHiddenApiPolicy 逻辑;普通真机调试不要开启,仅用于预部署完成的批量压测。