8 votes

Sauvegarde/restauration ADB individuelle consécutive multiple sans invite

Je cherchais à savoir comment faire des sauvegardes par lots via des commandes individuelles de sauvegarde/restauration adb (pour avoir des fichiers .ab séparés par paquet/application/données/etc.) (je connais l'application de bureau Helium (Carbon) comme une option pour cela - je serais intéressé par l'écriture de mon propre script pour le plaisir de toute façon).

La raison pour laquelle je souhaite créer des fichiers .ab individuels plutôt qu'un grand fichier est que je veux pouvoir disposer d'une fonctionnalité de sauvegarde/restauration partielle pour des paquets individuels, et ne pas avoir à faire, par exemple, 50 applications en même temps.

Le principal obstacle pour l'instant est qu'à chaque fois qu'une sauvegarde/restauration se produit, l'utilisateur doit donner son accord lorsque l'invite apparaît - y a-t-il un moyen de contourner cela pour pouvoir utiliser adb backup/restore pour plusieurs paquets individuels par le biais de quelque chose comme un script shell ?

Gracias.

2voto

PNMNS Points 121

Vous pouvez essayer d'utiliser adb shell input tap <x> <y> où x et y sont les coordonnées de l'endroit où vous souhaitez taper sur l'écran (vous pouvez afficher les coordonnées dans les Options du développeur). J'ai pu utiliser ce code pour restaurer une sauvegarde individuelle :

#$1 is backup file

adb restore ${1} &
sleep 2
adb shell input touchscreen tap <x> <y>
wait

J'ai trouvé utile de dormir pendant quelques secondes après la commande de restauration, mais ce n'est peut-être pas nécessaire.

1voto

mediantis Points 91

Il semblerait donc qu'il n'y ait pas de moyen intégré et (du moins apparemment) prévu pour que nous puissions le faire.

Au lieu de cela, cela est possible grâce à la adb shell sendevent Cette commande permet d'émuler la saisie tactile à partir d'un ordinateur sur lequel sont installés les outils adb (et tous les pilotes pertinents), à condition que le téléphone ait fourni un accès adb à cette machine spécifique.

Les événements peuvent être enregistrés en utilisant adb shell getevent et rejoué avec adb shell sendevent . L'utilisateur peut alors enregistrer les pressions sur les boutons et sauvegarder un script qui les rejoue. Bien sûr, cela pose des problèmes, notamment lorsqu'un écran superposé (par exemple, celui d'une application d'éclairage à décalage rouge) empêche d'appuyer sur le bouton, si quelque chose d'autre apparaît (comme une bulle de discussion, etc.) et tout autre type d'obstruction, de sorte qu'il s'agit au mieux d'une solution de contournement.

0voto

Ça semble particulièrement étrange, mais dans le sens attendu du mal de google. D'après ma compréhension incomplète mais croissante des choses, vous pouvez convertir le fichier de restauration en fichier tar en changeant les 24 premiers octets. La question est donc : est-ce qu'une simple extraction tar d'une manière particulière (remontage de quelque chose ou autre rw temporairement ?) accomplirait la même chose que la restauration adb ? Bien sûr, les sources sont théoriquement toutes là. J'avais l'intention d'essayer des choses éventuellement et de voir si elles semblent fonctionner assez bien pour justifier de ne pas se soucier assez de creuser à travers cette source. Oui, c'est une réponse assez merdique, mais elle semble valable en tant que substitut jusqu'à ce qu'un petit script shell adb avec tar invokage ou autre prenne sa place, ce qui est ce que je présume que l'auteur de la question originale et moi-même aimerions voir.

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