Skip to content

Releases: mPhpMaster/androiddc

AndroidDC 1.4.0 - a backup in one file

Choose a tag to compare

@mPhpMaster mPhpMaster released this 21 Sep 12:53

A backup you can hold in one hand, and a classic window that says more.

A backup is one file

A backup is now a single .zip, named after the phone and the time - one file to copy, to move, or to put on a drive of its own. The files are still pulled into a folder first, because that is what adb writes; the folder is packed and then removed, and the pulled files are let go of only after the zip has been read back with everything in it. Photos, video and APKs go in as they are rather than being squeezed again, so packing costs minutes and not hours.

Restoring reads the zip. Nothing is unpacked whole: each file is taken out, sent to the phone, and dropped again.

Cancel works while it packs, and a stopped pack leaves no half-written zip behind - the pulled folder is what is kept, and it opens exactly like a zip does. So do backups taken with 1.3.0.

You can see what is in one

What is inside lists every file in the opened backup - which part it belongs to, where it was on the phone, how big it is - read from the zip's own index, with a find box over it. Pick some lines and Save a copy ... writes those files onto this PC: one photo out of a backup, with no phone in the room.

Opening a backup reads its manifest and stops there, so a backup of forty thousand photos names its phone at once. The lists read the backup itself, and only when you look at them, with a rolling bar and a count while they do. Measured: a backup of six thousand files opens in 39 ms and lists in 1.4 s - where an array that grows by copying itself used to freeze the window for minutes.

The backups you have

My backups shows one folder. A box at the top says which, Browse ... changes it, and it starts at wherever your last backup went. What is listed is what is in that folder at this moment - zips and older folder backups alike - so one moved into it appears and one taken out of it is gone, with no list to tidy. Both windows follow the same folder.

The apps in a backup, in words you can act on

Every app is a row: what it is called, its package, the version the backup holds, its size, and how it stands against the phone in front of you.

It says What it means What to do
not on the phone the backup has it, this phone does not it is ticked for you; press Install ticked apps
on the phone the same version is there already nothing
older on the phone the phone has an earlier version tick it to bring the phone up to the backup's version
newer on the phone the phone has moved past the backup Android refuses an older version over a newer one; remove the app on the phone first

The ones the phone lacks come first, a find box narrows the list by name or package while the ticks stay with their apps, and a refused install says what to do about it.

The names come from the backup itself: taking one writes down what each app was called and which version it was, while the phone still has them. A backup read a year from now says WhatsApp, not com.whatsapp, even for an app that phone no longer has.

The classic window says more and asks less

  • It opens where you left it, at the size you left it - unless that place is no longer on a screen this PC has.
  • Every one of its 190 buttons says what it does on hover. 125 had nothing, and a test fails if a new one ever ships silent.
  • An empty list says which button fills it, and so does the device details box.
  • The log has a find box: type and only the lines holding that text are shown, empty it and they all come back.
  • Every tab has a key. Ctrl+0 and Ctrl+Shift+1...9 reach the last tabs; Enter does the page's reading action and never anything that starts, installs, deletes or sends; Tab walks a page the way it is laid out.
  • Shorter tab captions, a gnirehtet column where Client was, and the three stuck-tools of the Connection box in one of their own.

Where

Advanced > Backup in the classic window, the Backup page in Nova. Both use the same engine, shared/Backup.ps1.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once to fetch scrcpy and gnirehtet, checked against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs, or run start-menu.vbs to open them from the Start menu.

AndroidDC 1.3.0 - backup and restore

Choose a tag to compare

@mPhpMaster mPhpMaster released this 20 Sep 22:25

A phone backed up to this PC, and put back again - in both windows.

What a backup holds

Tick each part on its own:

Part What it holds
Phone files Everything under /sdcard Android lets adb read: photos, videos, downloads, documents, and Android/media, where messaging apps keep pictures
Apps The APK of every app you installed, splits included
Contacts, messages, call log As the phone has them now
Settings and the app list settings list, getprop, the installed packages and a device report, as text

Each backup is its own folder, named after the phone and the time, holding plain files and a manifest.json that says what is in it. No archive, no password, nothing to unpack.

What cannot be in it, and why. Android does not let adb read what is inside an app - chats, game saves, an app's own settings - unless the phone is rooted. adb backup, the old route, has returned almost nothing since Android 12, and Android/data and Android/obb have been closed to adb since Android 11. No tool without root gets past that, and this one says so rather than pretending.

Putting one back

  • Restore files asks first when the phone already has some of them: write over them, send only the rest, or stop. Afterwards the gallery is told to look again.
  • Install ticked apps lists the backup's apps with the ones this phone lacks already ticked, and installs each in one call, splits included.
  • Restore contacts adds only the contacts the phone does not have, matched by name and number. Messages and the call log are saved to read but never written back: Android gives adb no way to write them.

It can be watched and stopped

  • A Cancel button stops a backup or a restore where it is - adb is stopped mid-file, and everything already copied stays.
  • The bar means something: the size of a folder on the phone is read first, so it fills as that folder is pulled.
  • A phone unplugged halfway is recognised at once and the run ends there, instead of failing file after file.
  • However it ends - finished, cancelled, or the phone gone - the log says so and a notification appears by the clock. A backup that did not finish is marked not complete in its manifest and wherever it is opened.

Where

Advanced > Backup in the classic window, the Backup page in Nova. Both use the same engine, shared/Backup.ps1.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once to fetch scrcpy and gnirehtet, checked against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs, or run start-menu.vbs to open them from the Start menu.

See CHANGELOG.md.

AndroidDC 1.2.2 - in the Start menu, and Nova keeps its page

Choose a tag to compare

@mPhpMaster mPhpMaster released this 15 Sep 06:28

You can now put both windows in the Start menu, and Nova keeps you on the page you were using.

In the Start menu

File What it does
start-menu.vbs Adds AndroidDC and AndroidDC Nova to the Start menu, with the AndroidDC icon, under All apps
start-menu-remove.vbs Removes those two shortcuts again, and touches nothing else
  • Double-click either file.
  • To keep a shortcut on the first page of Start, right-click it under All apps and choose Pin to Start. Windows keeps that step for you.
  • After moving the folder, run start-menu.vbs again so the shortcuts point at the new place.
  • /quiet hides the final message. start-menu.vbs /remove works the same as the remove file.
  • The switches and every message are listed in Command line.
  • CI checks that both files name the same two shortcuts.

Nova stays on your page

  • No more jump to Overview. Double-clicking a phone in the device list used to open Overview from whatever page you were on. Now it only selects the phone and closes the list.
  • The page is saved as soon as it changes. It used to be saved only when the window closed normally. A window that Windows ended at sign-out, such as one in the tray, therefore reopened on an older page.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once to fetch scrcpy and gnirehtet, checked against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs, or run start-menu.vbs to open them from the Start menu.

See CHANGELOG.md.

AndroidDC 1.2.1 - the rules you set, where you can see them

Choose a tag to compare

@mPhpMaster mPhpMaster released this 15 Sep 06:15

The automation rules you set before are now listed where you can see them, without opening their page.

See what is set

  • When AndroidDC starts, the log lists:
    • how many rules there are, and how many are on;
    • each phone and its actions;
    • whether AndroidDC starts with Windows;
    • where to change all of this.
  • The icon by the clock has an Automation entry at the top of its menu:
    • It lists the same, read fresh each time the menu opens, so a change made in the other window shows too.
    • A click on a rule, or on Open the rules ..., opens the window at the rules page.
    • Hover over the icon to see how many rules are on.
  • The page name carries the number of rules, e.g. Automation (2). It is under Advanced in the classic window and in Nova's side navigation.

Documentation

Every page now covers what 1.2 added:

  • Command line: the windows' -Minimized switch.
  • Getting started: start with Windows, the icon by the clock, and where the rules file and the start-up entry are kept.
  • What it runs on your phone: how rules run commands, the two actions that have no button elsewhere, and what is written on the PC.
  • Troubleshooting: a rule that did not run, the icon out of sight, and AndroidDC not starting with Windows.
  • Architecture: the shared folder, and four new PowerShell traps found while building 1.2.
  • Keyboard and mouse: what a click on the icon by the clock does.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once to fetch scrcpy and gnirehtet, checked against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs.

See CHANGELOG.md.

AndroidDC 1.2.0 - start with Windows, rules per phone, an icon by the clock

Choose a tag to compare

@mPhpMaster mPhpMaster released this 15 Sep 06:02

Plug your phone in and AndroidDC does the rest. This release is automation, and it comes to both windows: Classic and Nova.

Start with Windows

AndroidDC can start when you sign in, minimized, in the classic window or in Nova.

  • Classic: Advanced > Automation. Nova: the Automation page, under System.
  • It adds a single AndroidDC value under your own Run key (HKCU\...\Run). Switching it off removes that value and nothing else.

Rules per phone

Pick a phone, then switch on what should happen each time it is plugged in:

Group Actions
Screen wake the screen, mirror it, back or front camera, the phone's sound on the PC, a screenshot
Internet share the phone's internet with the PC (USB tethering), share the PC's with the phone (gnirehtet), the adb proxy, the hotspot, adb over Wi-Fi
Radios Wi-Fi, Bluetooth, NFC
Settings stay awake, auto-rotate, location, battery saver
Other open an app, vibrate, logcat, a Windows notification
  • The actions run in order, on that phone alone. A failing action does not stop the ones after it.
  • Run now tries a rule without unplugging the phone.
  • The rules are kept in %APPDATA%\AndroidDC\automation.json. Both windows share them, and only one window runs them at a time.
  • A window that starts with Windows also runs the rules for phones that are already plugged in.
  • Many phones refuse to turn USB tethering on from adb. AndroidDC then taps the switch in the phone's settings, so add Wake the screen and keep the phone unlocked.

An icon by the clock

  • While AndroidDC runs, its icon sits next to the clock.
  • A click on the icon hides the window, and another click shows it again. The icon's menu has Show, Hide and Exit.
  • Minimizing also hides the window there. It leaves the taskbar but keeps watching for phones.

Also

  • The device list now follows the cable while the window is minimized.
  • Both launchers pass their arguments on to the script.
  • New tests for each window: tests/automation.ps1 and nova/tests/automation.ps1. They use a test rules file and a test Run key, so they never touch your real ones.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once to fetch scrcpy and gnirehtet, checked against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs.

See CHANGELOG.md.

AndroidDC 1.1.0 - Classic and Nova

Choose a tag to compare

@mPhpMaster mPhpMaster released this 15 Sep 04:55

Two windows over the same tool. Start whichever you like - and switch any time.

Window Start it with What it looks like
Classic androiddc.vbs The original: tabs, every control in view
Nova androiddc-nova.vbs A newer design: side navigation, a device card, a card per task, an activity log

Open Nova window on the classic Device tab, or Classic window at the bottom of Nova's side navigation, closes one window (saving its settings) and opens the other. Both use the same adb, scrcpy and gnirehtet, and keep their settings apart.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once: it fetches scrcpy and gnirehtet from their official releases and checks them against SHA256.
  4. Double-click androiddc.vbs or androiddc-nova.vbs.

Windows 10 or 11 with Windows PowerShell 5.1 - nothing else to install.

New: AndroidDC Nova

  • WPF hosted in PowerShell 5.1, in nova/. Pages: Overview, Screen, Mirroring, Apps, Files, Camera & mic, Messages, Contacts, Tethering, Radios, Tools, Running, Users, Shell - every feature of the classic window.
  • Overview shows battery, temperature and memory, the quick toggles lifted on the side the phone reports, and the phone number box.
  • F5 reads the page again, Ctrl+1...9 open a page, Ctrl+L empties the log; the log can be dragged or folded; a strip names the adb call that is running.
  • Typefaces DM Sans and Space Grotesk ship in nova/fonts/ under the SIL Open Font License.

Classic window

  • Every page fits the smallest window: the log can be dragged or folded, the device list gives way on a short window, Wi-Fi / Bluetooth / NFC are one Radios tab.
  • Quick toggles show what the phone reports; a busy strip names the running adb call; Sharing: off replaces Stopped; the device list follows the cable; F5, Ctrl+1...9, Ctrl+L.

Checks

CI now also checks both launchers and runs Nova's audit. nova/tests/ runs the real Nova window off screen: a test per page and a tour of every page and inner tab at the default and the smallest size. Every test only reads from a phone.

See CHANGELOG.md.

AndroidDC 1.0.0

Choose a tag to compare

@mPhpMaster mPhpMaster released this 13 Sep 23:10

One window on Windows that drives Android devices over plain adb - mirroring, internet sharing in both directions, files, apps, contacts and messages, radios and users. Nothing is installed on the phone.

Getting started

  1. Turn on USB debugging on the phone and plug it in.
  2. Download this release (Source code, zip) and unpack it.
  3. Run get-upstream.ps1 once: it fetches scrcpy and gnirehtet from their official releases and checks them against SHA256.
  4. Double-click androiddc.vbs.

Windows 10 or 11 with Windows PowerShell 5.1 - nothing else to install. The full guide is in docs/.

What is in it

Fourteen tabs: Device, Tethering, Advanced (every scrcpy option, adb tools, root / recovery), Apps, Contacts, SMS, Cam / Mic, Files, Running, Wi-Fi, Bluetooth, NFC, Users and Shell (live shell and logcat). Every list has its actions on the right mouse button, and every page fits the smallest window.

Fixed before release

A review of the whole code, each fix checked on a phone:

  • Text you type reaches the phone whole. adb and the phone's shell split arguments at spaces, and Windows PowerShell drops " inside them: an SMS body kept its first word, a Wi-Fi name or password with a space failed, and a name with an apostrophe broke the command. Such text now travels as one quoted argument, encoded in base64.
  • Turn Wi-Fi off while sharing no longer turns Wi-Fi on at the end on a phone where it was off.
  • get-upstream.ps1 -CacheFolder deletes only the archives it used, not every .zip in that folder.
  • Apps are labelled user / system and enabled / disabled by whole package name, not by prefix.
  • Search and Recent files hits: Move to PC, Rename and Compress work on them.
  • Filter boxes take [ ] and * literally; Wi-Fi networks are sorted by signal as a number; each saved network is listed once, including on Android 15 and when two names differ only in case.
  • A new contact's details go to the row just created; logcat no longer silences the live shell.
  • When a phone refuses to install the sharing client over USB (INSTALL_FAILED_USER_RESTRICTED, seen on Xiaomi), the log says which setting allows it.
  • Sharing can be started again right after it was stopped; before, the second start failed because the stopped relay's log files were still held open.

Verified

  • Android 15: a contact and a user whose names hold ' " & $ added, edited and removed through the window; an SMS with such a body composed in the phone's own app, read back from its screen, and not sent; a Wi-Fi network with such a name and password joined and forgotten; the saved-network list against the phone's own; Wi-Fi around sharing, on before and off before; a real scan in order.
  • Android 13: every such text sent to the phone as one argument and checked there, including the text Send text types; the whole test suite.
  • Not checked through a phone's screen: Send text typing into an app.

CI checks every commit, and tests\ holds eleven tests anyone can run.

See CHANGELOG.md.