Repository navigation
Releases
The Snapy - v1.0.0
Snapy 1.0.0
Capture a restorable snapshot of a stock, non-rooted Android phone from a
Windows PC before a service centre reflashes it — then rebuild the phone from
that snapshot afterwards.
This is the first tagged release. It is also the first one with a desktop app
and a Windows installer, rather than a single script you run by hand.
Install
Snapy-1.0.0-setup.exe — 38 MB, Windows 10 or 11, 64-bit.
Installs per-user, so there is no UAC prompt. It carries its own copy of the
Android platform-tools, so you do not need Android Studio or adb on your
PATH. Uninstalling also removes %LOCALAPPDATA%\Snapy; snapshots you have
already written are left alone.
The installer is not code-signed, so Windows SmartScreen will warn you the
first time. More info → Run anyway, or verify the hash first:
SHA-256 751936c862dccb5cf8b8deb5136be75a05585e9fd84db9e78c26a0f33bf2a47d
Get-FileHash .\Snapy-1.0.0-setup.exe -Algorithm SHA256Prefer the command line? snapy.py is one file, standard library only, no
pip install at all. It needs Python 3.9+ and adb on your PATH.
python snapy.py doctor
What it does
Seven commands, and the desktop app is a window over exactly these — every
button builds a real command and shows it in the console before running it.
doctor |
check adb, the device, and what this Android build actually allows |
capture |
take the snapshot |
verify |
re-hash a snapshot against its manifest |
diff |
compare the phone in front of you against a snapshot, and fill the gaps |
archive |
tar.gz a snapshot, optionally encrypted |
upload |
send an archive to a server |
restore |
rebuild a phone from a snapshot |
Read this before you trust it with anything
There is a hard line in Android that no tool crosses without root, and Snapy
is built around telling you where that line is rather than pretending it is
not there.
It captures: your APKs including split/config APKs, the full app inventory
with install source and dates, every runtime permission grant, app-ops,
battery exemptions, default apps and IMEs, every system/secure/global setting,
saved Wi-Fi SSIDs and security types, accounts on the device, everything on
internal storage, SMS, call log, calendar, and the home-screen layout as
screenshots.
It cannot capture, and says so: private app data in /data/data — your
logins, chats and app databases — and saved Wi-Fi passwords. Both are root
only. adb backup used to cover the first one; Google gutted it in Android 12
and on a modern device it now produces an empty archive.
The supported route for that part is Google's own cloud backup, so Snapy can
trigger one for you (--force-cloud-backup) and tells you which apps it will
not cover. It also generates 09_reports/PRE-WIPE-CHECKLIST.md from your
installed apps, listing what you have to export by hand — authenticators
first, then Signal and WhatsApp, then banking and UPI apps whose device
binding resets on reinstall.
That checklist is the part that actually saves people.
New in this release
A desktop app. PySide6, dark or light, seven screens: Device, Capture,
Snapshots, Compare, Restore, Checklist, Settings. Capture progress is derived
from the CLI's own section headings rather than reported separately, so the
bar cannot drift from what is really happening. The phone on the Device page
mirrors the live home screen over adb exec-out screencap.
A Windows installer, with its own adb bundled.
diff — point it at a snapshot and it tells you what the phone in front of
you is missing, then offers to put it back. Dry run is on by default.
Restore fixes, all found on a real device rather than in theory:
- Chrome WebAPKs (
org.chromium.webapk.*) are minted on-device and can never
be sideloaded. They are excluded now instead of being reported as failures. - APKs built by Android Studio's Run button carry
testOnly=trueand need
pm install -t. Handled. - A failed install used to cascade into a pile of
pm grant ... package not founderrors. Permissions are now checked against the installed list first. - The adb daemon can die mid-restore on a long run; that is now detected and
the server restarted rather than losing the rest of the queue. du -sk /sdcardmeasured the symlink, not the storage, and reported ~4 KB
of media.du -skLmeasures the target.
Verified on
A Nothing Phone (A059) running Android 16 / SDK 36, stock and unrooted. Full
cycle: capture, verify, factory reset, restore. 499 restore commands, and the
failures that remained after the fixes above were the ones that are supposed
to fail — WebAPKs, which the phone rebuilds itself.
Older Androids expose more, newer ones less. 8 through 16 are expected to
work; 12 and up is where adb backup is already gone.
Notes
- Nothing is written to the phone during
captureexceptinput swipe/
keyeventfor the home-screen screenshots and, if you ask for it, the
bmgrbackup trigger. - A snapshot is plaintext personal data — your messages, call log and
account emails sit in it in the clear. Treat the folder like a password
vault, and usearchive --encryptbefore it leaves the machine. - Multiple devices connected: pass
--serial(seeadb devices).