多个连续的单个ADB备份/还原,无提示


8

我正在研究如何通过单个adb备份/还原命令进行批量备份(以使每个程序包/应用程序/数据/等具有单独的.ab文件)(我知道Helium(Carbon)桌面应用程序可以作为这-无论如何都会有兴趣编写自己的脚本)。

想要创建单个.ab文件而不是一个大型文件的原因是,我希望能够仅对单个软件包具有部分备份/还原功能,而不必一次执行全部50个应用程序。

目前的主要障碍是,每次发生备份/还原时,提示出现时都必须提供用户输入-可以通过以下方法来对多个单独的软件包使用adb备份/还原。一个shell脚本?

谢谢!

Answers:


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

我发现在执行restore命令后睡眠几秒钟很有用,但可能没有必要。


1

因此,似乎没有内置的(至少在表面上)旨在使我们执行此操作的方法。

取而代之的是,可以通过adb shell sendevent命令来实现-如果电话允许adb访问该特定计算机,则该命令可以模拟安装了adb工具(和任何相关驱动程序)的计算机的触摸输入。

可以使用记录事件并使用adb shell getevent重放事件adb shell sendevent。然后,用户可以记录接受按钮的按下操作,并保存脚本以重播它们。当然,这会带来一些问题,例如屏幕覆盖(例如来自红移照明应用程序的屏幕)会阻止按下该按钮,是否出现了其他东西(例如聊天气泡等)以及其他任何障碍物,因此最好的解决方法。


0

这似乎特别奇怪,但是以这种预期的谷歌邪恶方式。从我自己对事物的不完整但不断增长的理解中,您可以通过更改前24个字节将还原文件转换为tar文件。因此,问题是,以特定方式进行简单的tar提取(临时重新安装某些内容或其他rw?)是否可以完成adb restore所做的相同工作?当然,从理论上讲所有来源都在那里。我正计划最终尝试一些东西,看看它们是否工作得足够好,以证明没有足够的兴趣来挖掘该源。是的,这是一个很糟糕的答案,但是在占位符之前,似乎有点值得,直到一个带有tar调用或类似内容的adb shell脚本取代了它,这是我假定的原始询问者,我希望看到。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.