5

在阅读本文之前,请注意我不是在谈论捕获屏幕

动机

很多时候,为了测试应用程序,我们需要检查许多活动(包括加载/启动屏幕),直到我们到达我们刚刚更新的活动以进行测试。

我想通过捕获应用程序的确切状态(内存、首选项、活动堆栈......)来减少这个时间,以便再次去那里。

另一个例子:QA 团队可以向我展示在哪种情况下会出现错误,而无需向我展示整个过程,直到他们到达那里(因为它可能无法重现),然后我可以运行应用程序,并确切知道异常在哪里被抛出并通过 DDMS 的日志直接去那里。

另一个例子:我们在做一个游戏,QA 团队已经测试了几个小时并达到了某个阶段,想要保存应用程序的当前状态,以便从这一点开始对其进行测试并对其进行多次测试,而不是每次都从头开始运行应用程序,而是等待它加载并完成所有阶段,直到它们到达这个阶段。

我认为在其他情况下这样的事情可能有用。

问题

这样的事情在 VM 世界中可能是可能的(例如 virualBox),并且对于 android 模拟器来说可能是可能的(至少根据这篇文章,但他们也说它是“挑剔的”,不确定在这种情况下这意味着什么),但不适用于设备。

上面的例子,虽然它们可能工作,但它们适用于整个操作系统而不是特定的应用程序,所以即使我选择使用它们,使用它们也需要很长时间(另外我需要使用一个模拟器,这通常是很多比任何设备都慢)。

我很确定当前的 API 不支持这样的事情(出于安全原因,这可能是一件好事)。

问题

是否可以使用 ROOT 捕获和加载整个应用程序状态?也许也可以成为系统应用程序?

也许已经有这个任务的应用程序?

4

1 回答 1

2

由于应用程序将其整个状态保存在SharedPreferences中并持久保存在 DB 中是很常见的,因此在大多数应用程序中,您可以分别使用adb backup和来备份和恢复数据和状态:adb restore

备份

adb backup -f app.ab com.company.app

恢复

adb restore app.ab

PS:这个功能是在ICS中引入的,不需要root。

本教程中的更多信息。

于 2015-06-02T16:24:12.090 回答