← Manual

01 Getting started on macOS

01 Getting started on macOS

Applies to: a Mac with a recent macOS, a Java runtime bundled in the app, and an Android phone running Android 5 or later. Wireless debugging needs Android 11 or later.

Reconciled against the frozen build (desktop companion 1.0.0). The macOS disk image was built and launched on Apple silicon during development (AndroidVideoRecovery-1.0.0.dmg); Intel Macs and notarisation were not verified.

You do not need an OEM USB driver on a Mac. macOS talks to Android phones through adb alone, which is in the Android SDK Platform Tools package; Google's own driver page states that macOS and Linux need no USB driver (developer.android.com/studio/run/oem-usb). The companion shows this as "macOS needs no OEM USB driver" in the header.

Step 1 - Install the companion

  1. Open the disk image and drag AndroidVideoRecovery to Applications.
  2. Launch it. The disk image built during development is not notarised, so macOS may warn that it was downloaded from the internet; the standard System Settings > Privacy & Security > "Open Anyway" path applies. This warning path was not re-run for this manual.

What you should see: one window titled Android Video Recovery, a header line naming the driver situation, an "adb: ..." line, five tabs - Repair, Phone (ADB), Audio, Export any file, Setup - and a status bar along the bottom.

Step 2 - Let the app install platform tools

  1. Open the Setup tab.
  2. Press Install managed platform-tools.

What it does: downloads a pinned release (currently platform-tools r37.0.1) from Google's repository, checks the size, the SHA-256 and the SHA-1 against the pinned values, extracts it with guards, runs adb version as a smoke test, and installs it under the app's own data folder. The tab shows "android platform-tools r37.0.1 (pinned release)" and the path of the adb in use, or "not found". Nothing is installed into your shell profile.

What you should see after a successful install: the "current adb" line names the managed path, and the status bar returns to "Ready". If the download is blocked, the log in the Setup tab carries the reason and the Official platform-tools page button opens Google's download page so you can install one yourself.

Step 3 - Connect the phone and unlock it

  1. Use a data cable, not a charge-only cable.
  2. On Apple silicon Macs, macOS shows "Allow accessory to connect?" the first time an unknown USB device is attached. Choose Allow. Choosing Don't Allow still charges the phone but transfers no data (Apple support article support.apple.com/en-us/102282).
  3. Unlock the phone, and if you want to browse files over USB, swipe down the USB notification and choose "File Transfer" (support.google.com/android/answer/9064445).

Step 4 - See the phone in the companion

  1. Open the Phone (ADB) tab and press Refresh devices.
  2. What you should see: one row per attached device, in the form serial model [state], for example R5CY318BMFD SM S938B [device]. A phone that has not been authorised yet shows [unauthorized] rather than disappearing, and the pull controls only become usable for a device in the [device] state.
  3. If nothing is listed, the panel says "No devices reported." and the log carries the raw adb devices -l output. Chapter 05 walks through the causes.

Step 5 - Authorise the computer

The first time a computer talks to a phone over adb, the phone shows "Allow USB debugging?" with an RSA key fingerprint. adb commands cannot run until someone with the phone in hand approves the computer (developer.android.com/tools/adb).

  1. Tick "Always allow from this computer" if this is your own Mac.
  2. Tap Allow, then press Refresh devices again.

What you should see: the device's state changes from [unauthorized] to [device].

Step 6 - Next

Note on what was not executed here: the T3 completion record states that the real-phone pull leg (against a Galaxy S25 Ultra) was not executed during that work window because no device was attached; the pull path is covered by the companion's self-test with a labelled stand-in adb and by AdbClientTest.