Android完整备份:“ file.xml不在包含的路径中”

时间:2018-08-05 01:44:35

标签: android android-backup-service

我已经创建了备份规则文件,就像示例https://developer.android.com/guide/topics/data/autobackup

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content xmlns:android="http://schemas.android.com/apk/res/android">
    <include
        domain="sharedpref"
        path="." />
    <exclude
        domain="sharedpref"
        path="nonceStorage.xml" />
    <exclude
        domain="sharedpref"
        path="localStorage.xml" />
</full-backup-content>

和Android Studio说存在错误:

Error:(8, 15) `nonceStorage.xml` is not in an included path [FullBackupContent]
Error:(11, 15) `localStorage.xml` is not in an included path [FullBackupContent]

错误消息完全没有信息,也不能通过谷歌搜索(几乎所有单词都很短)。 谁能解释,这***想要我做什么?如何解决此问题?

3 个答案:

答案 0 :(得分:3)

我猜这是一个IDE错误,因为the example from doc

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

device.xml上显示相同的错误。

如果您只想排除某些文件(如文档所述),则删除<include>会清除错误

  

默认情况下,“自动备份”几乎包含所有应用程序文件。

答案 1 :(得分:2)

这绝对是 Android Studio 中的一个错误,但这里有一个非常合理的解决方法。

您需要添加以下 tools:ignore XML 属性以清除错误。

<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="nonceStorage.xml"
    tools:ignore="FullBackupContent" />
<exclude domain="sharedpref" path="localStorage.xml"
    tools:ignore="FullBackupContent" />

我已经在预期的共享首选项中验证了这一结果。换句话说,XML 是正确的,而 lint 检查是错误的。

在生成调试 APK 时,这些属性不是必需的(无论构建是否完成),但是当您执行 Android Studio 的 Generate Signed Bundle / APK 时它们是必需的,否则构建会因这些错误而失败。

other answer 说您可以删除 <include domain="sharedpref" path="."/> 是不正确的。这将导致不包含任何共享首选项。

错误已被提出 here

答案 2 :(得分:0)

错误消息表明,域sharedpref中没有要排除的文件:

Error:(8, 15) `nonceStorage.xml` is not in an included path [FullBackupContent]
Error:(11, 15) `localStorage.xml` is not in an included path [FullBackupContent]

可能是域root-但不包括该域,无需排除它们。

<?xml version="1.0" encoding="utf-8"?>
<full-backup-content
    xmlns:android="http://schemas.android.com/apk/res/android">

    <include domain="sharedpref" path="."/>

</full-backup-content>

使用“设备文件资源管理器”并转到/data/user/0/com.yourapp/shared_prefs ...

您可以看到哪些文件属于哪个域-甚至在该域中也可以找到它们。