Necesitarías un custom recovery para esta solución y parece que ya tienes instalado TWRP.
Configurar adb en PC, si no lo está ya. Arranque en modo de recuperación. Montar la partición de datos. Busca el nombre del paquete de tu aplicación, si no lo sabes ya, y ejecuta estos comandos:
adb shell
busybox tar -C / -cvzhf /sdcard/PACKAGE\_NAME.tgz data/app/PACKAGE\_NAME\* data/data/PACKAGE\_NAME # replace PACKAGE\_NAME with package name of the app
El último comando creará un tarball con extensión .tgz en /sdcard
con nombre como nombre del paquete de la aplicación. El tarball contendría el APK de la aplicación (entre otras cosas) y los datos privados de la misma. La propiedad y los atributos de los archivos se conservarán automáticamente. Los atributos extendidos (como el contexto de SELinux) no se conservarán en este comando. 1
Su aplicación puede tener datos de acceso público bajo /sdcard/Android
. Puede utilizar simplemente adb pull
o MTP para copiar esos archivos en el PC y restaurarlos usando adb push
o MTP, cuando sea necesario.
Para restaurar la copia de seguridad, hazlo:
adb shell
busybox tar -C / -xvzhf BACKUP\_PATH # replace BACKUP\_PATH with the file path of your backup, such as /sdcard/PACKAGE\_NAME.tgz
restorecon -FRv /data/data/PACKAGE\_NAME # this will set default SELinux context on the data files of your app
Desmonta la partición de datos, reinicia y deberías poder encontrar tu aplicación en estado restaurado.
Nota: He probado esta solución en una compilación no oficial de CM13.
1 Me he dado cuenta de que la build biónica de busybox (que se encuentra en TWRP v2.8.6.0) entre otros argumentos tiene -p
para el alquitrán que se utiliza para almacenar contextos SELinux . Si el archivo fue creado usando ese argumento, entonces durante la extracción esos contextos serían restaurados automáticamente, por lo tanto, no es necesario ejecutar restorecon
explícitamente.