11 votes

Les applications ne sont pas installées avec adb restore

J'ai un appareil Android 7.0 non rooté (NVIDIA Shield Tablet) qui a été précédemment sauvegardé avec

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

Mais le restaurer avec

adb restore mybackup.ab

résultats en cela /Android/data etc. sont restaurés, mais les applications ne sont pas installées à partir des fichiers apk, sans erreur.

J'ai dû extraire les fichiers apk de monbackup.ab et les installer manuellement en batch avec adb install <...>.apk . Après cela, tout allait bien.

Je suis certain d'avoir déjà eu un problème similaire avec la 6.0. et l'hélium/carbone, mais je pensais que c'était spécifique à la méthode de sauvegarde que j'avais choisie.

Quel est le problème avec adb restore ? Est-ce parce que l'appareil n'est pas enraciné ? Pourquoi le adb install fonctionne comme prévu alors ?

1 votes

@SkylarMT Pas encore. Il faut encore utiliser adb install en lot. J'espère que quelqu'un pourra m'aider.

0 votes

J'ai partiellement réussi à utiliser Titanium Backup pour restaurer le fichier de sauvegarde adb. Il nécessite un système Root et n'a pas tout récupéré, mais il a restauré plus de la moitié des applications que j'avais installées.

0 votes

Voir si cette solution aide

5voto

Asher Dunn Points 1702

J'ai adapté un peu le script de Niels pour résoudre certains problèmes :

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

Il suffit de télécharger la dernière abe.jar de https://github.com/nelenkov/Android-backup-extractor/releases et lancez le script avec votre fichier de sauvegarde comme argument. Le script requiert java à installer.

4voto

PålOliver Points 750

Je l'ai résolu avec le script suivant

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

Vous avez besoin en plus de l'extracteur de sauvegarde Android. Cependant, d'après mon expérience, la sauvegarde adb n'est pas encore vraiment sûre. Tout d'abord, certaines applications peuvent mettre un drapeau, de sorte qu'ils ne seront pas la sauvegarde. Et la restauration ne fonctionne que parfois et pas sûr, par exemple si vous changez l'appareil. C'est une honte qu'en 2018 seul Titanium Backup fasse du bon travail, si vous avez un téléphone rooté.

0 votes

Huawei Backup fait du bon travail sur les téléphones Huawei également. Mais loin de Titanium :-(

2voto

MaTT Belis Points 53

Commande adb restore ne permettent pas de réinstaller les .apk. En fait, cette commande ne fait que réécrire les fichiers système et les fichiers de données. - Site de développement Android

Si vous voulez automatiser le processus d'installation des applications :

  1. Ajouter tous les .apk extraits dans un seul dossier
  2. Type for %f in (C:\_apk folder location_\*.apk) do adb install "%f" NOTE : Si vous avez des fichiers .apk qui ont des "espaces" dans leurs noms, adb a ne pas reconnaître les espaces le réécrire avec _ ou autre.

0 votes

Pouvez-vous préciser la référence de cette information si elle est correcte ? Depuis le adb backup sauvegarde tout, y compris les apks, je m'attendrais à ce que adb restore fait le contraire. Car sinon, il semble que les apks ne font que gaspiller de l'espace dans le fichier .ab.

0 votes

Dans le tableau 1.> Commandes de sauvegarde et de restauration sur Site de développement Android es adb restore décrit comme "Restaurer l'appareil contenu à partir d'un fichier" est interprété pour moi comme décompressant les fichiers et les plaçant dans l'appareil uniquement, et non dans les paquets d'installation. Il est logique, je pense, que l'installation ait été définie comme une commande. adb install (il n'y a pas forcément de fonctionnalité d'installation dans les autres commandes) mais je suis d'accord que ce serait bien :)

0 votes

@MaTTBelis "Restaurer le contenu du fichier" signifie pour moi restaurer tout ce que le fichier contient (ce qui inclut l'installation de l'APK s'il est présent). Et jusqu'à MM, c'est exactement ce qu'il faisait (je l'utilise depuis Android 4, quand il a été introduit). Les problèmes n'ont commencé qu'avec Android 7, où un bug semble empêcher l'installation de l'APK. Sur certains appareils, on trouve dans le logcat qu'il essaie exactement cela (mais échoue sans le dire). En fait, pour ces appareils Réponse de Nils œuvre.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X