3

I have done many reinstalls of my OS on my Android phone in the last few months for various reasons. Every time, the biggest hassle is manually searching, downloading and installing all the apps I had in my previous installation.

I use a degoogled custom rom, downloading apps from F-Droid and Aurora Store, so no Google solutions are acceptable.

What I want, is to have a way to keep on my computer a copy of all the apks of the installed apps of my phone, and have it automatically updated too, so that when the time comes to reformat my phone and install everything all over, I will be able to simply adb install all of the apks in no time, instead of doing it all manually and waiting for them to also be downloaded. Any suggestions for how I can make that happen with existing programs, preferably open source?

5
  • 1
    If you know abd you can simply create a full backup of all non-system apps: adb backup -f all -all -apk -nosystem. Then unpack using the created backup via Android backup Extractor (abe), get the APK files and delete the other file(s).
    – Robert
    Jan 18, 2021 at 16:40
  • 1
    as you mentioned custom rom, Migrate is the first choice for free backup solution. Titanium Backup has option for scheduled backup
    – alecxs
    Jan 18, 2021 at 17:57
  • @Robert This only backs up a few of the installed apps.
    – Noob Doob
    Jan 19, 2021 at 2:33
  • @alecxs This seems interesting. Is it open source by chance?
    – Noob Doob
    Jan 19, 2021 at 13:47
  • nope, but ask the author in telegram group
    – alecxs
    Jan 19, 2021 at 13:58

1 Answer 1

6

If it's just the APK files, you could use the getapk script provided in the tools/ directory of my little helper Adebar, calling it e.g. with getapk user to retrieve all user-installed apps. You won't be interested in system apps, but for completeness:

$ getapk


getapk
Extracting APK files from a connected device.
getapk lets you extract a single app's APK, or that of all user apps,
all system apps, or all apps altogether – depending on what parameter
you passed it.

Syntax: /mnt/av/src/git/adebar/tools/getapk <package_name> | user | system | all

This requires ADB being available on your computer. Should you not have that yet, you might wish to take a look at Is there a minimal installation of ADB? here at our site. You don't write what OS you are on; getapk is a Bash script (as Adebar is a Bash tool), so it works best on Linux, was reported working fine on MAcOS, and also in Cygwin.

To have that automated, you could create a cron job (Linux/Mac; no idea how that works on Windows but AFAIK there's something like a "Scheduler" you could probably use). APKs will be named <packageName>.apk (e.g. org.fdroid.fdroid.apk) once retrieved, so always retrieving them to the same directory (i.e. calling the script while inside that directory) should take care that you have always the latest versions in there and no more. Though it wouldn't delete APKs of apps you've uninstalled later ;)

12
  • 1
    @Robert feel free to build on it. I happily accept pull requests with improvements. And no, I haven't tried it with split APKs – hints are welcome, too. I guess the failed to stat could be such cases. The current logic is rather a "simple approach" which definitely can be improved…
    – Izzy
    Jan 19, 2021 at 15:22
  • 1
    @NoobDoob I don't have Shazam, and the YT app is pulled fine from the test device having it. But I just fixed the mv: cannot stat 'base.apk' error. Will see if I can reproduce (and fix) the other one. Oh: you did call it with the user parameter, not all – you just want to backup user apps, not those the ROM ships with, right? The full error message reads: failed to stat remote object '{path}': Permission denied and in my test was only on some system apps. I'd yet need to find a split APK to test that. Edit: found one, indeed same error (just without the "permission denied").
    – Izzy
    Jan 19, 2021 at 15:40
  • 1
    OK, there you go – grab the update which now handles split-apks as well! They will be placed into a subdir using tha packageName and keeping the original names for the APKs, so should the dev decide to change their names or numbers, you might need to "clean up" manually yourself (e.g. deleting files older than X).
    – Izzy
    Jan 19, 2021 at 16:33
  • 1
    @NoobDoob "have a script install them too" => on its way: codeberg.org/izzy/Adebar/pulls/53 – and copy-pasting the entire script would quite blow up the answer. It's open-source and can be viewed in its repo.
    – Izzy
    Jan 20, 2021 at 18:39
  • 1
    getapk still works a treat in 2023 on a fully updated Android 13 device without root.
    – dragon788
    Mar 23 at 15:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .