| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 1 | # ADB(1) MAN PAGE |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 2 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 3 | # VERSION |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 4 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 5 | 1.0.41 |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 6 | |
| 7 | # NAME |
| 8 | |
| 9 | **adb** |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 10 | CLI Client for ADB (Android Debug Bridge) Server. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 11 | |
| 12 | # SYNOPSIS |
| 13 | |
| 14 | **adb** [*GLOBAL_OPTIONS*] command [*COMMAND_OPTIONS*] |
| 15 | |
| 16 | # DESCRIPTION |
| 17 | |
| 18 | Connects to the ADB Server via its smart socket interface. Allows sending requests, receives responses and manages lifecycle of the adb server. |
| 19 | |
| 20 | Tasks are performed via commands. Some commands are fulfilled directly by the server while others are "forwarded over to the adbd(ADB daemon) running on the device. |
| 21 | |
| 22 | # GLOBAL OPTIONS: |
| 23 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 24 | **-a** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 25 | Listen on all network interfaces, not just localhost. |
| 26 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 27 | **-d** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 28 | Use USB device (error if multiple devices connected). |
| 29 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 30 | **-e** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 31 | Use TCP/IP device (error if multiple TCP/IP devices available). |
| 32 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 33 | **-s** **SERIAL** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 34 | Use device with given **SERIAL** (overrides $ANDROID_SERIAL). |
| 35 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 36 | **-t** **ID** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 37 | Use device with given transport **ID**. |
| 38 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 39 | **-H** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 40 | Name of adb server host [default=localhost]. |
| 41 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 42 | **-P** **PORT* |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 43 | Smart socket **PORT** of adb server [default=5037]. |
| 44 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 45 | **-L** **SOCKET** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 46 | Listen on given socket for adb server [default=tcp:localhost:5037]. |
| 47 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 48 | **\-\-one-device** **SERIAL**|**USB** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 49 | Server will only connect to one USB device, specified by a **SERIAL** number or **USB** device address (only with 'start-server' or 'server nodaemon'). |
| 50 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 51 | **\-\-exit-on-write-error** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 52 | Exit if stdout is closed. |
| 53 | |
| 54 | |
| 55 | # GENERAL COMMANDS: |
| 56 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 57 | devices [**-l**] |
| 58 | List connected devices. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 59 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 60 | **-l** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 61 | Use long output. |
| 62 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 63 | help |
| 64 | Show this help message. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 65 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 66 | version |
| 67 | Show version number. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 68 | |
| 69 | # NETWORKING |
| 70 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 71 | connect **HOST**[:**PORT**] |
| 72 | Connect to a device via TCP/IP [default **PORT**=5555]. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 73 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 74 | disconnect [**HOST**[:**PORT**]] |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 75 | Disconnect from given TCP/IP device [default **PORT**=5555], or all. |
| 76 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 77 | pair **HOST**[:**PORT**] [**PAIRING_CODE**] |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 78 | Pair with a device for secure TCP/IP communication. |
| 79 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 80 | forward **\-\-list** | [**--no-rebind**] **LOCAL_REMOTE** | **\-\-remove** **LOCAL** | **\-\-remove-all** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 81 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 82 | **\-\-list** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 83 | List all forward socket connections. |
| 84 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 85 | [**--no-rebind**] **LOCAL_REMOTE** |
| 86 | Forward socket connection using one of the followings. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 87 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 88 | **tcp**:**PORT** (local may be "tcp:0" to pick any open port. |
| 89 | **localreserved**:**UNIX_DOMAIN_SOCKET_NAME**. |
| 90 | **localfilesystem**:**UNIX_DOMAIN_SOCKET_NAME**. |
| 91 | **jdwp**:**PROCESS PID** (remote only). |
| 92 | **vsock**:**CID**:**PORT** (remote only). |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 93 | **acceptfd**:**FD** (listen only). |
| Octavian Purdila | 4b4421d | 2024-04-03 23:13:14 -0700 | [diff] [blame] | 94 | **dev**:**DEVICE_NAME**. |
| 95 | **dev-raw**:**DEVICE_NAME**. (open device in raw mode)**. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 96 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 97 | **\-\-remove** **LOCAL** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 98 | Remove specific forward socket connection. |
| 99 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 100 | **\-\-remove-all** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 101 | Remove all forward socket connections. |
| 102 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 103 | reverse **\-\-list** | [**\-\-no-rebind**] **REMOTE** **LOCAL** | **\-\-remove** **REMOTE** | **\-\-remove-all** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 104 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 105 | **\-\-list** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 106 | List all reverse socket connections from device. |
| 107 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 108 | [**\-\-no-rebind**] **REMOTE** **LOCAL** |
| 109 | Reverse socket connection using one of the following. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 110 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 111 | tcp:**PORT** (**REMOTE** may be "tcp:0" to pick any open port). |
| 112 | localabstract:**UNIX_DOMAIN_SOCKET_NAME**. |
| 113 | localreserved:**UNIX_DOMAIN_SOCKET_NAME**. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 114 | localfilesystem:**UNIX_DOMAIN_SOCKET_NAME**. |
| 115 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 116 | **\-\-remove** **REMOTE** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 117 | Remove specific reverse socket connection. |
| 118 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 119 | **\-\-remove-all** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 120 | Remove all reverse socket connections from device. |
| 121 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 122 | mdns **check** | **services** |
| 123 | Perform mDNS subcommands. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 124 | |
| 125 | **check** |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 126 | Check if mdns discovery is available. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 127 | |
| 128 | **services** |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 129 | List all discovered services. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 130 | |
| 131 | |
| 132 | # FILE TRANSFER: |
| 133 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 134 | push [**--sync**] [**-z** **ALGORITHM**] [**-Z**] **LOCAL**... **REMOTE** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 135 | Copy local files/directories to device. |
| 136 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 137 | **--sync** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 138 | Only push files that are newer on the host than the device. |
| 139 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 140 | **-n** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 141 | Dry run, push files to device without storing to the filesystem. |
| 142 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 143 | **-z** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 144 | enable compression with a specified algorithm (any/none/brotli/lz4/zstd). |
| 145 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 146 | **-Z** |
| 147 | Disable compression. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 148 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 149 | pull [**-a**] [**-z** **ALGORITHM**] [**-Z**] **REMOTE**... **LOCAL** |
| 150 | Copy files/dirs from device |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 151 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 152 | **-a** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 153 | preserve file timestamp and mode. |
| 154 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 155 | **-z** |
| 156 | enable compression with a specified algorithm (**any**/**none**/**brotli**/**lz4**/**zstd**) |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 157 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 158 | **-Z** |
| 159 | disable compression |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 160 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 161 | sync [**-l**] [**-z** **ALGORITHM**] [**-Z**] [**all**|**data**|**odm**|**oem**|**product**|**system**|**system_ext**|**vendor**] |
| 162 | Sync a local build from $ANDROID_PRODUCT_OUT to the device (default all) |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 163 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 164 | **-n** |
| 165 | Dry run. Push files to device without storing to the filesystem. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 166 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 167 | **-l** |
| 168 | List files that would be copied, but don't copy them. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 169 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 170 | **-z** |
| 171 | Enable compression with a specified algorithm (**any**/**none**/**brotli**/**lz4**/**zstd**) |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 172 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 173 | **-Z** |
| 174 | Disable compression. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 175 | |
| 176 | # SHELL: |
| 177 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 178 | shell [**-e** **ESCAPE**] [**-n**] [**-Tt**] [**-x**] [**COMMAND**...] |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 179 | Run remote shell command (interactive shell if no command given). |
| 180 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 181 | **-e** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 182 | Choose escape character, or "**none**"; default '**~**'. |
| 183 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 184 | **-n** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 185 | Don't read from stdin. |
| 186 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 187 | **-T**: |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 188 | Disable pty allocation. |
| 189 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 190 | **-t**: |
| 191 | Allocate a pty if on a tty (-tt: force pty allocation). |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 192 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 193 | **-x** |
| 194 | Disable remote exit codes and stdout/stderr separation. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 195 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 196 | emu **COMMAND** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 197 | Run emulator console **COMMAND** |
| 198 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 199 | # APP INSTALLATION |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 200 | (see also `adb shell cmd package help`): |
| 201 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 202 | install [**-lrtsdg**] [**--instant**] **PACKAGE** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 203 | Push a single package to the device and install it |
| 204 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 205 | install-multiple [**-lrtsdpg**] [**--instant**] **PACKAGE**... |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 206 | Push multiple APKs to the device for a single package and install them |
| 207 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 208 | install-multi-package [**-lrtsdpg**] [**--instant**] **PACKAGE**... |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 209 | Push one or more packages to the device and install them atomically |
| 210 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 211 | **-r**: |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 212 | Replace existing application. |
| 213 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 214 | **-t** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 215 | Allow test packages. |
| 216 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 217 | **-d** |
| 218 | Allow version code downgrade (debuggable packages only). |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 219 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 220 | **-p** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 221 | Partial application install (install-multiple only). |
| 222 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 223 | **-g** |
| 224 | Grant all runtime permissions. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 225 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 226 | **\-\-abi** **ABI** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 227 | Override platform's default ABI. |
| 228 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 229 | **\-\-instant** |
| 230 | Cause the app to be installed as an ephemeral install app. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 231 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 232 | **\-\-no-streaming** |
| 233 | Always push APK to device and invoke Package Manager as separate steps. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 234 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 235 | **\-\-streaming** |
| 236 | Force streaming APK directly into Package Manager. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 237 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 238 | **\-\-fastdeploy** |
| 239 | Use fast deploy. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 240 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 241 | **-no-fastdeploy** |
| 242 | Prevent use of fast deploy. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 243 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 244 | **-force-agent** |
| 245 | Force update of deployment agent when using fast deploy. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 246 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 247 | **-date-check-agent** |
| 248 | Update deployment agent when local version is newer and using fast deploy. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 249 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 250 | **\-\-version-check-agent** |
| 251 | Update deployment agent when local version has different version code and using fast deploy. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 252 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 253 | **\-\-local-agent** |
| 254 | Locate agent files from local source build (instead of SDK location). See also `adb shell pm help` for more options. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 255 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 256 | uninstall [**-k**] **APPLICATION_ID** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 257 | Remove this **APPLICATION_ID** from the device. |
| 258 | |
| 259 | **-k** |
| 260 | Keep the data and cache directories. |
| 261 | |
| 262 | # DEBUGGING: |
| 263 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 264 | bugreport [**PATH**] |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 265 | Write bugreport to given PATH [default=bugreport.zip]; if **PATH** is a directory, the bug report is saved in that directory. devices that don't support zipped bug reports output to stdout. |
| 266 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 267 | jdwp |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 268 | List pids of processes hosting a JDWP transport. |
| 269 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 270 | logcat |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 271 | Show device log (logcat --help for more). |
| 272 | |
| Fabien Sanglard | 0578941 | 2024-05-30 23:00:18 -0700 | [diff] [blame] | 273 | server-status Display server configuration (USB backend, mDNS backend, log location, binary path. See [adb_host.proto](../../proto/adb_host.proto) (AdbServerStatus) for details. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 274 | |
| 275 | # SECURITY: |
| 276 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 277 | disable-verity |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 278 | Disable dm-verity checking on userdebug builds. |
| 279 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 280 | enable-verity |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 281 | Re-enable dm-verity checking on userdebug builds. |
| 282 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 283 | keygen **FILE** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 284 | Generate adb public/private key; private key stored in **FILE**. |
| 285 | |
| 286 | # SCRIPTING: |
| 287 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 288 | wait-for [-**TRANSPORT**] -**STATE**... |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 289 | Wait for device to be in a given state. |
| 290 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 291 | **STATE**: device, recovery, rescue, sideload, bootloader, or disconnect. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 292 | **TRANSPORT**: **usb**, **local**, or **any** [default=**any**]. |
| 293 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 294 | get-state |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 295 | Print offline | bootloader | device. |
| 296 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 297 | get-serialno |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 298 | Print **SERIAL_NUMBER**. |
| 299 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 300 | get-devpath |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 301 | Print **DEVICE_PATH**. |
| 302 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 303 | remount [**-R**] |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 304 | Remount partitions read-write. |
| 305 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 306 | **-R** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 307 | Automatically reboot the device. |
| 308 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 309 | reboot [**bootloader**|**recovery**|**sideload**|**sideload-auto-reboot**] |
| 310 | Reboot the device; defaults to booting system image but supports **bootloader** and **recovery** too. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 311 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 312 | **sideload** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 313 | Reboots into recovery and automatically starts sideload mode. |
| 314 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 315 | **sideload-auto-reboot** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 316 | Same as **sideload** but reboots after sideloading. |
| 317 | |
| 318 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 319 | sideload **OTAPACKAGE** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 320 | Sideload the given full OTA package **OTAPACKAGE**. |
| 321 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 322 | root |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 323 | Restart adbd with root permissions. |
| 324 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 325 | unroot |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 326 | Restart adbd without root permissions. |
| 327 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 328 | usb |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 329 | Restart adbd listening on USB. |
| 330 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 331 | tcpip **PORT** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 332 | Restart adbd listening on TCP on **PORT**. |
| 333 | |
| 334 | # INTERNAL DEBUGGING: |
| 335 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 336 | start-server |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 337 | Ensure that there is a server running. |
| 338 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 339 | kill-server |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 340 | Kill the server if it is running. |
| 341 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 342 | reconnect |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 343 | Close connection from host side to force reconnect. |
| 344 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 345 | reconnect device |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 346 | Close connection from device side to force reconnect. |
| 347 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 348 | reconnect offline |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 349 | Reset offline/unauthorized devices to force reconnect. |
| 350 | |
| 351 | # USB: |
| 352 | |
| 353 | Only valid when running with libusb backend. |
| 354 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 355 | attach **SERIAL** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 356 | Attach a detached USB device identified by its **SERIAL** number. |
| 357 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 358 | detach **SERIAL** |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 359 | Detach from a USB device identified by its **SERIAL** to allow use by other processes. |
| 360 | |
| 361 | |
| Fabien Sanglard | e33a9b7 | 2022-03-18 17:17:20 -0700 | [diff] [blame] | 362 | # Features: |
| 363 | |
| 364 | host-features |
| 365 | list features supported by adb server. |
| 366 | |
| 367 | features |
| 368 | list features supported by both adb server and device. |
| 369 | |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 370 | # ENVIRONMENT VARIABLES |
| 371 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 372 | $ADB_TRACE |
| Fabien Sanglard | b94502a | 2024-06-17 17:37:50 -0700 | [diff] [blame] | 373 | Comma (or space) separated list of debug info to log: all,adb,sockets,packets,rwx,usb,sync,sysdeps,transport,jdwp,services,auth,fdevent,shell,incremental, mdns. |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 374 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 375 | $ADB_VENDOR_KEYS |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 376 | Colon-separated list of keys (files or directories). |
| 377 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 378 | $ANDROID_SERIAL |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 379 | Serial number to connect to (see -s). |
| 380 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 381 | $ANDROID_LOG_TAGS |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 382 | Tags to be used by logcat (see logcat --help). |
| 383 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 384 | $ADB_LOCAL_TRANSPORT_MAX_PORT |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 385 | Max emulator scan port (default 5585, 16 emulators). |
| 386 | |
| Shaju Mathew | 4e5b35e | 2023-12-12 16:37:23 +0000 | [diff] [blame] | 387 | $ADB_MDNS_AUTO_CONNECT |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 388 | Comma-separated list of mdns services to allow auto-connect (default adb-tls-connect). |
| 389 | |
| Fabien Sanglard | 0d1a7aa | 2023-07-25 06:06:16 +0000 | [diff] [blame] | 390 | $ADB_MDNS_OPENSCREEN |
| 391 | The default mDNS-SD backend is Bonjour (mdnsResponder). For machines where Bonjour is not installed, adb can spawn its own, embedded, mDNS-SD back end, openscreen. If set to "1", this env variable forces mDNS backend to openscreen. |
| 392 | |
| Shaju Mathew | 315e0de | 2023-09-20 19:42:06 +0000 | [diff] [blame] | 393 | $ADB_LIBUSB |
| 394 | ADB has its own USB backend implementation but can also employ libusb. use `adb devices -l` (`usb:` prefix is omitted for libusb) or `adb host-features` (look for `libusb` in the output list) to identify which is in use. To override the default for your OS, set ADB_LIBUSB to "1" to enable libusb, or "0" to enable the ADB backend implementation. |
| 395 | |
| Fabien Sanglard | f2e342b | 2022-08-12 14:00:43 -0700 | [diff] [blame] | 396 | # BUGS |
| 397 | |
| 398 | See Issue Tracker: [here](https://issuetracker.google.com/issues/new?component=192795&template=1310483). |
| 399 | |
| 400 | # AUTHORS |
| 401 | |
| 402 | See [OWNERS](../../OWNERS) file in ADB AOSP repo. |