在对应用程序进行更新后,我已经检查过,似乎所有用户的数据都被删除了。 检查logcat会显示一些可疑的行:
04-11 15:06:17.877 32429-17597 /? I / Backup:[GmsBackupTransport]当前恢复包:PackageInfo {8f777e2 com.my.package}
04-11 15:06:17.878 24281-26232 /? I / BackupManagerService:下一个恢复包:RestoreDescription {com.my.package:STREAM}
04-11 15:06:22.910 24281-32369 /? W / RestoreEngine:恢复清单签名与com.my.package
的已安装应用程序不匹配04-11 15:06:27.183 24281-26232 /? E / BackupManagerService:无法完成com.my.package的恢复
04-11 15:06:27.184 24281-26232 /? I / ActivityManager:强制停止com.my.package appid = 10389 user = 0:清除数据
04-11 15:06:27.189 24281-24345 /? I / ActivityManager:强制停止com.my.package appid = 10389 user = -1: clearApplicationUserData
04-11 15:06:27.225 24281-26232 /? D / BackupManagerService:恢复完成,终止com.my.package的主机进程
发生此问题时,应用的AndroidManifest
有:
android:allowBackup="true"
出于测试目的,我已经使用
生成了一个新的apkandroid:allowBackup="false"
将其更改为false后,它不会发生。
什么可能导致这个问题?
答案 0 :(得分:2)
关键是这一行:
还原清单签名与已安装的应用程序不匹配。
在发布模式下备份并在调试模式下进行恢复时可能会发生这种情况,反之亦然。 BackupManagerService#restoreFinished()
中会抛出异常。
要按照this步骤手动删除备份。