ModuleMetadata

ModuleMetadata 模块包含指定设备上模块列表的元数据。系统会在系统服务器启动后立即解析并缓存这类元数据。

Android 10 中的变化

ModuleMetadata APK 包含 ModuleInfoProvider,后者用于实现 PackageManager API 中的 getModuleInfogetInstalledModules 方法。这些方法由从模块元数据提供程序软件包解析的 XML 元数据提供支持。模块元数据软件包的软件包名称存储在 config_defaultModuleMetadataProvider 配置值中。

模块元数据提供程序必须包含其 <application> 标记的 <metadata> 条目。元数据条目必须包含单个键 (android.content.pm.MODULE_METADATA),该键的值是对 XML 资源的引用,后者包含指定设备上模块列表的元数据。

软件包格式

ModuleMetadata 模块 (com.android.modulemetadata) 以 APK 文件的形式提供。

元数据元素

XML 文档必须由具有一个或多个子项的单个顶级 <module-metadata> 元素组成。每个子项都是一个 <module> 元素,包含以下属性:

  • name 是对用户可见的软件包名称的资源引用,映射到 ModuleInfo#getName
  • packageName 是模块的软件包名称,映射到 ModuleInfo#getPackageName
  • isHidden 表示模块是否已隐藏,映射到 ModuleInfo#isHidden</code>.

示例:

<module-metadata>
<module name="@string/resource" packageName="package_name" isHidden="false|true">
<module .... >
</module-metadata>