Skip to content

Releases

The Snapy - v1.0.0

Choose a tag to compare

@RamizMohammad RamizMohammad released this 21 Sep 01:09

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 SHA256

Prefer 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=true and need
    pm install -t. Handled.
  • A failed install used to cascade into a pile of pm grant ... package not found errors. 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 /sdcard measured the symlink, not the storage, and reported ~4 KB
    of media. du -skL measures 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 capture except input swipe /
    keyevent for the home-screen screenshots and, if you ask for it, the
    bmgr backup 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 use archive --encrypt before it leaves the machine.
  • Multiple devices connected: pass --serial (see adb devices).