appium 是基于 nodejs 来打包、发布的,也用它来管理各个 driver,如下图所示,它的结构图如下:

image-20190411154231747

从上图就可以看到:android 的自动化比 iOS 的要难多了!

appium 主程序,依赖各个 driver 程序,其中,安卓的自动化有 3 个 driver,分别是:

  1. appium-android-driver - 用于驱动 UIAutomator1
  2. appium-uiautomator2-driver - 用于驱动 UIAutomator2
  3. appium-espresso-driver - 用于驱动 Espresso

列个表对比一下:

功能\Driver appium-android-driver appium-uiautomator2-driver appium-espresso-driver
用途 驱动 UIAutomator1 驱动 UIAutomator2 驱动 espresso
automationName UiAutomator1 UiAutomator2 Espresso
包形式 AppiumBootstrap.jar appium-uiautomator2-server-v${version}.apk TODO 待研究
包依赖地址 bootstrap/bin/ appium-uiautomator2-server/apks/ TODO
优点 jar 包形式,免安装,一个命令直接启动,权限级别是 shell 级别 官方推荐使用 2,对高版本兼容性好 控件识别能力强
缺点 对高版本兼容性差,容易无法识别控件 apk 形式,需要安装 apk 形式,需求安装,并且是侵入式的,可能带来风险
Server 模块 在相同工程中,Bootstrap 目录,maven 工程,主要目标是在 bin 目录下输出 AppiumBootstrap.jar 不同工程,单独的另外一个 Nodejs 工程:appium-uiautomator2-server 相同 Nodejs 工程,espress-server 目录,gradle 工程

附:AppiumBootstrap.jar 的打包过程:https://zhuanlan.zhihu.com/p/61213093


↙↙↙阅读原文可查看相关链接,并与作者交流