integrateNativePluginIOS
集成 UniApp 原生插件到 iOS 项目,自动配置相关文件和依赖。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.existsSync | FileSystem['existsSync'] | 检查文件是否存在 |
deps.readFileSync | FileSystem['readFileSync'] | 读取文件内容 |
deps.writeFileSync | FileSystem['writeFileSync'] | 写入文件内容 |
deps.copyFileSync | FileSystem['copyFileSync'] | 复制文件 |
deps.statSync | FileSystem['statSync'] | 获取文件状态 |
deps.mkdirSync | FileSystem['mkdirSync'] | 创建目录 |
deps.readdirSync | FileSystem['readdirSync'] | 读取目录内容 |
deps.cp | FileSystem['promises']['cp'] | 异步复制目录 |
deps.join | Path['join'] | 路径拼接 |
deps.dirname | Path['dirname'] | 获取目录名 |
deps.basename | Path['basename'] | 获取文件名 |
deps.exec | ChildProcess['exec'] | 执行命令 |
deps.parse | JSON5Parser['parse'] | JSON 解析器 |
deps.xmlParser | XMLParserConstructor | XML 解析器构造函数 |
deps.xmlSerializer | XMLSerializerConstructor | XML 序列化器构造函数 |
环境要求
- Node.js 环境: 需要文件系统、路径、子进程等 Node.js API
- @xmldom/xmldom: XML DOM 解析库
- json5: JSON5 解析库
bash
npm install @xmldom/xmldom json5函数签名
typescript
function integrateNativePluginIOS(
projectPath: string,
projectName: string,
bundleId: string,
pluginPath: string,
parameters?: Record<string, any>,
deps: IntegrateNativePluginIOSDeps
): Promise<{ success: boolean; error?: string; logs: string[] }>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectPath | string | 是 | iOS 项目路径 |
projectName | string | 是 | 项目名称(如 'HBuilder-Hello') |
bundleId | string | 是 | 应用 Bundle Identifier |
pluginPath | string | 是 | 插件路径(可以是目录或 zip 文件) |
parameters | Record<string, any> | 否 | 插件参数配置 |
deps | IntegrateNativePluginIOSDeps | 是 | 依赖函数对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ success: boolean; error?: string; logs: string[] }> | 集成结果,包含成功状态、错误信息和日志 |
工作原理
- 解压插件 - 如果插件是 zip 文件,则解压到临时目录
- 读取插件配置 - 解析插件的
package.json和ios配置 - 复制插件文件 - 将插件文件复制到 iOS 项目中
- 修改 Xcode 项目 - 更新 project.pbxproj,添加插件文件引用
- 配置 Info.plist - 添加插件所需的权限和配置
- 集成依赖库 - 如果插件有依赖库,则添加到项目中
注意事项
- 插件路径可以是目录或 zip 文件
- 插件必须符合 UniApp 原生插件规范
- 需要在 macOS 环境下运行