0

我与谷歌云端通讯功能的应用程序,并宣称这样也可选fullBackupContent恢复从排除SharedPreference文件的一些XML字段(使用fullBackupContent)

<application 
    android:fullBackupContent="@xml/backup_rules"> 

<?xml version="1.0" encoding="utf-8"?> 
<full-backup-content> 
    <exclude domain="sharedpref" path="push.xml"/> 
</full-backup-content> 

push.xml包含GCM注册ID,应当从被排除像上面的备份(一些信息HEREHERE)。但不仅这一个字段在偏好xml中......它还包含一些“内部”设置,例如启用/禁用自定义推送类别或标记为firstRunShowDialogAboutPushMessages(默认为true,解除对话框设置标志为false)。

而且一切都很好,太好了...上面的代码目前在Google Play中,现在我计划发布更新。在测试过程中,我注意到这个备份功能也在更新的情况下执行......任何人都可以确认它应该吗?应用目标:API24,测试设备:当前API25。 Doc说:

无论何时从Play商店安装应用程序,设备安装期间(系统安装以前安装的应用程序时)或运行adb安装,数据都会恢复。还原操作发生在APK安装后,但应用程序可供用户启动之前。

所以设备设置ADB期间...是指通过谷歌更新播放或签订GP版本安装文件也?没有任何账户/设备恢复,只是一个更新?据我看到...现在,当我发布新版本(即使没有排除push.xml)这个文件将不备份,因为目前已经exlusion ...和更新将“重置”在应用程序中推设置(启用所有选项/类别并且firstRunShowDialogAboutPushMessages = true,即使在用户选择退出时也是如此)。

那么我现在可以做什么?我可能会将GCM注册ID移动到SharedPreference xml文件中,并仅排除此文件,但在下次更新时,所有GCM设置都将丢失,所以很糟糕......任何想法,在这种情况下的任何帮助?

+0

我想这个更新是GCM/FCM令牌可能改变的情况。无论如何,你的应用程序做的第一件事 - 使用谷歌图书馆和它的谷歌库要求当前GCM/FCM令牌返回一个适当的令牌,无论是否更改或不。为什么您认为从SharedPrefs恢复令牌在更新的情况下是个好主意? – Stan

+0

我不这么认为,所以我排除了共享喜好文件,就像所有的教程建议的那样,有问题的链接。问题是我还有一些其他的prefs存储在同一个文件中,我想离开/恢复(只丢失GCM/FCM令牌)。问题是:我可以防止不恢复特定的声明XML文件,当应用程序已经发布,我正在更新? – snachmsm

+0

实际上,您应该只在该文件中存储FCM/GCM令牌(或任何其他应该/可能丢失的数据),因此您只会放弃该令牌。无法管理一个文件的键/值对,但只能管理整个文件。所以我建议你做更新计数 - 用FCM/GCM标记排除SP文件中的其他内容,或者声明一个新的SP文件,仅用于存储标记+添加一些迁移代码) – Stan

回答

0

我不确定你要求什么样的确认,但恕我直言,documentation已经是一个很好的确认来源。

那么现在我该怎么办?

您可能还想检查SO post中的建议解决方案,并访问Testing Backup and Restore以获取有用的见解。

+0

我有代码,不包括发布的应用程序中的重要sharedpref文件。现在我想保留/恢复这个文件,因为它不应该被删除。它可能会被删除_“在设备设置或adb”_作为DOC说,但现在我看到(测试签署更新apk文件)我的文件被排除/当简单更新正在安装...(所以这个备份功能工作在更广泛的范围内记录......或者我不了解什么_during设备setup_意味着......) – snachmsm