You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android12中dataExtractionRules配置及规则编写咨询

Android 12 设备间数据迁移排除规则问题

背景与需求

背景说明:当不需要维护SharedPreferences或备份文件时,可在AndroidManifest.xml中设置android:allowBackup="false",该属性在Android12中已废弃,但仍可用于禁用cloud-based backup,例如卸载重装应用后SharedPreferences数据会被清除。

需求:Android12中系统默认通过D2D(设备到设备)自动迁移旧设备文件至新设备,我希望阻止系统自动传输SharedPreferences等文件,实现仅迁移应用本身,无任何数据或缓存(如同全新安装),因此需编写dataExtractionRules排除所有文件。

问题

  • Q1:因我有4个SharedPreferences文件,是否可使用多个<exclude domain="sharedpref">标签?
  • Q2:path应如何准确编写?例如是“data/data/com.myapp/sharedpref/user_pref.xml”还是仅“user_pref.xml”?
  • Q3:<exclude domain="root" path="" />是什么含义?root是否指代我的应用?若是,是否无需再编写file、database等其他域的排除规则?

解答

Q1 解答

可以使用多个<exclude domain="sharedpref">标签,每个标签对应一个具体的SharedPreferences文件路径即可精准排除目标文件。另外你也可以用通配符简化配置,比如<exclude domain="sharedpref" path="*.xml" />,一次性排除所有SharedPreferences文件,无需逐个添加标签。

Q2 解答

path只需要填写SharedPreferences文件的文件名,比如仅写user_pref.xml即可。因为domain="sharedpref"已经指定了域是应用的SharedPreferences目录,系统会自动定位到/data/data/[你的包名]/shared_prefs/路径下,完全不需要写完整绝对路径——如果写绝对路径反而会匹配失败,因为系统解析规则时会基于对应域的根目录去查找路径。

Q3 解答

  • <exclude domain="root" path="" />的含义是排除应用的所有数据目录,这里的root指代你的应用的整个数据分区,包含sharedpref、database、files、cache等所有存储目录。
  • 如果添加了这个规则,确实不需要再单独编写file、database、sharedpref等其他域的排除规则了,它会一次性排除应用所有的数据内容,完全符合你“仅迁移应用本身,无任何数据或缓存”的需求。

内容的提问来源于stack exchange,提问作者CodingBruceLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 22:30:57