原生库与 Autolink
Lynx 原生库是一个 npm 包,可以打包元件、原生模块和 Service 中的任意组合,供宿主 Lynx 应用消费。Autolink 是一种集成机制,让宿主应用自动发现 node_modules 中安装的库,并在 Android 和 iOS 上自动注册它们的能力,避免为每个元件、原生模块或 Service 手动写注册代码。
Autolink 当前只覆盖 Android 和 iOS 原生库,不生成 Web 或 HarmonyOS 的接入代码。
工具可用性
请使用与应用 Lynx SDK 同一发布渠道的 Autolink 工具。相关 package 和 plugin 名称如下:
- npm:
create-lynx-library和@lynx-js/autolink-codegen(lynx-autolink-codegenbinary) - Android:Gradle plugin
org.lynxsdk.library-settings和org.lynxsdk.library-build - iOS:Ruby gem
cocoapods-lynx-library
如果当前配置的 registry 还无法解析其中某个包,说明你使用的 Lynx SDK 发布版本尚未在该 registry 中包含 Native Autolink。此时请继续使用既有手动原生注册方式,等待匹配版本发布后再接入。
什么是 Lynx 原生库
一个库就是一个 npm 包,可以包含以下能力的任意组合:
- 元件:Lynx 渲染的自定义原生 UI 元件,例如
<x-button>。 - 原生模块:可以在 Lynx 应用代码中调用的、带类型声明的 JavaScript-to-native API。
- Service:应用级的原生单例,可以被库内的其他能力依赖。
每个库都通过包根目录下的 lynx.lib.json manifest 声明原生入口。这三类能力相互独立:一个库可以只暴露元件、只暴露原生模块、只暴露 Service,也可以暴露它们的任意组合。
应用侧像安装普通 npm 依赖一样安装库。Android Gradle plugin 和 iOS CocoaPods plugin 会读取 lynx.lib.json,把原生代码链接进宿主应用;宿主应用本身无需了解每个库具体暴露了哪些能力。
使用库
本节面向把一个或多个库集成进宿主 Lynx 应用的应用团队。
宿主应用项目结构
接入 Autolink 前,需要先确保宿主应用有一个可以安装 npm 包的项目根目录,并暴露原生应用的构建入口。典型结构如下: