从 Android 14 开始,Android 软件包安装程序可以提取有关应用的元数据(例如数据安全实践),用于 Android 平台功能(例如更新后的位置权限提示)。
有两种方法可以提供此元数据
对于预加载到系统映像中的应用,**设备制造商**可以通过将包含下面描述的持久性捆绑包的 XML 文件添加到系统映像来提供有关应用的元数据。
对于正在安装或更新的应用,为了指定此元数据,**应用安装程序**应将
PersistableBundle
对象传递到setAppMetadata()
方法中。
顶级持久性捆绑包包含以下键/值对。除非另有说明,否则每个键都是可选的。
version
(必需)- 应用元数据格式的版本号。对于当前版本,请使用
2
作为此值,并使用long
作为类型。如果AppMetadata
的预期键或内容类型发生更改,Android 将更改版本号。 safety_labels
- 一个
PersistableBundle
对象,用于指定应用的 安全标签。 system_app_safety_label
- 一个
PersistableBundle
对象,用于指定应用的 系统应用安全标签。对于充当 系统服务 的应用,使用system_app_safety_label
捆绑包而不是safety_labels
捆绑包。 transparency_info
- 一个
PersistableBundle
对象,用于指定应用的 透明度信息。
安全标签格式
safety_labels
捆绑包包含以下键/值对
version
(必需)- 安全标签格式的版本号。对于当前版本,请使用
1
作为此值,并使用long
作为类型。 data_labels
- 一个
PersistableBundle
对象,用于指定 应用收集和共享的数据。 security_labels
- 一个指定应用数据删除和加密实践的
PersistableBundle
对象。 第三方验证
- 一个指定应用数据安全实践如何通过第三方验证的
PersistableBundle
对象。
收集和共享的数据
data_labels
包包含以下键值对
已收集的数据
- 一个指定应用收集的数据类型的
PersistableBundle
对象。 已共享的数据
- 一个指定应用共享的数据类型的
PersistableBundle
对象。
数据类别
data_collected
和data_shared
键都使用data_category
包格式,其中包含以下列表中显示的键值对。每个键都映射到一个PersistableBundle
对象,该对象指定特定类别的数据类型。
个人信息
财务信息
位置信息
电子邮件和短信
照片和视频
音频
存储
健康和健身
联系人
日历
标识符
应用性能
应用内行为
搜索和浏览
数据类型
data_category
包中的每个键都映射到一个不同的包,该包使用data_type
格式。您在data_type
格式中指定的键取决于您为data_category
选择的键。
可能的data_type
键值对出现在以下列表中。这些键的值是一个PersistableBundle
对象,它描述了应用针对特定数据类型的数据使用实践。某些数据类型只使用一个键。
个人信息
姓名
电子邮件地址
物理地址
电话号码
种族和民族
政治或宗教信仰
性取向或性别认同
个人标识符
其他
财务信息
银行卡和账户
购买历史
信用评分
其他
位置信息
大概位置
精确位置
电子邮件和短信
电子邮件
短信
其他
照片和视频
照片
视频
音频
录音
音乐文件
其他
存储
文件和文档
健康和健身
健康
健身
联系人
联系人
日历
日历
标识符
其他
应用性能
崩溃日志
性能诊断
其他
应用内行为
用户交互
应用内搜索历史
已安装的应用
用户生成内容
其他
搜索和浏览
网页浏览历史
数据使用
data_usage
包包含以下键值对
purposes
(必填)-
一个整数数组,表示收集或共享数据的具体原因,并使用
PersistableBundle
putIntArray
方法。每个包至少需要以下定义的目的之一。1
:PURPOSE_APP_FUNCTIONALITY(应用功能)2
:PURPOSE_ANALYTICS(分析)3
:PURPOSE_DEVELOPER_COMMUNICATIONS(开发者沟通)4
:PURPOSE_FRAUD_PREVENTION_SECURITY(欺诈预防和安全)5
:PURPOSE_ADVERTISING(广告)6
:PURPOSE_PERSONALIZATION(个性化)7
:PURPOSE_ACCOUNT_MANAGEMENT(账户管理)
is_collection_optional
-
布尔值。指定用户是否可以选择加入或退出数据收集。
注意:仅为表示数据收集的
data_category
包设置此值;不要为数据共享设置此值。 ephemeral
-
布尔值。指定应用是否仅在服务器端内存中处理数据,不在磁盘上处理,并且应用保留数据的时间不超过为特定数据处理请求提供服务所需的时间。
注意:仅为表示数据收集的
data_category
包设置此值;不要为数据共享设置此值。
数据删除和加密实践
security_labels
包包含表示应用数据删除和加密实践的键值对
is_data_deletable
- 布尔值。指定应用是否允许用户请求应用删除其用户数据。
is_data_encrypted
- 布尔值。指定应用收集的所有用户数据是否在传输过程中都经过加密。
第三方验证
third_party_verification
包包含单个键url
。此 URL(表示为字符串值)指定用于验证应用数据安全信息的第三方网站。
系统服务安全标签格式
对于充当系统服务的应用,使用system_app_safety_label
包代替safety_labels
包,并包含以下键值对
url
(**必填**)
- 指向包含充当系统服务的应用的安全信息的页面的 URL。
- 使用
string
作为类型。 - 如果未提供,则应使用隐私策略 URL 作为后备。
- 注意:Google Play 商店使用
privacy_policy
作为后备。
透明度信息格式
transparency_info
包包含以下键值对
开发者信息
- 一个指定关于应用开发者的信息的
PersistableBundle
对象。 应用信息
- 一个指定关于应用的信息的
PersistableBundle
对象。
开发者信息
developer_info
包包含以下键值对
developer_#
- 一个标识开发者的
PersistableBundle
对象。developer_info
包含一个或多个developer_#
,其中#
是一个整数。例如developer_0
、developer_1
、developer_2
等等。
开发者
developer_#
包包含以下键值对
name
(**必填**)- 一个字符串,说明开发者的名称。
email
(**必填**)- 一个字符串,说明开发者的电子邮件地址。
address
(**必填**)- 一个字符串,说明开发者的邮寄地址。
country_region
(**必填**)- 一个字符串,说明开发者的国家或地区。
网站
- 一个字符串,说明开发者的网站。
应用注册机构
- 一个字符串,说明开发者的商店或注册机构。
- 如果开发者还在商店或其他注册机构注册,则该值为商店的 Android 包名或注册机构的 URL。
- 允许多个商店的多个条目。
- 对于 Google Play,使用
com.android.vending
。 - 如果开发者是 Google Play SDK 指数中列出的 SDK,则省略此属性。
- 如果开发者未在任何应用商店或注册机构注册,则省略此属性。
应用注册机构 ID
- 一个字符串,说明所述
app_registry
的开发者 ID。 - 如果开发者还在商店或其他注册机构注册,则该值为其商店或注册机构身份。
- 允许多个商店的多个条目。
- 对于在 Google Play 注册的开发者,此值**必须**是开发者页面的 URL(例如,https://play.google.com/store/apps/dev?id=5700313618786177705是 Google LLC 开发者的 URL)。
- 如果开发者是 Google Play SDK 索引中列出的 SDK 开发者,请使用该 SDK 的 Google Play SDK 索引 URL(例如,https://play.google.com/sdks/details/com-google-android-gms-play-services-ads 是 Google 移动广告 (GMA) SDK 的 Google Play SDK 索引 URL)。
- 如果开发者在其他商店或注册中心注册,则可以提供应用商店 URL 或其他标识符。
- 如果开发者未在任何应用商店注册,则可以省略此属性。
应用信息
app_info
包含以下键值对:
title
(**必填**)- 显示应用标题的字符串。
description
(**必填**)- 用英文以人类可读的文本块描述应用用途的字符串。
contains_ads
(**必填**)- 声明应用是否显示任何广告的布尔值。
privacy_policy
(**必填**)
- 包含指向隐私政策 URL 属性的字符串,该政策详细说明了如何处理用户数据。
- 对于传输用户数据的应用,此项为必填。
- 如果应用不包含此链接,则假定该应用不处理用户数据。
category
(**必填**)包含以下最能描述应用主要用途的应用类别之一的字符串:
- Android(仅适用于 AOSP 组件)*
- 艺术与设计
- 汽车
- 美容
- 图书与参考
- 商业
- 漫画
- 通讯
- 交友
- 教育
- 娱乐
- 活动
- 金融
- 餐饮
- 游戏
- 健康与健身
- 家居
- 安装程序(仅适用于应用商店或其他安装程序)*
- 库和演示
- 生活方式
- 地图与导航
- 医疗
- 音乐与音频
- 新闻与杂志
- 育儿
- 个性化
- 摄影
- 生产力
- 安全*
- 购物
- 社交
- 体育
- 工具
- 旅游与本地
- 更新程序(仅适用于设备的默认无线 (OTA) 更新应用)*
- 视频播放器和编辑器
- 天气
联系信息
- 一个包含应用联系信息(如下)的
PersistableBundle
对象。
联系信息
contact_info
包含以下键值对:
email
(**必填**)- 显示应用电子邮件地址的字符串。
网站
- 显示应用网站的字符串。