The Android Debug Bridge (ADB) is a versatile command line tool that lets you communicate with and control an Android-powered device over a USB link from a computer. It comes along with other useful tools and code bundled with the Android Software Development Kit (SDK).
The ADB program includes three components:
- A client, which runs on your development machine. You can invoke a client from a shell by issuing an
adbcommand. Other Android tools such as the ADT plugin and DDMS also create adb clients.
- A server, which runs as a background process on your development machine. The server manages communication between the client and the adb daemon running on an emulator or device.
- A daemon, which runs as a background process on each emulator or device instance.
Setting Up ADB
On Windows and Linux
If you installed the Android SDK, the Android Debug Bridge will already be installed along with it. Otherwise, follow our guide on installing the Android SDK.
If you have already downloaded the Android SDK, launch the SDK Manager by typing into a Terminal window:
<sdk> is the path to the tools directory. For example, if the Android SDK is located on the desktop, then you have to type into the terminal window:
As soon as the SDK Manager is launched, click “Available packages”, then “Android Repository.” When the list of available packages pops up, choose the offered revision of “Android SDK Platform-tools”. Click “Install Selected.” If it is installed, the adb executable binary will be located in the
If you don’t have the Android SDK installed yet, download its latest version and unzip it into an appropriate destination folder then follow the instructions above.
Testing If ADB Works
We want to make sure that ADB is now working. First, see to it that your Android device is set up for debugging. On your Android device running Gingerbread, go to the Settings > Applications > Development screen and make sure “USB Debugging” is checked. If you’re already on Ice Cream Sandwich, go to Settings > Developer options and tick “Android debugging” or “USB debugging.”
Connect your computer and Android device with a USB cable. Then, open a terminal on your computer and run the following command:
You should see something like this:
List of devices attached
A result like that (where the X’s represent your device’s actual serial number) confirms that your ADB is set up and working.
Learning the Codes
Now that ADB is already set up on your machine, you might want to know how to use its various flags and command options.
- directs command to the only connected USB device; returns an error if more than one USB device is present.
- directs command to the only running emulator; returns an error if more than one emulator is running.
- -s <serial number>
- directs command to the USB device or emulator with the given serial number. Overrides ANDROID_SERIAL environment variable.
- -p <product name or path>
- simple product name like ‘sooner’, or a relative/absolute path to a product out directory like ‘out/target/product/sooner’. If
-pis not specified, the ANDROID_PRODUCT_OUT environment variable is used, which must be an absolute path.
- list all connected devices
- connect <host>:<port>
- connect to a device via TCP/IP
- disconnect <host>:<port>
- disconnect from a TCP/IP device
- adb push <local> <remote>
- copy file/dir to device
- adb pull <remote> [<local>]
- copy file/dir from device
- adb sync [ <directory> ]
- copy host » device only if changed (see ‘adb help all’)
- adb shell
- run remote shell interactively
- adb shell <command>
- run remote shell command
- adb emu <command>
- run emulator console command
- adb logcat [ <filter-spec> ]
- View device log
- adb forward <local> <remote>
- forward socket connections; forward specs are one of:
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
dev:<character device name>
jdwp:<process pid>(remote only)
- adb jdwp
- list PIDs of processes hosting a JDWP transport
- adb install [-l] [-r] [-s] <file>
- push this package file to the device and install it
-lmeans forward-lock the app
-rmeans reinstall the app, keeping its data
-smeans install on SD card instead of internal storage
- adb uninstall [-k] <package>
- remove this app package from the device (
-kmeans keep the data and cache directories)
- adb bugreport
- return all information from the device that should be included in a bug report.
- adb help
- show this help message
- adb version
- show version num
- (no option)
- don’t touch the data partition
- wipe the data partition
- flash the data partition
- adb wait-for-device
- block until device is online
- adb start-server
- ensure that there is a server running
- adb kill-server
- kill the server if it is running
- adb get-state
- prints: offline | bootloader | device
- adb get-serialno
- prints: <serial-number>
- adb status-window
- continuously print device status for a specified device
- adb remount
- remounts the /system partition on the device read-write
- adb reboot [bootloader|recovery]
- reboots the device, optionally into the bootloader or recovery program
- adb reboot-bootloader
- reboots the device into the bootloader
- adb root
- restarts the adbd daemon with root permissions
- adb usb
- restarts the adbd daemon listening on USB
- adb tcpip <port>
- restarts the adbd daemon listening on TCP on the specified port
- adb ppp <tty> [parameters]
- Run PPP over USB. Note: you should not automatically start a PPP connection.
<tty>refers to the tty for PPP stream. Eg.
defaultroute debug dump local notty usepeerdns
- adb sync [ <directory> ]
- <localdir> can be interpreted in several ways:
- If <directory> is not specified, both /system and /data partitions will be updated.
- If it is “system” or “data”, only the corresponding partition is updated.
Once you already have ADB set up and functioning on your computer, you can start using it for a lot of important Android-related tasks, such as creating Android apps, debugging Android apps, and rooting your Android phone. Check out our how-to guides for rooting your Android phones.