5

我遇到了同样的问题 - 正如在谷歌开发者组中发现的那样。我引用了 Chris Grebeldinger(原作者)的非常详细的解释。

“在文档中:http: //developer.android.com/guide/topics/data/backup.html#Testing

它建议通过以下方式测试应用程序的备份/恢复:

  1. 安装您的应用
  2. 确保启用备份/恢复
  3. 更改一些数据并调用 dataChanged()
  4. 强制 bmgr 运行备份通道
  5. 卸载应用程序
  6. 重新安装应用程序并检查您的数据是否已恢复

一切似乎都很好,直到第 4 步,当我在日志中看到这一点时:

V/BackupManagerService(306): removePackageParticipantsLocked: uid=10078 #1 V/BackupManagerService(306): 移除com.example.app的备份知识

然后是第 5 步:

V/BackupManagerService(306):restoreAtInstall pkg=com.example.app token=21 V/BackupManagerService(306):没有恢复集——跳过恢复

显然,当卸载应用程序时,备份的数据会被破坏,这意味着官方测试工作流程可能无法正常工作?最好的测试方法是什么?”

有没有人设法正确运行和测试这个样本?

4

2 回答 2

2

再次感谢 Chris Grebeldinger,他热情地回答了我对他在 google android 开发人员组中的原始帖子的回复。

它是如何工作的:

  • 在设备 A 中安装应用程序。
  • 在设备 A 中设置任何数据或首选项。
  • 在设备 A 上强制备份。(使用 adb shell bmgr backup [app_name],adb shell bmgr run)。
  • 获取第二个设备 B.
  • 在设备 B 上执行恢复出厂设置。
  • 重置后,再次安装应用程序。
  • 还原操作应该会成功。

令我烦恼的是,谷歌 Android 文档中显示的“步骤”似乎非常详细,但决定省略看起来是必要和强制性的步骤。

正如克里斯在他的回复中提到的那样,我希望这可以帮助其他发现同样问题的人。

谢谢。

编辑:

在使用不同设备进行进一步测试后,似乎整个备份/恢复过程可能因制造商和设备而异。我可以使用 Google 的文档方法测试示例应用程序,即使用 nexus 7 卸载和安装 - 只是巧合。因此,我的建议是不要期望在您的测试中出现相同的行为和一致性。

于 2012-11-30T16:01:13.697 回答
2

尝试使用模拟器进行测试。只需卸载和安装应用程序,带有 API 22 的 Nexus 5 就可以为我工作。

全流程:

  1. 通过 adb 启用备份:bmgr enable true
  2. 设置本地传输: bmgr transport android/com.android.internal.backup.LocalTransport
  3. 运行您的应用程序并准备备份
  4. 运行备份:bmgr backup <package> & bmgr run
  5. 从模拟器卸载应用程序
  6. 再次安装应用程序 - 应该会自动恢复

提示:为“备份”活动查找 logcat

于 2016-11-30T22:15:10.063 回答