overlay机制

overlay是一种资源替换机制,针对不同品牌、产品的显示风格,开发者可以在不重新打包HAP的情况下,通过配置和使用overlay资源包,实现应用界面风格变换。overlay资源包只包含资源文件、资源索引文件和配置文件。

动态overlay使用方式

1、对应的overlay资源包需要放在对应应用安装路径下,通过hdc install的方式安装。如应用com.example.overlay的安装路径为data/app/el1/bundle/public/com.example.overlay/。

2、应用通过addResource(path),实现资源覆盖;通过removeResource(path),实现overlay删除。overlay资源路径需经过元能力的getContext().bundleCodeDir获取此应用对应的沙箱根目录,由应用的沙箱根目录与overlay资源包名称拼接而成。如:let path = getContext().bundleCodeDir + "overlay资源包名称",其对应沙箱路径为/data/storage/el1/bundle/overlay资源包名称。

静态overlay配置方式

包内overlay资源包中的配置文件app.json5中支持的字段:


  "app":{
    "bundleName": "com.example.myapplication.overlay",
    "vendor" : "example",
    "versionCode": "1000000",
    "versionName": "1.0.0.1",
    "icon": "$media:app_icon",
    "label": "$string:app_name",
  }
}

包内overlay资源包中的配置文件module.json5中支持的字段:


  "module":{
    "name": "entry_overlay_module_name",
    "type": "shared",
    "description": "$string:entry_overlay_desc",
    "deviceTypes": [
      "default",
      "tablet",
    ],
    "deliverywithInstall": true,


    "targetModuleName": "entry_module_name",
    "targetPriority": 1,
  }
}

在DevEco Studio中创建应用工程时,module的配置文件module.json5中包含targetModuleName和targetPriority字段时,该module将会在安装阶段被识别为overlay特征的module。overlay特征的module一般是为设备上存在的非overlay特征的module提供覆盖的资源文件,以便于targetModuleName指向的module在运行阶段可以使用overlay资源文件展示不同的颜色,标签,主题等等。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐