AOSP 提供以下用于在设备上存储配置信息的选项
- 系统属性
- 硬件抽象层 (HAL) 属性
- 系统配置 XML 文件
- 资源叠加层(静态和运行时)
系统属性
系统属性是存储在 build.prop
全局字典中的字符串键值对。系统属性是系统范围的资源,易于使用且性能开销低。使用系统属性时,即使系统属性在多个进程之间共享,您也不需要使用进程间通信 (IPC)。但是,系统属性类似于全局变量,如果误用可能会造成危害。误用系统属性可能会导致安全漏洞和应用对用户不可访问等问题。在将系统属性用于存储配置信息之前,请考虑其他配置选项。
如需详细了解系统属性,请参阅添加系统属性
HAL 属性
当配置的真实来源是设备上的硬件组件时,硬件的 HAL 必须提供该组件的信息。在现有 HAL 中定义新的 HAL 方法以访问配置。如需详细了解如何开发 HAL,请参阅用于 HAL 的 AIDL。
系统配置 XML 文件
当配置数据是静态但复杂(结构化)时,请考虑对配置数据使用 XML 或其他此类格式。确保文件架构保持稳定。对于 XML 文件,您可以使用 xsd_config
来保持架构稳定,并利用自动生成的 XML 解析器。
资源叠加层
您可以使用资源叠加层来自定义产品。资源叠加层有两种类型
标准资源叠加层用于在构建时自定义产品。如需了解标准资源叠加层的相关信息,请参阅使用资源叠加层自定义构建。
运行时资源叠加 (RRO) 用于在运行时更改目标软件包的资源值。例如,系统映像上安装的应用可能会根据资源的值更改其行为。与其在构建时硬编码资源值,不如使用安装在不同分区上的 RRO 在运行时更改应用资源的这些值。有关 RRO 的详细信息,请参阅 在运行时更改应用资源的这些值。