Tengo un dispositivo Android 7.0 no rooteado (NVIDIA Shield Tablet) que anteriormente fue respaldado con
adb backup -apk -shared -all -nosystem -f mybackup.ab
Pero restaurarlo con
adb restore mybackup.ab
da como resultado que /Android/data
, etc., se restauran, pero las aplicaciones no se instalan desde archivos apk, no hay errores.
Tuve que extraer archivos apk de mybackup.ab e instalarlos manualmente por lotes con adb install <...>.apk
. Después de eso todo estuvo bien.
Estoy bastante seguro de que anteriormente tuve un problema similar con 6.0. y helio/carbono antes, pero pensé que era específico del método de copia de seguridad que había elegido.
¿Cuál es el problema adb restore
? ¿Es porque el dispositivo no está rooteado? ¿Por qué adb install
funciona como se esperaba entonces?
He adaptado un poco el script de niels para solucionar algunos problemas con él:
#!/bin/bash
set -e
if [ $# -ne 1 ]; then
echo "Usage: $0 <package-name>"
exit 1
fi
echo -n "Enter password: "
read -s password
echo
java -jar abe.jar unpack $1 $1.tar "$password"
tar -xf $1.tar --wildcards '*/base.apk'
rm $1.tar
for apk in apps/**/a/base.apk; do
adb install "$apk" || true
done
adb restore $1
echo "Ready"
Simplemente descargue la última versión abe.jar
de https://github.com/nelenkov/android-backup-extractor/releases y ejecute el script con su archivo de copia de seguridad como argumento. El script requiere java
ser instalado.
Lo resolví con el siguiente script.
#!/bin/bash
killall adb > /dev/null 2>&1
set -e
if [ $# -ne 1 ]; then
echo "Usage: $0 <package-name-without-ab>"
exit 1
fi
export PATH=/opt/jdk1.8.0_152_jce/jre/bin:$PATH
ab=$1.ab
java -jar /opt/android-backup-extractor-20160710-bin/abe.jar unpack $ab $ab.tar apw; tar -xf $ab.tar --wildcards '*.apk' --strip-components=3
mv base.apk $ab.apk
rm $ab.tar
adb install $ab.apk
adb restore $ab
echo "Ready"
Además, necesita el extractor de copia de seguridad de Android. Sin embargo, en mi experiencia, la copia de seguridad de adb todavía no es realmente segura. En primer lugar, algunas aplicaciones pueden establecer una bandera, por lo que no serán una copia de seguridad. Y la restauración solo funciona a veces y no estoy seguro, por ejemplo, si cambia el dispositivo. Es una pena que en 2018 solo Titanium Backup haga un buen trabajo, si tiene un teléfono rooteado.
Los comandos adb restore
no se instalan .apk de nuevo. En realidad, este comando solo es reescribir archivos del sistema y de datos. - Sitio de desarrollo de Android
Si desea automatizar el proceso de instalación de aplicaciones:
for %f in (C:\_apk folder location_\*.apk) do adb install "%f"
NOTA: si tiene archivos .apk que tienen "espacios" en sus nombres adb no reconoce los espacios , reescríbalos con _ o cualquier otra cosa.adb backup
una copia de seguridad de todo, incluidas las aplicaciones, esperaría que adb restore
haga lo contrario. Porque de lo contrario, parece que los apks simplemente desperdician espacio en el archivo .ab.adb restore
describe como "Restaurar el contenido del dispositivo desde un archivo". Para mí, se interpreta como descomprimir archivos y colocarlos solo en el dispositivo, no como paquetes de instalación. Creo que tiene sentido, para la instalación fue definir el comando adb install
(no necesariamente tiene la funcionalidad de instalación en otros comandos), pero estoy de acuerdo en que sería bueno :)
Frasco de estus
adb install
en lote. Espero que alguien pueda ayudar en esto.Skylar Ittner
abejas