集成到现有库中
编辑页面
了解如何将 Expo Modules API 集成到现有的 React Native 库中。
For the complete documentation index, see llms.txt. Use this Use this file to discover all available pages.
有些情况下,您可能希望将 Expo Modules API 集成到现有的 React Native 库中。例如,逐步重写您的库,或者利用 Android 生命周期监听器 和 iOS AppDelegate 订阅者 来自动完成库的设置,可能会很有帮助。
本指南将帮助您为现有的 React Native 库配置对 Expo Modules API 的访问。
前提条件
在项目根目录下创建 expo-module.config.json 文件,并在其中添加一个空对象 {}。稍后您将填写它以启用特定功能。
创建此文件对于 Expo Autolinking 识别您的库为 Expo 模块并自动链接您的原生代码是必要的。
1
2
将 Expo 包添加为依赖项
在您的 package.json 中将 expo 包添加为 peer dependency —— 我们建议使用 * 作为版本范围,以免在用户的 node_modules 目录中造成重复包。
您的库还需要依赖 expo-modules-core,但仅作为开发依赖 —— 它已经由 expo 包提供给依赖您库的项目,并且其核心版本与项目中使用的特定 SDK 兼容。
{ %%placeholder-start%%... %%placeholder-end%% "devDependencies": { "expo-modules-core": "^X.Y.Z" }, "peerDependencies": { "expo": "*" }, "peerDependenciesMeta": { "expo": { "optional": true } } }
3
创建一个原生模块
根据下面的模板创建 Kotlin 和 Swift 文件:
package my.module.package import expo.modules.kotlin.modules.Module import expo.modules.kotlin.modules.ModuleDefinition class MyModule : Module() { override fun definition() = ModuleDefinition { // 定义组件放在这里 } }
import ExpoModulesCore public class MyModule: Module { public func definition() -> ModuleDefinition { // 定义组件放在这里 } }
然后,将您的类添加到 expo-module.config.json 文件中的 Android 和/或 iOS modules 配置中。Expo Autolinking 将自动把这些类作为用户项目中的原生模块进行链接。
{ "ios": { "modules": ["MyModule"] }, "android": { "modules": ["my.module.package.MyModule"] } }
如果您的工作区中已经有一个示例应用,请确保该模块已正确链接。
- 在 Android 上,原生模块类会在构建前作为 Gradle 构建任务的一部分自动链接。
- 在 iOS 上,您需要运行
pod install来链接这个新类。
现在,这些模块类可以通过 expo-modules-core 包中的 requireNativeModule 函数在 JavaScript 代码中访问。我们建议单独创建一个文件来导出该原生模块,以简化使用。
import { requireNativeModule } from 'expo-modules-core'; export default requireNativeModule('MyModule');
现在类已经设置并链接完成,您可以开始实现其功能。请参阅 native module API 参考页面,以及从简单到中等复杂度真实模块的 examples 链接,以了解如何使用该 API。