跳转到内容

快速上手

本教程把 OSSLibraries 接入一个 HarmonyOS 应用,并在屏幕上显示许可证列表。列表包含应用打包的每一个 OHPM 依赖。点击每一项进入详情视图,查看完整许可证全文。插件在每次构建时重新生成数据,列表始终与实际打包的依赖一致。

TIP

本项目提供 Skills,可让 AI Agent 帮你完成项目接入。

zsh
npx skills add composable-tu/osslibraries
zsh
pnx skills add composable-tu/osslibraries
zsh
yarn dlx skills add composable-tu/osslibraries
zsh
bunx skills add composable-tu/osslibraries
zsh
deno x npm:skills add composable-tu/osslibraries
zsh
vpx skills add composable-tu/osslibraries
zsh
vlx skills add composable-tu/osslibraries

前置条件

  • entry 模块的 HarmonyOS 项目,使用 DevEco Studio 与 ArkTS 页面(ArkUI)构建。
  • 构建机上安装有 OHPM 与 npm(或其他 Node 包管理器)。

不支持仓颉(Cangjie)应用

按照华为的文档,仓颉鸿蒙应用既不能增加 ArkTS 页面,也不能调用三方 ArkTS 库,而本库正是建立在 ArkTS 页面与组件之上的,所以仓颉应用用不了它。

第 1 步 — 安装两个包

一个包负责渲染许可证列表,另一个在构建时扫描依赖。

从 OHPM 安装 UI 包:

zsh
ohpm install osslibraries_ui
zsh
ohpm install osslibraries_ui_wear

扫描器是发布到 npm 的 Hvigor 插件,按开发依赖安装:

sh
npm install -D osslibraries-hvigor-plugin
sh
pnpm add -D osslibraries-hvigor-plugin
sh
yarn add -D osslibraries-hvigor-plugin
sh
bun add -D osslibraries-hvigor-plugin
sh
deno add --dev npm:osslibraries-hvigor-plugin
sh
vp add -D osslibraries-hvigor-plugin
sh
vlt install -D osslibraries-hvigor-plugin

第 2 步 — 注册插件

打开 entry/hvigorfile.ts,把插件加进 plugins 数组:

hvigorfile.ts
ts
import { hapTasks } from "@ohos/hvigor-ohos-plugin";
import { ossScanPlugin } from "osslibraries-hvigor-plugin";

export default {
  system: hapTasks,
  plugins: [ossScanPlugin()],
};

每次构建时,插件都会扫描 oh_modules/,并把许可证元数据写入 entry/src/main/resources/rawfile/osslibraries.json

注册插件所在的模块总是会被排除在许可证列表之外。如需排除其他本地模块,把模块名传给 selfModules

hvigorfile.ts
ts
plugins: [ossScanPlugin({ selfModules: ["mylibrary", "3rdlibrary"] })];

第 3 步 — 导入页面

UI 包提供了一个通过命名路由访问的页面。在 entry 模块的任意页面文件顶部(比如 Index.ets)导入它:

ets
import 'osslibraries_ui/src/main/ets/pages/OSSLibrariesLicensePage';
ets
import 'osslibraries_ui_wear/src/main/ets/pages/OSSLibrariesLicenseListPageWear';
import 'osslibraries_ui_wear/src/main/ets/pages/OSSLibrariesLicenseDetailPageWear';

导入即注册路由,main_pages.json 无需改动。

第 4 步 — 构建以生成数据

在 DevEco Studio 中执行一次构建。插件会在日志中输出扫描结果:

text
[osslibraries] scanning OHPM dependencies at /path/to/project
[osslibraries] wrote 128 libraries to .../rawfile/osslibraries.json (JSON)

验证: entry/src/main/resources/rawfile/osslibraries.json 文件现在存在,并包含一个 libraries 数组。它的结构见数据模型

第 5 步 — 跳转到许可证页

在任意页面通过 pushNamedRoute 跳转:

ets
this.getUIContext().getRouter().pushNamedRoute({
  name: 'OSSLibrariesLicensePage'
});
ets
this.getUIContext().getRouter().pushNamedRoute({
  name: 'OSSLibrariesLicenseListPageWear'
});

验证: 许可证页打开并展示依赖列表,每个库一行。点击任意一行进入包含完整许可证全文的详情视图。

接下来