Cha*_*aoz 36 xml backup android
所以我在应用程序清单中添加了一些东西,我看到我的应用程序标签上有一个警告:
在SDK版本23及更高版本上,您的应用数据将在应用安装时自动备份和恢复.考虑添加属性android:fullBackupContent以指定@xml资源,该资源配置要备份的文件.
然后我搜索了那个.显然,只有2个标签:<include>和<exclude>.我不想从备份中排除任何文件,因为我没有任何本地依赖文件,我不需要任何<include>标签
<include>:指定要备份的一组资源,而不是让系统默认备份应用程序中的所有数据.
当我看到如果我没有放任何<include>标签,那么系统将会back up all data in your app by default,这正是我想要的.
现在我有了这个问题:我应该添加backup_content.xml文件,但是因为默认设置是好的,所以是空的,或者根本不添加文件?(在这种情况下Android Studio会抱怨)
use*_*MGU 31
快速解决方案
AndroidManifest.xml中
<application
android:allowBackup="true"
android:fullBackupContent="true"
...
...
...
</application>
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅:https://developer.android.com/guide/topics/data/autobackup
正确的解决方案:
该警告是因为缺少<full-backup-content>资源。
为此,我们android:fullBackupContent在应用程序标签中设置了该标签,该标签指向一个包含自动备份完整备份规则的 XML 文件。这些规则决定备份哪些文件。
例子:
<application ...
android:fullBackupContent="@xml/my_backup_rules">
</application>
Run Code Online (Sandbox Code Playgroud)
my_backup_rules.xml在目录中创建名为的 XML 文件res/xml/。在文件内,使用<include>和<exclude>元素添加规则。以下示例备份除 device.xml 之外的所有共享首选项:
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
</full-backup-content>
Run Code Online (Sandbox Code Playgroud)
更多信息参考:
https://developer.android.com/guide/topics/data/autobackup https://betterprogramming.pub/androids-attribute-android-allowbackup-demystified-114b88087e3b
如果您想使警告静音,但不需要从备份中排除任何文件,您也可以添加tools:ignore="AllowBackup"到application您的标签中AndroidManifest.xml以抑制警告(或使用Suppress查看警告详细信息时获得的按钮)。
我也遇到了同样的问题,但找不到答案。因此,为了备份所有内容,我尝试制作backup.xml这样的文件:
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
</full-backup-content>
Run Code Online (Sandbox Code Playgroud)
而且效果很好。
编辑 06/04/21
刚刚得到谷歌的官方答复IssueTracker:
您问题的答案出现在标题为“包含和排除文件”部分的开头:“默认情况下,系统备份几乎所有应用程序数据”。为了备份所有支持的数据,请勿在清单文件中包含 android:fullBackupContent。
| 归档时间: |
|
| 查看次数: |
9386 次 |
| 最近记录: |