1# EmbeddedUIExtensionAbility 2 3### 介绍 4 5本示例主要展示了[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md)的提供方与拉起方的创建与使用。开发者可以在UIAbility的页面中通过EmbeddedComponent嵌入本应用的EmbeddedUIExtensionAbility提供的UI。EmbeddedUIExtensionAbility会在独立于UIAbility的进程中运行,完成其页面的布局和渲染。通常用于有进程隔离诉求的模块化开发场景。 6 7### 效果预览 8 9| 主页 | 10| ------------------------------- | 11|  | 12 13### 使用说明: 14 151. 当前EmbeddedUIExtensionAbility和EmbeddedComponent仅支持在拥有多进程配置的设备上使用。 162. EmbeddedComponent只能在UIAbility中使用,且被拉起的EmbeddedUIExtensionAbility需与UIAbility属于同一应用。 173. EmbeddedUIExtensionAbility通过UIExtensionContext和UIExtensionContentSession提供相关能力。本文描述中称被启动的EmbeddedUIExtensionAbility为提供方,称启动EmbeddedUIExtensionAbility的EmbeddedComponent组件为使用方。 18 19### 工程目录 20 21``` 22entry/src/main/ets/ 23|---entryability 24| |---EntryAbility.ts 25|---pages 26| |---Index.ets // 首页 27| |---Extension.ets // EmbeddedUIExtensionComponent页面 28|---model 29| |---Logger.ts // 封装的日志类 30|---embeddeduiextability 31| |---EmbeddedUIExtAbility.ets 32 33entry/src/main/resources 34|---base 35| |---element 36| |---media 37| |---profile 38| | |---main_pages.json // 页面配置文件 39|---en_US 40|---rewfile 41|---zh_CN 42|---module.json5 // 配置文件 43``` 44 45### 具体实现 46 47* 使用方在主页面[Index.ets](entry/src/main/ets/pages/Index.ets)中通过EmbeddedUIExtensionComponent页面嵌入提供方应用的EmbeddedUIExtensionAbility提供的UI。 48 49* 源码链接: [Index.ets](entry/src/main/ets/pages/Index.ets) 50 51* 接口参考: [EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md) 52 53* 提供方UIExtensionAbility页面在[Extension.ets](entry/src/main/ets/pages/Extension.ets)中实现,在页面中需要导入EmbeddedUIExtensionAbility的依赖包,自定义类继承EmbeddedUIExtensionAbility并实现onCreate、onSessionCreate、onSessionDestroy、onForeground、onBackground和onDestroy生命周期回调。 54 55* 源码链接:[Extension.ets](entry/src/main/ets/pages/Extension.ets) 56 57* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md) 58 59* 主页面[Index.ets](entry/src/main/ets/pages/Index.ets)和提供方EmbeddedUIExtensionAbility页面在[Extension.ets](entry/src/main/ets/pages/Index.ets)需要在[main_pages.json](entry\src\main\resources\base\profile\main_pages.json)中配置。 60 61* 源码链接:[main_pages.json](entry/src/main/resources/base/profile/main_pages.json) 62 63* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md) 64 65* 在工程Module对应的[module.json5配置文件](entry/src/main/module.json5)中注册EmbeddedUIExtensionAbility。type标签需要设置为“embeddedUI”, srcEntry字段表示当前UIExtensionAbility组件所对应的代码路径。 66 67* 源码链接:[module.json5](entry/src/main/module.json5) 68 69* 接口参考:[EmbeddedUIExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-ability-kit/js-apis-app-ability-embeddedUIExtensionAbility.md) 70### 相关权限 71 72不涉及 73 74### 依赖 75 76不涉及 77 78### 约束与限制 79 801. 本当前EmbeddedUIExtensionAbility和EmbeddedComponent仅支持在拥有多进程配置的设备上使用。 81 822. 本示例需要使用DevEco Studio 4.0 Beta2 (Build Version: 4.0.0.400 构建 2023年8月2日)及以上版本才可编译运行。 83 843. 若单进程设备想尝试使用EmbeddedUIExtensionAbility,可以通过如下命令行将单进程设备配置为多进程设备。 85 86``` 87hdc shell 88param set persist.sys.abilityms.multi_process_model true // 将persist.sys.abilityms.multi_process_model参数配置为true 89param save // 保存修改 90param get persist.sys.abilityms.multi_process_model // 查询修改结果 91reboot // 修改成功后重启生效 92``` 93 94### 下载 95 96如需单独下载本工程,执行如下命令: 97 98``` 99git init 100git config core.sparsecheckout true 101echo code/SystemFeature/ApplicationModels/EmbeddedUIExtensionAbility/ > .git/info/sparse-checkout 102git remote add origin https://gitee.com/openharmony/applications_app_samples.git 103git pull origin master 104```