Hec*_*tor 77 android android-manifest
我当前的 Android 应用程序目标为 12 及更高版本。
我不想允许任何类型的备份,并且当前有以下清单设置:
android:allowBackup="false"
android:fullBackupContent="false"
Run Code Online (Sandbox Code Playgroud)
但是,该android:allowBackup="false"设置现在会发出以下警告:
android:allowBackup 属性已从 Android 12 及更高版本中弃用,并且可能会在未来版本中删除。考虑添加属性 android:dataExtractionRules 指定 @xml 资源,该资源在 Android 12 及更高版本上配置云备份和设备传输。
我查看了 xml 的示例android:dataExtractionRules,但没有一个显示如何配置allowBackup="false".
我缺少什么?
是否可以allowBackup="false"使用 android:dataExtractionRulesxml来实现?
Vad*_*dik 130
添加dataExtractionRules属性到您的 AndroidManifest.xml 文件并引用\xc2\xa0 data_extraction_rules.xml文件:
<application\n android:allowBackup="false"\n android:fullBackupContent="false"\n android:dataExtractionRules="@xml/data_extraction_rules"\n ...>\nRun Code Online (Sandbox Code Playgroud)\n然后,排除云备份和d2d传输的所有可能的域,更新或创建文件app/src/main/res/xml/data_extraction_rules.xml:
\n<?xml version="1.0" encoding="utf-8"?>\n<data-extraction-rules>\n <cloud-backup>\n <exclude domain="root" />\n <exclude domain="file" />\n <exclude domain="database" />\n <exclude domain="sharedpref" />\n <exclude domain="external" />\n </cloud-backup>\n <device-transfer>\n <exclude domain="root" />\n <exclude domain="file" />\n <exclude domain="database" />\n <exclude domain="sharedpref" />\n <exclude domain="external" />\n </device-transfer>\n</data-extraction-rules>\nRun Code Online (Sandbox Code Playgroud)\n该dataExtractionRules属性适用于 API 31 (Android 12) 及更高版本。API 31 之前的 Android 版本的保留allowBackup和属性。fullBackupContent
\n\n请注意,可能会静音“
\nAttribute dataExtractionRules is only used in API level 31 and higher (current min is 19)”警告,tools:targetApi="s"也带有属性(因为旧平台只是忽略它们不支持的清单属性,并且警告是无用的)。
@Vadik Sirekanyan给出的精彩答案的评论部分提出的一个重要问题是,使用<exclude>仅domain具有属性的元素是否会排除该域中的所有内容。
我自己通读了文档,在XML 配置语法部分提到了一个重要点,其中指出:
每个
<include>和<exclude>元素必须包含以下两个属性:
domain
...
path
所以,我不会为了安全而忽略这条路径。
然而,本节给出了一个重要的观点path,我认为它回答了上述评论中提出的讨论点:
- 如果指定目录,则该规则适用于该目录和递归子目录中的所有文件。
因此,我认为该data extraction rules文件的以下设置将模仿 的行为allowBackup=false,通过排除域根目录和子目录中的所有内容进行备份:
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="root" path="." />
<exclude domain="file" path="." />
<exclude domain="database" path="." />
<exclude domain="sharedpref" path="." />
<exclude domain="external" path="."/>
</cloud-backup>
<device-transfer>
<exclude domain="root" path="."/>
<exclude domain="file" path="."/>
<exclude domain="database" path="."/>
<exclude domain="sharedpref" path="."/>
<exclude domain="external" path="."/>
</device-transfer>
</data-extraction-rules>
Run Code Online (Sandbox Code Playgroud)
我希望这些附加信息有助于支持上述答案:)
| 归档时间: |
|
| 查看次数: |
24505 次 |
| 最近记录: |