Architecture Diagrams
- To the left of the blue dotted line is users concern
- To the right of the blue dotted line is abstracted by Appium
- Appium server talks to the necessary native libraries of Android (adb, UI Automator etc.) and ensures that the commands are passed to the target device/emulator
- adb is part of android sdk and hence adb server keeps running inside the device and listens to the commands sent by Appium server.
- On the host machine which a target device is connected to, adb-server communicates with adbd (adb daemon) on either emulator or real device
- Appium server communicates with adb server through adb client that comes as part of android sdk (All of this is not mentioned in the architecture owing to granular details)
- Appium server also talks to UI Automator using its internal bootstrap npm module. Prior to Android 4.2, appium used selendroid to communicate with UI Automator. Hence when you connect an Android device which is older i.e < 4.2 sdk, you have to start appium server by specifying --selendroid-port