tree: f279698b04e8df5ed27bafcfdf7d4f009a3d12a2 [path history] [tgz]
  1. bin/
  2. lib/
  3. test/
  4. tool/
  5. .gitignore
  7. pubspec.yaml


This utility tool is used by LUCI infrastructure to manage device health for Flutter LUCI swarming bots.

It offers support for different host platforms: linux, mac and windows, and different devices: android and iOS.


Different devices require different tools to be in the path beforehand.


  • adb


  • idevice_id
  • idevicediagnostics
  • xcrun


This tool is meant to be published as an AOT compiled binary distributed via CIPD.

Build the tool for different host platforms on corresponding machines. It will automatically download a suitable version of Dart to build the binary.

To create the CIPD package, make sure that the build/ folder does not exist.

Auto build

Every new commit will trigger pre-submit builders to auto build a new version for different platforms without any tag/ref.

When a new commit is submitted, post-submit builders will trigger a new version with a tag of commit_sha, and a ref of latest.

Manual build

Running tool/ or tool/build.bat will build an executable binary in the build folder. Then push to cipd by running

cipd create -in build                   \
  -name flutter/device_doctor/<os>-amd64 \
  -ref <ref>                     \
  -tag sha_timestamp:<revision>_<timestamp>
  • os: linux, mac, or windows.
  • ref: release or staging

How to use

device_doctor is the executable binary, and can be called

/path/to/device_doctor --action <healthcheck|recovery|properties> --device-os <android|ios>

Use /path/to/device_doctor --help to learn more.

Note: this tool is assuming one connected device on each host, but can be easily extended to support multiple devices.

Releasing device_doctor

The release process of the tool is controlled by setting release and staging refs.

To promote a given version to staging you can run the following command:

cipd set-ref flutter/device_doctor/<os>-<arch> -ref staging -version <packageid>

Example for mac and amd64:

cipd set-ref flutter/device_doctor/mac-amd64 -ref staging -version IQgKjNstWbFhUuMVp898zZoPKRd66KLRKuiY88XYQXAC

After extensive validation on staging you can promote the package to release using:

cipd set-ref flutter/device_doctor/<os>-<arch> -ref release -version <packageid>