

If not, the server tries to connect with the daemon until it finds them.

When you invoke the “adb” command, the client will first check if the adb server is running or not. Its purpose is to sense the USB port when you attach or remove the device, maintain a list of connected devices, and assign different states to each of them like “online,” “offline,” “bootloader,” and “recovery.”

Server: The server runs as a background process on your development machine. The ADB server consider a device “online” when it successfully connect with the daemon. Its purpose is to connect with the ADB server through USB or TCP for emulators. Its role is to send commands to the server.ĭaemon (adbd): The daemon runs as a background process on your device. ADB is a client-server program that includes three components:Ĭlient: The client run adb commands from a shell or script on your development machine.
