首页 文章

Android备份/恢复示例不起作用?

提问于
浏览
5

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

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

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

  • 安装你的应用

  • 确保已启用备份/恢复

  • 更改一些数据并调用dataChanged()

  • 强制bmgr运行备份传递

  • 卸载应用程序

  • 重新安装应用程序并检查您的数据是否已恢复

一切似乎都很好,直到第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):没有恢复集 - 跳过恢复

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

有没有人设法运行并正确测试此样本?

2 回答

  • 1

    再次感谢Chris Grebeldinger,他回答了我对google android开发者小组中原帖的回复 .

    它是如何工作的:

    • 在设备A中安装应用程序 .

    • 设置设备A中的任何数据或首选项 .

    • 在设备A上强制备份 . (使用adb shell bmgr backup [app_name],adb shell bmgr run) .

    • grab 第二台设备B.

    • 在设备B上执行恢复出厂设置 .

    • 重置后,再次安装该应用程序 .

    • 恢复操作应该成功 .

    令我恼火的是,谷歌Android文档中显示的“步骤”似乎非常详细,决定省略它看似必要的必要步骤 .

    正如克里斯在答复中提到的那样,我希望这有助于其他找到同样问题的人 .

    谢谢 .

    编辑:

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

  • 2

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

    完整过程:

    • 按adb启用备份: bmgr enable true

    • 设置本地运输: bmgr transports android/com.android.internal.backup.LocalTransport

    • 运行您的应用并准备备份

    • 运行备份: bmgr backup <package> & bmgr run

    • 从模拟器卸载应用程序

    • 再次安装应用程序 - 还原应自动进行

    提示:查找logcat以进行“备份”活动

相关问题