完整备份内容xml文件应该为空还是根本不添加以包含所有内容?

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

  • 我没有在文档中看到任何内容说可以将布尔值传递给fullBackupContent。 (7认同)
  • 看看https://medium.com/mindorks/auto-backup-in-android-dont-do-it-unless-you-know-it-cc9fe2f9176b (2认同)
  • 使用 android:fullBackupContent="true" 时出现 Lint 警告“缺少 &lt;full-backup-content&gt; 资源” (2认同)
  • 为什么这个解决方案被接受?`android:fullBackupContent` 不允许布尔值。 (2认同)
  • @CoolMind 你的评论具有误导性。allowedBackup="true" 不会允许“任何黑客”窃取用户数据。备份数据安全地存储在加密的 Google Drive 文件夹中。您可能指的是这样一个事实:对设备进行“物理访问”并了解您的解锁代码的攻击者可以通过 adb 获取数据,_如果设备启用了 USB 调试_,这是一个非常小众的场景。 (2认同)

Hen*_*nte 7

正确的解决方案:

该警告是因为缺少<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

  • 因为我昨天遇到了这个问题,并且没有找到相关的完整答案 (3认同)

Hem*_*lle 6

如果您想使警告静音,但不需要从备份中排除任何文件,您也可以添加tools:ignore="AllowBackup"application您的标签中AndroidManifest.xml以抑制警告(或使用Suppress查看警告详细信息时获得的按钮)。


Avi*_*tal 3

我也遇到了同样的问题,但找不到答案。因此,为了备份所有内容,我尝试制作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。