Releases: mPhpMaster/androiddc
Release list
AndroidDC 1.4.0 - a backup in one file
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+0andCtrl+Shift+1...9reach the last tabs;Enterdoes the page's reading action and never anything that starts, installs, deletes or sends;Tabwalks a page the way it is laid out. - Shorter tab captions, a
gnirehtetcolumn whereClientwas, 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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once to fetch scrcpy and gnirehtet, checked against SHA256. - Double-click
androiddc.vbsorandroiddc-nova.vbs, or runstart-menu.vbsto open them from the Start menu.
AndroidDC 1.3.0 - backup and restore
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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once to fetch scrcpy and gnirehtet, checked against SHA256. - Double-click
androiddc.vbsorandroiddc-nova.vbs, or runstart-menu.vbsto open them from the Start menu.
See CHANGELOG.md.
AndroidDC 1.2.2 - in the Start menu, and Nova keeps its page
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.vbsagain so the shortcuts point at the new place. /quiethides the final message.start-menu.vbs /removeworks 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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once to fetch scrcpy and gnirehtet, checked against SHA256. - Double-click
androiddc.vbsorandroiddc-nova.vbs, or runstart-menu.vbsto open them from the Start menu.
See CHANGELOG.md.
AndroidDC 1.2.1 - the rules you set, where you can see them
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'
-Minimizedswitch. - 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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once to fetch scrcpy and gnirehtet, checked against SHA256. - Double-click
androiddc.vbsorandroiddc-nova.vbs.
See CHANGELOG.md.
AndroidDC 1.2.0 - start with Windows, rules per phone, an icon by the clock
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
AndroidDCvalue 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.ps1andnova/tests/automation.ps1. They use a test rules file and a test Run key, so they never touch your real ones.
Getting started
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once to fetch scrcpy and gnirehtet, checked against SHA256. - Double-click
androiddc.vbsorandroiddc-nova.vbs.
See CHANGELOG.md.
AndroidDC 1.1.0 - Classic and Nova
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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once: it fetches scrcpy and gnirehtet from their official releases and checks them against SHA256. - Double-click
androiddc.vbsorandroiddc-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.
F5reads the page again,Ctrl+1...9open a page,Ctrl+Lempties 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
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
- Turn on USB debugging on the phone and plug it in.
- Download this release (Source code, zip) and unpack it.
- Run
get-upstream.ps1once: it fetches scrcpy and gnirehtet from their official releases and checks them against SHA256. - 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 -CacheFolderdeletes only the archives it used, not every.zipin 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.