Repository navigation
ADB Application Manager Pro v4.7
Installs over v3.1 – v4.6 without uninstalling (same signing key).
- ✨ What's new: the changelog is bundled in the app. After an update it opens once with the changes
since the version you last ran; Color & Themes → About has the button, version and links. - 👁️ Watch a profile: in 🗂️ Profiles, tap 👁️ Watch on one profile. When apps no longer match it
(typically after a system update brings them back) a banner on the Applications tab says how many and
opens the same reviewed Apply step. After a reboot with a new system build, a notification reminds you (Android 13+
asks for notification permission the first time you watch a profile). Nothing is changed without your
confirmation. - Quick Settings tiles and a home-screen widget (they run without opening the app):
- Working mode tile / 🔄 Mode widget button: switches to the next mode that is ready
(ADB TCP → Wireless Debugging → Shizuku → Root), or back to Automatic. - Stop apps tile / 🛑 Stop apps widget button: force-stops every app in your quick list.
Choose it with 🛑 Quick list on a card in Saved Lists.
- Working mode tile / 🔄 Mode widget button: switches to the next mode that is ready
- 🗄️ Backup and restore: 💾 Backup in the app menu (and 🗄️ Backups on the Applications tab).
A backup is one.adbbackupfile inDownload/ADB App Manager/Backups/holding the APK (with splits),
granted permissions and changed app ops. With Root it can also hold the app's data. Restore
installs the APK through ADB, Shizuku or Root, re-applies permissions and app ops, and with Root puts the
data back. You can Share a backup or Choose a backup file from another phone. Data restore
refuses archives that would write outside the app's own folders.
Without Root, private app data cannot be read on current Android, so backups are APK + settings only. - Profiles are applied properly: a profile now remembers disabled and suspended separately, and applying
works out the steps per app (bring back, re-enable, unsuspend, disable, suspend, uninstall), so an app that
is in a different state than the profile wants is changed instead of being counted as matching. Undo of a
profile run unwinds the steps newest first. Saving profiles that the app cannot keep (too large) now says so. - Extracting or sharing an APK handles one request at a time, so a second tap cannot mix up the results; the
share sheet gets each file from its own private folder. - A full pass through every source file (not just this release's changes), backed by Copilot review plus an
independent full-file audit:- Restore no longer trusts a picked backup file's own claims.
backup.jsoncan come from "Choose
backup file…" and is untrusted by design; restoring used to take its stated package, version and signing
key at face value, including on the path that brings a removed system app back. Everything now comes
from the extracted APK itself, both for an app currently installed and for a system app only present on
the system image. - A backup now correctly names the base APK
base.apkregardless of its real on-disk name, so backing up
a system app (whose source file is rarely actually called that) can be restored at all. - Restoring data now refuses archives containing FIFO or device-node entries, not just hard links and
outward-pointing symlinks; an app-op explicitly set to Allow is backed up and restored instead of being
treated as "nothing to restore"; skipping a backup's data when you didn't ask for it no longer
decompresses that data anyway. - Quick list entries are validated before they can reach a shell command. The list editor accepts any
text, and the new Stop-apps tile runs each entry with no per-entry review; a crafted entry could have run
an arbitrary privileged command on a single tap. Every package name is now checked before anything is
built from it. - Deleting a watched profile clears the setting the reboot notification reads; that notification also has a
working baseline on the very first reboot after you turn watching on. - The manifest viewer no longer risks a confusing crash on a crafted or corrupted APK (it already
couldn't crash the app itself): a hand-rolled binary-XML parser had several unchecked-arithmetic and
unchecked-allocation spots reachable by viewing any installed app's manifest, including a sideloaded one.
It also now caps how much of a manifest it will read, and closing tags are tracked properly instead of
trusting a value a crafted file could point anywhere. - Update checks no longer trust a catalog's regex unconditionally. The Obtainium catalog is
community-maintained; a pattern with pathological backtracking could previously hang the update check.
Matching now has a hard timeout. The Galaxy Store download link is now required to be HTTPS, matching the
rest of the update sources, and a download is capped in size and can no longer report an empty or
unbounded response as a successful update. - A handful of smaller robustness fixes: a failure partway through generating the per-install ADB key can
no longer leave a mismatched key pair on disk; reading a very large file no longer crashes outright. - A second look at that same signer check found it would skip verification entirely if either side's
signing certificate couldn't be read at all, instead of refusing the restore; it now fails closed. - Package-name validation no longer rejects
"android"itself - one of several framework-owned permissions
and componentsPackageManagergenuinely reports under that single-segment name. - An install through Shizuku that fails partway through writing or committing its session no longer leaves
it open. Backing up an app whose app-ops can't be read now says so in the backup instead of silently
recording an empty, misleadingly-successful-looking override list.
- Restore no longer trusts a picked backup file's own claims.
- README: debloat-flow animation, light-theme screenshots and the new features.
- A further Copilot pass after this APK was already built and signed found a few more issues; they're fixed
in source (see "Unreleased" above) but not in this version's APK.