专栏:HarmonyOS 三方库适配实战(13/30)
核心问题:代码在entry里能运行,为什么还不能称为三方库?
摘要
应用内代码可以读取页面状态、资源和业务单例,也可以跨目录引用任何实现;三方库却必须有独立入口、清楚依赖和可被另一个模块消费的公共 API。本文以library_adapter为例,把文本归一化代码放进 Static Library 模块,入口只导出稳定符号,entry仅通过包名和 HAR 使用。当前工程已完成 HAR 与消费方 HAP 构建,但未进行设备运行。
应用代码与库代码的责任不同
| 应用内实现 | 可复用库 |
|---|---|
| 可以知道页面与业务流程 | 不应依赖消费方页面 |
| 可直接读取本工程资源 | 资源必须随包交付或由调用方提供 |
| 内部路径可能随意引用 | 消费方只能走公共入口 |
| 版本由应用整体管理 | 包有自己的名称、版本和兼容承诺 |
| 改动只影响当前应用 | 改动可能破坏所有消费者 |
图 1:Library 模块拥有独立入口与依赖;应用只做消费和场景验证。
教学工程的模块布局
harmonyos-third-party-lab/ ├─ entry/ # 消费方 HAP │ ├─ libs/text-tool.har │ └─ src/main/ets/pages/Index.ets └─ library_adapter/ # Static Library ├─ Index.ets # 唯一公共入口 ├─ oh-package.json5 ├─ README.md ├─ CHANGELOG.md ├─ LICENSE └─ src/main/ets/ ├─ core/ ├─ model/ ├─ platform/ └─ async/官方“构建 HAR”文档说明 Static Library 模块以Index.ets和模块级oh-package.json5形成交付边界,并列出 HAR 对 Ability、页面路由和本地模块依赖等约束。把业务 Ability 搬进 HAR 并不能得到可复用库。
第一步:让核心代码不认识应用
核心函数只处理明确输入:
exportfunction