Command line tool to update all third-party installed apps on your Android device, using F-Droid repositories.
OTHER License
Command line tool to update all third-party installed apps on your Android device, using F-Droid repositories.
Stock Android ROMs never allowed any non-system app (like F-Droid or any other store) to install updates, without prompting the user for confirmation for every single app imagine having 40 updates, you have to wait for a popup to appear, press Yes, hope your ROM does not complain about something, then repeat for all other apps (not including the eventual Download press and the Install press, that's 200 user interactions!).
Of course one could root their device, but that's not always possible, at least without breaking some apps and not making them show warnings (DRMs, home banking, etc...).
One way is possible though: installing apps through ADB this method does not require any user interaction (excluding manual compatibility checks and download of course), so I decided to exploit that.
A similar way is to gain shell permissions through ADB and launch a local service to allow apps exploiting them (with the only caveat that this service must be manually restarted after each reboot). Someone implemented this idea as Shizuku, but stores must support it in order to be any useful and despite being open source, it is not free.
See releases.
If you want to distribute and maintain other packages of this project for other channels, feel free to reach out.
./adb-updater
(in the program directory, if not added to PATH)
Distribution | Location |
---|---|
Posix | $HOME/.config/adb-updater/config.toml |
Windows (portable) | .\config\config.toml |
# Package name of apps to not update
ignore_pkg = [
'org.blokada.fem.fdroid',
]
# Max cache days for each downloaded apps
[cache.apps]
max_days = 30
max_size = "1G"
# Configured repositories, descending order of priority
[[repos]]
name = "F-Droid Archive"
address = "https://f-droid.org/archive/"
[[repos]]
name = "F-Droid"
address = "https://f-droid.org/repo/"
# ...
Name | Usage | Notes |
---|---|---|
lister helper jar | get device information |
Name | Usage | Notes |
---|---|---|
pyinstaller |
linux and windows binaries | dev only |
python-adb |
device interaction | git submodule; a fork of this project |
libusb1
|
raw USB management (wrapper) | |
tomlkit |
configuration | |
pysimdjson |
extremely fast json files parsing | |
json-stream |
json streams parsing | |
colorama |
cross-platform support for ANSI escapes | |
tableprint |
terminal tables | |
readchar |
raw user input | |
aiohttp |
asynchronous HTTP requests | |
certifi |
static mozilla certificates | optional |
Name | Notes |
---|---|
libusb 1.0.0 |
Name | Notes |
---|---|
glibc |
see below |
zlib |
|
libpthread |
|
ca-certificates |
optional |
PyInstaller freezes all python code (even the interpreter) and it bundles most native libraries, some of which are not visible through ldd
.
Since ABIs are forward compatible but not backward compatible, it's optimal to compile the project with the oldest glibc
version possible, like 2.28 present in Debian Buster. The same may apply to other native libraries. See PyInstaller docs for more information.
On Windows 7 you may (must?) need to install update KB2533623 or KB3063858, as per this fork of Python 3.10.
See the contribution guide for build instructions and more information.