From 8845fb6fb2be5572a4c6b29ca46cffdf8acefef6 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Tue, 20 Jul 2021 22:47:57 +0200 Subject: [PATCH] Support ab files --- .gitignore | 2 ++ README.md | 13 ++++++++++++- ab_fix.sh | 19 +++++++++++++++++++ twrpabx | Bin 0 -> 58152 bytes 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100755 ab_fix.sh create mode 100755 twrpabx diff --git a/.gitignore b/.gitignore index ea3b10b..32d7072 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /adb-sync/ /work/ *.kate-swp + +*.ab diff --git a/README.md b/README.md index 066e89f..b4f8800 100644 --- a/README.md +++ b/README.md @@ -31,4 +31,15 @@ This tool allows you to recover apps data from a TWRP-compatible backup - If the play store tells you an error and you don't have that app, skip to the next app using the volume DOWN button. 7. At the end restart the phone to fix permissions, if the app are crashing. -The program is licensed with GPLv3 by Andrea Cavalli +## ADB ".ab" backups +With .ab backups you must follow these extra steps before the others: +1. `adb backup --twrp` +2. Install the lastest openjdk version of your distro +3. `./ab_fix.sh ` +3. follow the other steps + +## License + +The program is licensed with GPLv3 by Andrea Cavalli (https://cavallium.it) + +twrpabx (https://github.com/prudy/twrpabx/tree/img_and_issue4) diff --git a/ab_fix.sh b/ab_fix.sh new file mode 100755 index 0000000..8822e52 --- /dev/null +++ b/ab_fix.sh @@ -0,0 +1,19 @@ +#!/bin/bash +bashdir="$PWD" +outdir="work" + +abfile=$(readlink -f "$1") + +mkdir -p "$outdir" +outdir=$(readlink -f "$outdir") +mkdir -p "$outdir/ab_backup" + +#dd if="$1" bs=512 skip=3 | tar -x -C "$outdir/ab_backup" +#java -jar abe.jar unpack "$1" "$outdir/ab_backup.tar" +cd "$outdir/ab_backup" +"$bashdir/twrpabx" "$abfile" + +#tar -xf "$outdir/ab_backup.tar" -C "$outdir/ab_backup" + +echo "The backup has been extracted to: \"$outdir/ab_backup\"" +echo "Please use that path for the next steps" diff --git a/twrpabx b/twrpabx new file mode 100755 index 0000000000000000000000000000000000000000..5c01e1b8506f38f835331afdef1e02c46a0763c9 GIT binary patch literal 58152 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 literal 0 HcmV?d00001