在阅读本文之前,请注意我不是在谈论捕获屏幕。
很多时候,为了测试应用程序,我们需要经过许多活动(包括加载/启动屏幕),直到我们到达我们刚刚更新的那个为了测试它。
我希望通过捕获应用程序的确切状态(内存,首选项,活动堆栈......)来减少这段时间,以便再次去那里。
另一个例子:QA团队可以告诉我在哪种情况下会发生错误,而不必告诉我整个过程,直到他们到达那里(因为它可能无法重现)然后我可以运行应用程序,并确切地知道抛出异常的地方,直接通过DDMS的日志去那里。
另一个例子:我们处理游戏,QA团队已经测试了几个小时的游戏并达到了某个阶段,并希望保存应用程序的当前状态,以便从这一点开始测试并制作多个测试它,而不是每次从头开始运行应用程序,等待它加载并完成所有阶段,直到它们到达这个阶段。
我认为还有其他一些场景可能会有用。
这样的事情在VM世界中可能是可能的(例如virualBox),它可能是android模拟器(至少根据this post,但他们也说它是“挑剔的”,不知道是什么在这种情况下意味着),但不是设备。
上面的例子,尽管它们可能有效,但它们适用于整个操作系统,而不适用于特定的应用程序,所以即使我选择使用它们,也需要很长时间才能使用(另外我需要使用一个模拟器,通常比任何设备慢得多。)
我很确定当前的API不支持这样的事情(出于安全原因,它可能是一件好事)。
是否可以使用ROOT捕获并加载整个应用状态?可能也是一个系统应用程序?
也许这个任务已经有了应用程序?
答案 0 :(得分:0)
由于应用程序通常会将其整个状态保存在SharedPreferences中并且持久存储在数据库中,因此在大多数应用程序中,您可以分别使用adb backup
和adb restore
备份和还原数据和状态:
<强>备份强>:
adb backup -f app.ab com.company.app
<强>恢复强>:
adb restore app.ab
PS :此功能是在ICS中引入的,并且不需要是root。
更多信息in this tutorial。