プロンプトなしの複数の連続した個別のADBバックアップ/復元


8

(パッケージ/アプリケーション/データ/などごとに個別の.abファイルを作成するために)個々のadbバックアップ/復元コマンドを使用してバッチバックアップを実行する方法を調べていました(オプションとしてヘリウム(カーボン)デスクトップアプリを知っています)これ-とにかく楽しみのために自分のスクリプトを書くことに興味があります)。

大きな.abファイルに対して個別の.abファイルを作成する理由は、個別のパッケージのみの部分的なバックアップ/復元機能を使用できるようにしたいためです。たとえば、一度に50個のアプリを実行する必要はありません。

現時点での主な障害は、バックアップ/復元が発生するたびに、プロンプトが表示されたときにユーザー入力を行う必要があることです。これを回避するには、シェルスクリプト?

ありがとう!

回答:


2

adb shell input tap <x> <y>xとyが画面上でタップしたい場所の座標である場所を使用して試すことができます(開発者オプションで座標を表示できます)。このコードを使用して、個々のバックアップを復元できました。

#$1 is backup file

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

復元コマンドの後で数秒間スリープするのは便利だと思いましたが、必要ないかもしれません。


1

したがって、これを行うための組み込みの(少なくとも一見すると)意図された方法はないようです。

代わりに、これはadb shell sendeventコマンドを介して可能です。これは、adbツール(および関連するドライバー)がインストールされているコンピューターからのタッチ入力をエミュレートできます(電話がその特定のマシンへのadbアクセスを提供している場合)。

イベントは、を使用adb shell geteventして記録および再生できますadb shell sendevent。次に、ユーザーは承諾ボタンの押下を記録し、それらを再生するスクリプトを保存できます。もちろん、これにより、スクリーンオーバーレイがある場合(赤のシフト照明アプリなど)がボタンを押すのを妨げている場合、何か他のものが表示された場合(チャットの吹き出しなど)、その他の障害物などの問題が発生します。せいぜい回避策です。


0

これは特に奇妙に思えますが、その予想されるグーグルの邪悪な方法で。私自身の不完全ですが理解の深まりから-最初の24バイトを変更することで、復元ファイルをtarファイルに変換できます。それで問題は、特定の方法での単純なtar抽出(何かまたは他のrwを一時的に再マウントしますか?)は、adbリストアが行っているのと同じことを達成するでしょうか?もちろん、ソースは理論的にすべてです。私は最終的に物事を試し、それらがそのソースを掘り下げるのに十分な思いやりがないことを正当化するのに十分に機能するように見えるかどうかを確認することを計画していました。はい、これはかなりひどい答えですが、tar呼び出しなどを使用した小さなadbシェルスクリプトが実行されるまではプレースホルダーとして価値があるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.