What’s New

Android SDK Platform Tools

Developer ToolsAI extracted

Command-line tools for Android development — adb, fastboot and systrace, shipped with the SDK.

Latest 37.0.1 · by GoogleWebsite

Changelog

37.0.1

Added 2
  • Add trace level to ADB_TRACE format to accept a log level (for example: usb:v, services:w)
  • Add blame for the kill-server command to print out the process command line chain which requested termination of the adb server
Changed 4
  • Improve USB hotplug system on Linux by relying on udev netlink events instead of kernel to avoid race conditions with udev
  • Improve mDNS backend on Windows by loading wlanapi.dll lazily to allow adb to run on Windows Server that doesn't include wlanapi.dll
  • Introduce libadbusb to replace libusb on Windows; libadbusb can be disabled by setting the ADB_USB_LEGACY environment variable to 1
  • Disable libusb on MacOS and use legacy USB backend instead; libusb can be enabled by setting the ADB_LIBUSB environment variable to 1
Removed 1
  • Delete openscreen backend; the environment variable ADB_MDNS_OPENSCREEN no longer has any effect

adb Delete openscreen backend. The environment variable ADB_MDNS_OPENSCREEN no longer has any effect. The only mDNS backend is libadbmdns. Add trace level. ADB_TRACE format now accepts a log level (for example: usb:v, services:w). Linux: Improve USB hotplug system. Rely on udev netlink events instead of kernel to avoid race conditions with udev. Add blame for the kill-server command. The adb server will print out the process command line chain which requested its termination. Windows: Improve mDNS backend. Load wlanapi.dll lazily to allow adb to run on Windows Server that doesn't include wlanapi.dll. Introduce libadbusb to replace libusb. libadbusb can be disabled by setting the ADB_USB_LEGACY environment variable to 1. MacOS: Disable libusb. Use legacy USB backend instead. libusb can be enabled by setting the ADB_LIBUSB environment variable to 1.

37.0.0

Added 1
  • Libadbmdns now returns .local hostname as part of services metadata
Changed 2
  • Default mDNS backend is now libadbmdns, with openscreen included as deprecated failover
  • Linux USB backend now uses netlink instead of an active loop to detect device addition and deletion
Deprecated 1
  • Library openscreen is deprecated as a failover for mDNS backend

adb The default mDNS backend is now libadbmdns. Library openscreen is still included as a failover but is deprecated. Libadbmdns now also return .local hostname as part of services metadata. Linux USB backend now uses netlink instead of an active loop to detect devices addition/deletion.

36.0.2

Changed 1
  • Make legacy USB backend the default on Linux instead of libusb due to instability reports
Fixed 3
  • Fix bug where Samsung devices were not properly detected
  • Fix bug where old Android devices using USB class Miscellaneous (0xEF) were not properly detected
  • Fix bug where last character of a file was truncated when pulled or pushed on Windows

adb Make legacy USB backend the default on Linux (instead of libusb) due to instability reports (device disconnection, interface read failure, and delayed netlink events preventing device detection). Fix bug where Samsung devices were not properly detected issue #404741058. Fix bug where old Android devices using USB class Miscellaneous (0xEF) were not properly detected issue #365009755. Fix bug where last character of a file was truncated when pulled or pushed [Windows only] issue #439152273.

36.0.0

Added 1
  • Libusb USB backend hot-plug support for Windows with USB speed detection
Changed 2
  • Rewritten libusb USB backend to use sync API instead of async API, improving reliability and fixing memory exhaustion on Linux
  • Improved server-status output to display whether mdns is enabled
Fixed 2
  • Fixed macOS bug where zero-length packets were not sent, resulting in stalled connection
  • Fixed use-after-free in libusb backend

adb Re-written libusb USB backend (uses sync API instead of async API). Improves reliability and fixes memory exhaustion on Linux. Libusb USB backend hot-plug now supports for Windows (enables USB speed detection). Improved server-status now displays if mdns is enabled. Fixed macOS bug where zero-length packets were not sent, resulting in stalled connection issue #208675141. Fixed use-after-free in libusb backend.

35.0.2

Added 1
  • Support to detect USB SuperSpeed+ current and negotiated speeds for diagnostic purposes
Changed 1
  • Make openscreen mDNS backend default on all platforms
Fixed 3
  • Fix openscreen mDNS backend bug that caused server to crash on truncated query
  • Make openscreen mDNS backend work on macOS
  • Release all USB interfaces on shutdown on all operating systems

adb Fix openscreen mDNS backend bug bringing down server on truncated query issue #294120933. Make openscreen mDNS backend work on macOS. Make openscreen mDNS backend default on all platforms. Support to detect USB SuperSpeed+ (current and negotiated speeds) for diagnostic purposes. Graceful shutdown: Release all USB interfaces on shutdown (all OSes).

35.0.0

Changed 3
  • Switch adb to use libusb as the default on Linux
  • Limit the maximum size of the incoming packet queue in fastboot
  • Remove bottlenecks in fastboot that limited download speeds to around 120MB/s, now achieving speeds up to 980MB/s on SuperSpeed+ buses
Fixed 3
  • Fix adb startup on hosts without USB
  • Fix adb hangs caused by USB devices incorrectly reporting zero-length descriptors
  • Fix return code of adb shell when device disconnects

adb Switch to libusb as the default on Linux issue #270205252. Fix adb startup on hosts without USB. Fix adb hangs caused by USB devices incorrectly reporting zero-length descriptors issue #302212871. Fix return code of adb shell when device disconnects issue #321787891. fastboot Limit the maximum size of the incoming packet queue. Remove bottlenecks that previously limited download speeds to around 120MB/s. Now fastboot can saturate a SuperSpeed+ bus and achieve speeds up to 980MB/s, depending on the device.

34.0.5

Added 2
  • adb wait-for-disconnect is now operational for non-USB wireless debugging
  • Added new DbC interface for future support of ChromeOS over adb
Changed 1
  • adb now defaults to libusb on macOS
Fixed 2
  • adb now returns a failure code (1) when wireless pairing fails instead of responding with a successful code
  • Fixed flashall on Pixel 3 devices

adb adb now defaults to libusb on macOS to address issue #270205252. Previously, adb responded with a successful code when wireless pairing fails. Resolved this by returning a failure code (1) and user-facing error ( error: protocol fault (couldn't read status message...)). echo $? now reports 1. adb wait-for-disconnect is now operational for non-USB (wireless debugging). Added new DbC interface for future support of ChromeOS over adb. fastboot Fixed flashall on Pixel 3 devices.

34.0.4

Changed 1
  • Faster root and unroot operations
Fixed 5
  • Propagate -a (gListenAll) when adb forks an adb host server so the flag works consistently with adb -a server nodaemon
  • Reland Flag(env) guarding clear endpoint (device) feature for OSX usb start
  • Mac: remove retries on invalid IO iterator to fix flashing failure with LIBUSB_TRANSFER_CANCELLED
  • Windows: fix "Sparse file is too large or invalid" when using flashall
  • All platforms: fix "ANDROID_PRODUCT_OUT not set" when using update

adb Propagate -a (gListenAll) when adb forks an adb host server (previously, the flag only worked for adb -a server nodaemon) Faster root and unroot Reland Flag(env) guarding clear endpoint (device) feature for OSX usb start. ( issue #270205252). fastboot Mac: remove retries on invalid IO iterator (flashing failure with LIBUSB_TRANSFER_CANCELLED) Windows: fix "Sparse file is too large or invalid" when using "flashall" All platforms: fix "ANDROID_PRODUCT_OUT not set" when using "update"

34.0.1

Changed 1
  • Reverted unstable connectivity (MacBook high speed cable) resolution due to adb install hang on macOS
Fixed 1
  • Fixed mke2fs: Illegal or malformed device name while trying to determine filesystem size error on Windows

adb macOS: Reverted "unstable connectivity (MacBook high speed cable)" resolution due to adb install hang ( issue #270205252). fastboot Windows: Fixed "mke2fs: Illegal or malformed device name while trying to determine filesystem size" error introduced in Platform tools 34.0.0 ( issue #271039230).

34.0.0

Changed 2
  • Improved error message for adb push with insufficient number of arguments
  • Improved flashing so flashall will now skip reboots to userspace if it can
Fixed 3
  • Zero length packet sends for macOS
  • Unstable connectivity on MacBook with high speed cable causing frequent adb disconnects
  • Flashing recovery.img resulting in wrong AVB footer

adb Fixed zero length packet sends for macOS (issuetracker: 208675141). Addressed unstable connectivity (MacBook high speed cable): frequent adb disconnects. Improved error message for adb push with insufficient number of arguments. fastboot Improved flashing: flashall will now skip reboots to userspace if it can. Fixed zero length packet sends for macOS (issuetracker: 208675141). Fixed flashing recovery.img resulting in wrong AVB footer.

33.0.3

Added 1
  • Add receive windowing to increase throughput on high-latency connections
Changed 3
  • Don't retry adb root if first attempt failed
  • Provide more specific error messages in the more than one device failure cases
  • Print OemCmdHandler return message on success
Fixed 3
  • Fix track-devices duplicate entry
  • Reject unexpected reverse forward requests
  • Fix install-multi-package on Windows
Removed 1
  • Remove e2fsdroid as part of SDK platform-tools

adb Don't retry adb root if first attempt failed. Fix track-devices duplicate entry. Add receive windowing (increase throughput on high-latency connections). More specific error messages in the "more than one device" failure cases. Reject unexpected reverse forward requests. Fix install-multi-package on Windows. fastboot Remove e2fsdroid as part of SDK platform-tools. Print OemCmdHandler return message on success.

33.0.1

Changed 1
  • Improve help output to include all supported compression methods
Fixed 3
  • Fix Windows mdns crashes
  • Fix enable-verity/disable-verity on old devices
  • Fix install multiple on old devices
Removed 1
  • Remove systrace; use Studio Profiler, gpuinspector.dev, or Perfetto instead

adb Fixes Windows mdns crashes. Fixes enable-verity/disable-verity on old devices. Fixes "install multiple" on old devices Improves the help output to include all supported compression methods. systrace Removed. Use Studio Profiler/gpuinspector.dev/Perfetto instead.

33.0.0

Fixed 1
  • Fixed crashes when adb is run without any arguments

adb Fixes the issue introduced in 32.0.0 of crashes when run without any arguments.

32.0.0

Added 1
  • Universal binary for Apple M1 devices in adb
Fixed 1
  • adb crashes when run without any arguments

adb Universal binary for Apple M1 devices. Known issue: this version crashes when run without any arguments.

31.0.3

fastboot Support flashing vbmeta_vendor.img for fastboot flashall / update.

31.0.2

Added 2
  • Support forwarding to vsock on linux
  • Implement preliminary support for mDNS device discovery without a separately installed mDNS service, enabled by setting the environment variable ADB_MDNS_OPENSCREEN to 1
Changed 1
  • Derive device locked state from property instead of parsing the kernel command line
Fixed 2
  • Fix bug in adb track-devices where devices over wireless debugging wouldn't immediately receive updates
  • Don't fail when unable to get boot partition size

adb Support forwarding to vsock on linux. Fix bug in adb track-devices where devices over wireless debugging wouldn't immediately receive updates. Implement preliminary support for mDNS device discovery without a separately installed mDNS service. This is currently disabled by default, and can be enabled by setting the environment variable ADB_MDNS_OPENSCREEN to 1 when starting the adb server. fastboot Don't fail when unable to get boot partition size. Derive device locked state from property instead of parsing the kernel command line.

31.0.1

Added 1
  • Add support for compressed snapshot merges in fastboot
Changed 3
  • Reduce TCP keepalive interval in adb
  • Improve incremental installation performance in adb
  • Restore legacy A/B support in fastboot

adb Reduce TCP keepalive interval. Improve incremental installation performance. fastboot Add support for compressed snapshot merges. Restore legacy A/B support.

30.0.5

Changed 4
  • Improve performance of adb push when pushing many files over a high-latency connection
  • Improve adb push/pull performance on Windows
  • Improve performance of incremental apk installation
  • Improve error handling for incremental apk installation
Fixed 1
  • Fix adb push --sync with multiple inputs

adb Improve performance of adb push when pushing many files over a high-latency connection. Improve adb push/pull performance on Windows. Fix adb push --sync with multiple inputs. Improve performance of incremental apk installation. Improve error handling for incremental apk installation.

30.0.4

Changed 2
  • Improve error messages in adb
  • Improve console output on fastboot oem commands
Fixed 4
  • Fix fallback to non-incremental apk installation on pre-Android 11 devices
  • Fix adb install-multi-package
  • Fix crashes related to adb wireless pairing
  • Fix fastboot flashall on older devices such as Nexus 7

adb Fix fallback to non-incremental apk installation on pre-Android 11 devices. Fix adb install-multi-package. Fix some more crashes related to adb wireless pairing. Improve some error messages. fastboot Improve console output on fastboot oem commands. Fix fastboot flashall on older devices such as Nexus 7.

30.0.3

Fixed 3
  • Fix installation of APKs signed with v4 signature scheme on pre-Android 11 devices
  • Fix crash when authenticating without ADB_VENDOR_KEYS
  • Fix crash when using adb -H

adb Fix installation of APKs signed with v4 signature scheme on pre-Android 11 devices. Fix crash when authenticating without ADB_VENDOR_KEYS. Fix crash when using adb -H.

30.0.2

Added 1
  • Add adb transport-id to allow scripts to safely wait for a device to go away after root/unroot/reboot
Changed 1
  • Improve adb wireless pairing
Fixed 1
  • Fix hang in adb logcat when run before a device is connected

adb Improve adb wireless pairing. Fix hang in adb logcat when run before a device is connected. Add adb transport-id to allow scripts to safely wait for a device to go away after root/unroot/reboot.

30.0.1

Changed 3
  • Disable adb mdns auto-connection by default, which can be reenabled with the ADB_MDNS_AUTO_CONNECT environment variable
  • Improve performance of adb install-multi on Android 10 or newer devices
  • Update support for wireless pairing
Fixed 1
  • Fix timeout when using adb root/unroot on a device connected over TCP

adb Disable adb mdns auto-connection by default. This can be reenabled with the ADB_MDNS_AUTO_CONNECT environment variable. Improve performance of adb install-multi on Android 10 or newer devices. Fix timeout when using adb root/unroot on a device connected over TCP. Update support for wireless pairing.

30.0.0

Added 3
  • Add initial support for wireless pairing in adb
  • Add support for incremental APK installation in adb
  • Implement client-side support for compression of adb push, pull, and sync commands when used with an Android 11 device
Changed 2
  • Improve performance of adb push on high-latency connections
  • Improve push and pull performance on Windows

adb Add initial support for wireless pairing. Add support for incremental APK installation. Implement client-side support for compression of adb {push, pull, sync} when used with an Android 11 device. Improve performance of adb push on high-latency connections. Improve push/pull performance on Windows.

29.0.6

Added 2
  • 64-bit size/time support for adb ls when used with an Android 11 device
  • Support listening on ::1 on POSIX
Changed 1
  • Client support for WinUSB devices that publish a WinUSB descriptor no longer requires a USB driver to be installed
Fixed 1
  • Fix hang when using adb install on something that isn't actually a file

adb 64-bit size/time support for adb ls when used with an Android 11 device. Support listening on ::1 on POSIX. Client support for WinUSB devices that publish a WinUSB descriptor (required for Android 11) should no longer require a USB driver to be installed. Fix hang when using adb install on something that isn't actually a file.

29.0.5

Added 1
  • Add --fastdeploy option to adb install for incremental updates to APKs while developing
Changed 1
  • Slight performance improvement on Linux when using many simultaneous connections

adb Slight performance improvement on Linux when using many simultaneous connections. Add --fastdeploy option to adb install, for incremental updates to APKs while developing.

29.0.4

Fixed 2
  • native debugging timeout with LLDB
  • AdbCommandRejectedException bug in the Android Studio Profilers

adb Hotfix for native debugging timeout with LLDB (see issue #134613180). This also fixes a related bug in the Android Studio Profilers that causes an AdbCommandRejectedException, which you can see in the idea.log file.

29.0.3

Changed 1
  • Improve adb install output and help text
Fixed 3
  • adb forward --list now works with multiple devices connected
  • Fix devices going offline on Windows
  • Restore previous behavior of adb connect <host> without specifying port

adb adb forward --list works with multiple devices connected. Fix devices going offline on Windows. Improve adb install output and help text. Restore previous behavior of adb connect without specifying port.

29.0.2

Added 1
  • Add support for partition layout of upcoming devices in fastboot
Fixed 1
  • Fix a Windows heap integrity crash in adb

adb Fixes a Windows heap integrity crash. fastboot Adds support for partition layout of upcoming devices.

28.0.2

Added 1
  • Adds support for dynamic partitions
Fixed 3
  • Fixes flakiness of adb shell port forwarding that leads to Connection reset by peer error message
  • Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices
  • Fixes authentication when the private key used for authentication does not match the public key by calculating the public key from the private key

Fixes flakiness of adb shell port forwarding that leads to "Connection reset by peer" error message. Fixes authentication via ADB_VENDOR_KEYS when reconnecting devices. Fixes authentication—when the private key used for authentication does not match the public key—by calculating the public key from the private key, instead of assuming that they match. Adds support for dynamic partitions.

28.0.1

Added 1
  • Support for reconnection of TCP connections with automatic reconnection attempts for up to 60 seconds upon disconnection
Changed 1
  • Increase command timeout to 30 seconds to better support slow bootloader commands
Fixed 3
  • Unicode console output on Windows
  • File descriptor double-close that could result in connections being closed during simultaneous adb connect
  • adb forward --list when used with more than one device connected

Add support for reconnection of TCP connections. Upon disconnection, adb will attempt to reconnect for up to 60 seconds before abandoning a connection. Fix Unicode console output on Windows. (Thanks to external contributor Spencer Low!) Fix a file descriptor double-close that can occur, resulting in connections being closed when an adb connect happens simultaneously. Fix adb forward --list when used with more than one device connected. Increase command timeout to 30 seconds, to better support some slow bootloader commands.

28.0.0

Added 4
  • Support checksum-less operation with devices running Android P, improving throughput by up to 40%
  • Add verbose output mode with -v flag
  • Add product.img and odm.img to the list of partitions flashed by fastboot flashall
  • Allow factory image packages to require support for specific partitions to prevent bricking new devices with too-old fastboot versions
Changed 4
  • Sort output of adb devices by connection type and device serial
  • Increase the socket listen backlog to allow for more simultaneous adb commands
  • Improve error output for adb connect
  • Clean up help output

Add support for checksum-less operation with devices running Android P, which improves throughput by up to 40%. Sort output of adb devices by connection type and device serial. Increase the socket listen backlog to allow for more simultaneous adb commands. Improve error output for adb connect. Improve output format, add a verbose output mode ( -v). Clean up help output. Add product.img and odm.img to the list of partitions flashed by fastboot flashall. Avoid bricking new devices when using a too-old version of fastboot by allowing factory image packages to require support for specific partitions.

27.0.0

Fixed 1
  • Fixed the macOS 10.13 fastboot bug that was re-introduced in 26.0.2

Re-fixes the macOS 10.13 fastboot bug first fixed in 26.0.1, but re-introduced in 26.0.2.

27.0.1

Added 1
  • Add support for wiping devices that use F2FS (Flash-Friendly File System) on Windows
Fixed 1
  • Fix assertion failure on macOS that occurred when connecting devices using USB 3.0

fixes an assertion failure on MacOS that occurred when connecting devices using USB 3.0. On Windows, adds support for wiping devices that use F2FS (Flash-Friendly File System).

25.0.5

Changed 3
  • adb --version and fastboot --version now include the install path
  • adb to not resolve localhost to work around misconfigured VPN
  • adb to no longer reset USB devices on Linux, which could affect other attached USB devices
Fixed 2
  • adb sideload of large updates on Windows that manifested as std::bad_alloc
  • adb problems with some Windows firewalls that manifested as cannot open transport registration socketpair

Fixed adb sideload of large updates on Windows, manifesting as "std::bad_alloc" ( bug 37139736). Fixed adb problems with some Windows firewalls, manifesting as "cannot open transport registration socketpair" ( bug 37139725). Both adb --version and fastboot --version now include the install path. Changed adb to not resolve localhost to work around misconfigured VPN. Changed adb to no longer reset USB devices on Linux, which could affect other attached USB devices.

25.0.4

Added 2
  • Experimental libusb support to Linux and Mac adb with ADB_LIBUSB environment variable
  • New adb host-features command to check whether libusb backend is in use
Fixed 2
  • fastboot no longer hangs on 2016 MacBook Pros
  • Systrace command line capture on Mac

Added experimental libusb support to Linux and Mac adb To use the libusb backend, set the environment variable ADB_LIBUSB=true before launching a new adb server. The new adb host-features command will tell you whether or not you're using libusb. To restart adb with libusb and check that it worked, use adb kill-server; ADB_LIBUSB=1 adb start-server; adb host-features. The output should include "libusb". In this release, the old non-libusb implementation remains the default. fastboot doesn't hang 2016 MacBook Pros anymore ( bug 231129) Fixed Systrace command line capture on Mac

25.0.1

Updated with the release of Android N MR1 Developer Preview 2 release (API 25)

25.0.0

Updated with the release of Android N MR1 Developer Preview 1 release (API 25)

View all

Discussion