- Android Debug Bridge
- In this document
- Enabling adb Debugging
- Syntax
- Commands
- Querying for Emulator/Device Instances
- Directing Commands to a Specific Emulator/Device Instance
- Installing an Application
- Forwarding Ports
- Copying Files to or from an Emulator/Device Instance
- Stopping the adb Server
- Wireless usage
- How to Install ADB on Windows, macOS, and Linux
- What is Android Debug Bridge (ADB)?
- How does ADB Work?
- How to Setup ADB
- Phone Setup
- How to setup ADB on Microsoft Windows
- How to setup ADB on macOS
- How to setup ADB on Linux
- Examples of ADB Commands
- Bonus
- What else can I do with ADB?
Android Debug Bridge
In this document
Android Debug Bridge (adb) is a versatile command line tool that lets you communicate with an emulator instance or connected Android-powered device. It is a client-server program that includes three components:
- A client, which runs on your development machine. You can invoke a client from a shell by issuing an adb command. 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.
You can find the adb tool in /platform-tools/ .
When you start an adb client, the client first checks whether there is an adb server process already running. If there isn’t, it starts the server process. When the server starts, it binds to local TCP port 5037 and listens for commands sent from adb clients—all adb clients use port 5037 to communicate with the adb server.
The server then sets up connections to all running emulator/device instances. It locates emulator/device instances by scanning odd-numbered ports in the range 5555 to 5585, the range used by emulators/devices. Where the server finds an adb daemon, it sets up a connection to that port. Note that each emulator/device instance acquires a pair of sequential ports — an even-numbered port for console connections and an odd-numbered port for adb connections. For example:
Emulator 1, console: 5554
Emulator 1, adb: 5555
Emulator 2, console: 5556
Emulator 2, adb: 5557
and so on.
As shown, the emulator instance connected to adb on port 5555 is the same as the instance whose console listens on port 5554.
Once the server has set up connections to all emulator instances, you can use adb commands to access those instances. Because the server manages connections to emulator/device instances and handles commands from multiple adb clients, you can control any emulator/device instance from any client (or from a script).
Enabling adb Debugging
In order to use adb with a device connected over USB, you must enable USB debugging in the device system settings, under Developer options.
On Android 4.2 and higher, the Developer options screen is hidden by default. To make it visible, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options at the bottom.
On some devices, the Developer options screen may be located or named differently.
Note: When you connect a device running Android 4.2.2 or higher to your computer, the system shows a dialog asking whether to accept an RSA key that allows debugging through this computer. This security mechanism protects user devices because it ensures that USB debugging and other adb commands cannot be executed unless you’re able to unlock the device and acknowledge the dialog. This requires that you have adb version 1.0.31 (available with SDK Platform-tools r16.0.1 and higher) in order to debug on a device running Android 4.2.2 or higher.
For more information about connecting to a device over USB, read Using Hardware Devices.
Syntax
You can issue adb commands from a command line on your development machine or from a script. The usage is:
If there’s only one emulator running or only one device connected, the adb command is sent to that device by default. If multiple emulators are running and/or multiple devices are attached, you need to use the -d , -e , or -s option to specify the target device to which the command should be directed.
Commands
The table below lists all of the supported adb commands and explains their meaning and usage.
Table 1. Available adb commands
Category | Command | Description | Comments |
---|---|---|---|
Target Device | -d | Direct an adb command to the only attached USB device. | Returns an error if more than one USB device is attached. |
-e | Direct an adb command to the only running emulator instance. | Returns an error if more than one emulator instance is running. | |
-s | Direct an adb command a specific emulator/device instance, referred to by its adb-assigned serial number (such as «emulator-5556»). | See Directing Commands to a Specific Emulator/Device Instance. | |
General | devices | Prints a list of all attached emulator/device instances. | See Querying for Emulator/Device Instances for more information. |
help | Prints a list of supported adb commands. | ||
version | Prints the adb version number. | ||
Debug | logcat [option] [filter-specs] | Prints log data to the screen. | |
bugreport | Prints dumpsys , dumpstate , and logcat data to the screen, for the purposes of bug reporting. | ||
jdwp | Prints a list of available JDWP processes on a given device. | You can use the forward jdwp: port-forwarding specification to connect to a specific JDWP process. For example: | |
Data | install | Pushes an Android application (specified as a full path to an .apk file) to an emulator/device. | |
pull | Copies a specified file from an emulator/device instance to your development computer. | ||
push | Copies a specified file from your development computer to an emulator/device instance. | ||
Ports and Networking | forward | Forwards socket connections from a specified local port to a specified remote port on the emulator/device instance. | Port specifications can use these schemes:
|
ppp [parm]. | Run PPP over USB.
Note that you should not automatically start a PPP connection. | ||
Scripting | get-serialno | Prints the adb instance serial number string. | See Querying for Emulator/Device Instances for more information. |
get-state | Prints the adb state of an emulator/device instance. | ||
wait-for-device | Blocks execution until the device is online — that is, until the instance state is device . | You can prepend this command to other adb commands, in which case adb will wait until the emulator/device instance is connected before issuing the other commands. Here’s an example: Note that this command does not cause adb to wait until the entire system is fully booted. For that reason, you should not prepend it to other commands that require a fully booted system. As an example, the install requires the Android package manager, which is available only after the system is fully booted. A command such as would issue the install command as soon as the emulator or device instance connected to the adb server, but before the Android system was fully booted, so it would result in an error. | |
Server | start-server | Checks whether the adb server process is running and starts it, if not. | |
kill-server | Terminates the adb server process. | ||
Shell | shell | Starts a remote shell in the target emulator/device instance. | See ADB Shell Commands for more information. |
shell [shellCommand] | Issues a shell command in the target emulator/device instance and then exits the remote shell. |
Querying for Emulator/Device Instances
Before issuing adb commands, it is helpful to know what emulator/device instances are connected to the adb server. You can generate a list of attached emulators/devices using the devices command:
In response, adb prints this status information for each instance:
- Serial number — A string created by adb to uniquely identify an emulator/device instance by its console port number. The format of the serial number is — . Here’s an example serial number: emulator-5554
- State — The connection state of the instance may be one of the following:
- offline — the instance is not connected to adb or is not responding.
- device — the instance is now connected to the adb server. Note that this state does not imply that the Android system is fully booted and operational, since the instance connects to adb while the system is still booting. However, after boot-up, this is the normal operational state of an emulator/device instance.
- no device — there is no emulator/device connected.
The output for each instance is formatted like this:
Here’s an example showing the devices command and its output:
Directing Commands to a Specific Emulator/Device Instance
If multiple emulator/device instances are running, you must specify a target instance when issuing adb commands. To do so, use the -s option in the commands. The usage for the -s option is:
As shown, you specify the target instance for a command using its adb-assigned serial number. You can use the devices command to obtain the serial numbers of running emulator/device instances. For example:
Note that, if you issue a command without specifying a target emulator/device instance while multiple devices are available, adb generates an error.
If you have multiple devices available (hardware or emulated), but only one is an emulator, simply use the -e option to send commands to the emulator. Likewise if there’s multiple devices but only one hardware device attached, use the -d option to send commands to the hardware device.
Installing an Application
You can use adb to copy an application from your development computer and install it on an emulator/device instance. To do so, use the install command. With the command, you must specify the path to the .apk file that you want to install:
For more information about how to create an .apk file that you can install on an emulator/device instance, see Building and Running
Note that, if you are using the Eclipse IDE and have the ADT plugin installed, you do not need to use adb (or aapt) directly to install your application on the emulator/device. Instead, the ADT plugin handles the packaging and installation of the application for you.
Forwarding Ports
You can use the forward command to set up arbitrary port forwarding — forwarding of requests on a specific host port to a different port on an emulator/device instance. Here’s how you would set up forwarding of host port 6100 to emulator/device port 7100:
You can also use adb to set up forwarding to named abstract UNIX domain sockets, as illustrated here:
Copying Files to or from an Emulator/Device Instance
You can use the adb commands pull and push to copy files to and from an emulator/device instance. Unlike the install command, which only copies an APK file to a specific location, the pull and push commands let you copy arbitrary directories and files to any location in an emulator/device instance.
To copy a file or directory (and its sub-directories) from the emulator or device, use
To copy a file or directory (and its sub-directories) to the emulator or device, use
In the commands, and refer to the paths to the target files/directory on your development machine (local) and on the emulator/device instance (remote). For example:
Stopping the adb Server
In some cases, you might need to terminate the adb server process and then restart it to resolve the problem (e.g., if adb does not respond to a command).
To stop the adb server, use the kill-server command. You can then restart the server by issuing any other adb command.
Wireless usage
adb is usually used over USB. However, it is also possible to use over Wi-Fi, as described here.
- Connect Android device and adb host computer to a common Wi-Fi network accessible to both. We have found that not all access points are suitable; you may need to use an access point whose firewall is configured properly to support adb.
- Connect the device with USB cable to host.
- Make sure adb is running in USB mode on host.
- Connect to the device over USB.
- Restart host adb in tcpip mode.
- Find out the IP address of the Android device: Settings -> About tablet -> Status -> IP address. Remember the IP address, of the form #.#.#.# .
- Connect adb host to device:
- Remove USB cable from device, and confirm you can still access device:
You’re now good to go!
If the adb connection is ever lost:
- Make sure that your host is still connected to the same Wi-Fi network your Android device is.
- Reconnect by executing the «adb connect» step again.
- Or if that doesn’t work, reset your adb host: and then start over from the beginning.
Источник
How to Install ADB on Windows, macOS, and Linux
Several features of the Android platform can be accessed only through paths and methods that are hidden away from the average user. These have generally been done with the help of some command line Android Debug Bridge (ADB) commands, a tool that Google offers for developers to debug various parts of their applications or the system, but which we can use for all kinds of neat and hidden tricks. A prerequisite to these tricks is installing ADB on your computer. So, in this guide, we will show you how to install ADB on Windows, macOS, and Linux in quick and easy-to-follow steps.
Table of Contents:
What is Android Debug Bridge (ADB)?
The internal structure of the Android Debug Bridge (ADB) is based on the classic client-server architecture. There are three components that make up the entire process.
- The client, i.e. the PC or Mac you have connected to your Android device. We are sending commands to our device from this coomputer through the USB cable (and wirelessly as well in some cases).
- A daemon (adbd), which runs commands on a device. The daemon runs as a background process on each device.
- A server, which manages communication between the client and the daemon. The server runs as a background process on the PC/Mac.
How does ADB Work?
Because there are three pieces that makeup ADB (the Client, Daemon, and the Server), this requires certain pieces to be up and running in the first place. So if you have freshly booted the computer (and you don’t have it setup to start the daemon on boot), then you will need it to be running before any communication can be sent to the target Android device. You’ll see this the following message in the command prompt or terminal, as it will check to make sure the daemon is running.
If the daemon isn’t running, then it will start the process and tell you which local TCP port it has been started on. Once that ADB service has been started, it will continue to listen to that specific port for commands that have been sent by the ADB client. It will then set up connections to all running devices which are attached to the computer (including emulators). This is the moment where you’ll receive the authorization request on the Android device if the computer hasn’t been authorized in the past.
How to Setup ADB
Note: Setting up ADB on the computer is just half the equation since you’ll also need to do some things on the smartphone or tablet to accept the ADB commands.
Phone Setup
- Launch the Settings application on your phone.
- Tap the About Phone option generally near the bottom of the list.
- Then tap the Build Number option 7 times to enable Developer Mode. You will see a toast message when it is done.
- Now go back to the main Settings screen and you should see a new Developer Options menu you can access.
- Go in there and enable the USB Debugging mode option.
- You are partially done with the phone setup process. Next up, you will need to scroll below and follow the rest of the instructions for your particular operating system.
Follow along for the operating system on your computer.
How to setup ADB on Microsoft Windows
- Download the Android SDK Platform Tools ZIP file for Windows.
- Extract the contents of this ZIP file into an easily accessible folder (such as C:\platform-tools)
- Open Windows explorer and browse to where you extracted the contents of this ZIP file
- Then open up a Command Prompt from the same directory as this ADB binary. This can be done by holding Shift and Right-clicking within the folder then click the “Open command window here” option. (Some Windows 10 users may see “PowerShell” instead of “command window”.)
- Connect your smartphone or tablet to your computer with a USB cable. Change the USB mode to “file transfer (MTP)” mode. Some OEMs may or may not require this, but it’s best to just leave it in this mode for general compatibility.
- In the Command Prompt window, enter the following command to launch the ADB daemon:В adb devices
- On your phone’s screen, you should see a prompt to allow or deny USB Debugging access. Naturally, you will want to grant USB Debugging access when prompted (and tap the always allow check box if you never want to see that prompt again).
- Finally, re-enter the command from step #6. If everything was successful, you should now see your device’s serial number in the command prompt (or the PowerShell window).
Yay! You can now run any ADB command on your device! Now go forth and start modding your phone by following our extensive list of tutorials!
How to setup ADB on macOS
- Download the Android SDK Platform Tools ZIP file for macOS.
- Extract the ZIP to an easily-accessible location (like the Desktop for example).
- Open Terminal.
- To browse to the folder you extracted ADB into, enter the following command:В cd /path/to/extracted/folder/
- For example, on my Mac it was this: cd /Users/Doug/Desktop/platform-tools/
- Connect your device to your Mac with a compatible USB cable. Change the USB connection mode to “file transfer (MTP)” mode. This is not always required for every device, but it’s best to just leave it in this mode so you don’t run into any issues.
- Once the Terminal is in the same folder your ADB tools are in, you can execute theВ following command to launch the ADB daemon:В ./adb devices
- On your device, you’ll see an “Allow USB debugging” prompt. Allow the connection.
- Finally, re-enter the command from step #7. If everything was successful, you should now see your device’s serial number in macOS’s Terminal window.
Congratulations! You can now run any ADB command on your device!В Now go forth and start modding your phone by following our extensive list of tutorials!
While the guide above will certainly work, some seasoned macOS users should be aware that there can be an easier way to install ADB on their Macs using an unofficial package manager such as Homebrew or MacPorts.
How to setup ADB on Linux
- Download the Android SDK Platform Tools ZIP file for Linux.
- Extract the ZIP to an easily-accessible location (like the Desktop for example).
- Open a Terminal window.
- Enter the following command:В cd /path/to/extracted/folder/
- This will change the directory to where you extracted the ADB files.
- So for example: cd /Users/Doug/Desktop/platform-tools/
- Connect your device to your Linux machine with your USB cable. Change the connection mode to “file transfer (MTP)” mode. This is not always necessary for every device, but it’s recommended so you don’t run into any issues.
- Once the Terminal is in the same folder your ADB tools are in, you can execute theВ following command to launch the ADB daemon:В ./adb devices
- Back on your smartphone or tablet device, you’ll see a prompt asking you to allow USB debugging. Go ahead and grant it.
- Finally, re-enter the command from step #8. If everything was successful, you should now see your device’s serial number in the Terminal window output.
Congrats! You can now run any ADB command on your device!В Now go forth and start modding your phone by following our extensive list of tutorials!
Some Linux users should be aware that there can be an easier way to install ADB on their computer. The guide above will certainly work for you, but those own a Debian or Fedora/SUSE-based distro of Linux can skip steps 1 and 2 of the guide above and use one of the following commands:
- Debian-based Linux users can type the following command to install ADB:
- Fedora/SUSE-based Linux users can type the following command to install ADB:
However, it is always better to opt for the latest binary from the Android SDK Platform Tools release, since the distro-specific packages often contain outdated builds.
Just to cover all of our bases here, users may need to put a ./ in front of the ADB commands we list in future tutorials, especially when they are using the extracted binaries directly from the Platform Tools ZIP. This is something that is likely known by any *nix user (or Windows user running PowerShell) already, but again, we want as many people as possible to understand how to do these tweaks for Android no matter how much of your operating system you know.
Examples of ADB Commands
To check if you have successfully installed ADB, connect your device to your PC/Mac with your USB cable, and run the adb devices command as described above. It should display your device listed in the Command Prompt/PowerShell/Terminal window. If you get a different output, we recommend starting over with the steps.
As mentioned above, you can use ADB to do all sorts of things on an Android device. Some of these commands are built directly into the ADB binary and should work on all devices. You can also open up what is referred to as an ADB Shell and this will let you run commands directly on the device. The commands which are run directly on the device can vary from device to device (since OEMs can remove access to certain ones, and also modify adb behavior) and can vary from one version of Android to the next as well.
Below, you’ll find a list of example commands which you can do on your device:
- Print a list of connected devices: adb devices
- Kill the ADB server: adb kill-server
- Install an application: adb install
Copy a file/directory to the device: adb push
Bonus
For those who want to take this a step further, you can follow this new tutorial we put together that will walk you through how to set up ADB so that you can use the command from any directory on a Windows or Linux desktop.
What else can I do with ADB?
Below is a list of XDA tutorials for various devices that detail many applications of ADB commands in order to modify hidden settings, customize OEM features or user interfaces, and much more!
Источник