integrateIOSThirdPartyModule
集成第三方模块到 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.xmlParser | XMLParserConstructor | XML 解析器构造函数 |
deps.xmlSerializer | XMLSerializerConstructor | XML 序列化器构造函数 |
环境要求
- Node.js 环境: 需要文件系统、路径等 Node.js API
- @xmldom/xmldom: XML DOM 解析库
bash
npm install @xmldom/xmldom函数签名
typescript
function integrateIOSThirdPartyModule(
projectPath: string,
projectName: string,
bundleId: string,
config: IOSThirdPartyModuleConfig,
deps: IntegrateIOSThirdPartyModuleDeps
): Promise<{ success: boolean; error?: string; logs: string[] }>参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectPath | string | 是 | iOS 项目路径 |
projectName | string | 是 | 项目名称(如 'HBuilder-Hello') |
bundleId | string | 是 | 应用 Bundle Identifier |
config | IOSThirdPartyModuleConfig | 是 | 第三方模块配置 |
deps | IntegrateIOSThirdPartyModuleDeps | 是 | 依赖函数对象 |
IOSThirdPartyModuleConfig
| 属性 | 类型 | 必填 | 说明 |
|---|---|---|---|
libs | Array<{ source: string; targetName?: string }> | 否 | 库文件列表 |
frameworks | Array<{ source: string; targetName?: string }> | 否 | Framework 文件列表 |
embedFrameworks | Array<{ source: string; targetName?: string }> | 否 | 需要嵌入的 Framework 列表 |
sources | Array<{ source: string; targetPath?: string }> | 否 | 源文件列表 |
resources | Array<{ source: string; targetPath?: string }> | 否 | 资源文件列表 |
infoPlist | Record<string, any> | 否 | Info.plist 配置 |
urlSchemes | string[] | 否 | URL Scheme 列表 |
universalLinks | string[] | 否 | Universal Links 列表 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ success: boolean; error?: string; logs: string[] }> | 集成结果,包含成功状态、错误信息和日志 |
工作原理
- 复制库文件 - 将库文件复制到 iOS 项目中
- 复制 Framework - 将 Framework 文件复制到项目中
- 复制源文件 - 将源文件复制到指定目录
- 复制资源文件 - 将资源文件复制到项目中
- 修改 Xcode 项目 - 更新 project.pbxproj,添加文件引用
- 配置 Info.plist - 添加 URL Scheme、Universal Links 等配置
注意事项
- 需要在 macOS 环境下运行
- 库文件和 Framework 路径为可选,如果未提供则跳过相应步骤