11 votos

Las aplicaciones no se instalan con adb restore

Tengo un dispositivo Android 7.0 no rooteado (NVIDIA Shield Tablet) que fue respaldado previamente con

adb backup -apk -shared -all -nosystem -f mybackup.ab

Pero restaurarlo con

adb restore mybackup.ab

resulta en que /Android/data , etc se restauran, pero las aplicaciones no se instalan desde los archivos apk, sin errores.

He tenido que extraer los archivos apk de mybackup.ab e instalarlos manualmente por lotes con adb install <...>.apk . Después de eso todo fue bien.

Estoy bastante seguro de haber tenido antes un problema similar con 6.0. y Helio/Carbón, pero pensé que era específico del método de copia de seguridad que había elegido.

¿Cuál es el problema con adb restore ? ¿Se debe a que el dispositivo no está rooteado? ¿Por qué adb install ¿funciona como se esperaba entonces?

1 votos

@SkylarMT Todavía no. Todavía tengo que usar adb install en lote. Espero que alguien pueda ayudar en esto.

0 votos

Tuve éxito parcial utilizando Titanium Backup para restaurar el archivo de copia de seguridad adb. Se requiere Root y no consiguió todo, pero restauró más de la mitad de las aplicaciones que había instalado.

0 votos

A ver si esta solución ayuda a

5voto

Asher Dunn Puntos 1702

He adaptado un poco el script de niels para arreglar algunos problemas que tenía:

#!/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"

Sólo tienes que descargar la última 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 a instalar.

4voto

PålOliver Puntos 750

Lo he solucionado 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"

Necesitas además el Android-backup-extractor. Sin embargo, en mi experiencia el adb backup no es realmente seguro. En primer lugar, algunas aplicaciones pueden establecer una bandera, por lo que no será la copia de seguridad. Y la restauración funciona sólo a veces y no es seguro, por ejemplo, si se cambia el dispositivo. Es una pena que en 2018 sólo Titanium Backup haga un buen trabajo, si tienes un teléfono rooteado.

0 votos

Huawei Backup también hace un buen trabajo en los teléfonos Huawei. Pero lejos de Titanium :-(

2voto

Comando adb restore no se instalan los .apk de nuevo. En realidad, este comando es sólo escribir de nuevo el sistema y los archivos de datos. - Sitio de desarrollo de Android

Si quieres automatizar el proceso de instalación de aplicaciones:

  1. Añade todos los .apk extraídos a una carpeta
  2. Tipo for %f in (C:\_apk folder location_\*.apk) do adb install "%f" NOTA: Si tienes archivos .apk que tienen "espacios" en sus nombres adb tiene no reconocer los espacios reescribirlo con _ o cualquier otra cosa.

0 votos

¿Puede especificar la referencia de esta información si es correcta? Desde adb backup copia de seguridad de todo, incluyendo apks, yo esperaría que adb restore hace lo contrario. Porque de lo contrario parece que los apks sólo desperdician espacio en el archivo .ab.

0 votos

En la tabla 1.> Comandos de copia de seguridad y restauración en Sitio de desarrollo de Android es adb restore describe como "Restaurar el dispositivo contenidos de archivo" se interpreta para mí como descomprimir archivos y poner en el dispositivo sólo, no los paquetes de instalación. tiene sentido, creo, para la instalación fue definir comando adb install (su no necesariamente han instalar funkcionality en otros comandos) pero estoy de acuerdo en que sería bueno :)

0 votos

@MaTTBelis "Restaurar contenido del archivo" para mí significa restaurar todo lo que contiene el archivo (lo que incluye instalar el APK si está ahí). Y hasta MM hacía exactamente eso (lo uso desde Android 4, cuando se introdujo). Los problemas empezaron sólo con Android 7, donde un bug parece impedir la instalación del APK. En algunos dispositivos, se encuentra en logcat que intenta exactamente eso (pero falla sin decirlo). En realidad, para esos dispositivos Respuesta de Nils funciona.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X