integrateThirdPartyModule
集成第三方模块到Android项目的通用函数,支持库文件、Gradle依赖、源文件和清单文件修改。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.existsSync | FileSystem['existsSync'] | 检查文件是否存在 |
deps.readFileSync | FileSystem['readFileSync'] | 读取文件内容 |
deps.writeFileSync | FileSystem['writeFileSync'] | 写入文件内容 |
deps.copyFileSync | FileSystem['copyFileSync'] | 复制文件 |
deps.mkdirSync | FileSystem['mkdirSync'] | 创建目录 |
deps.join | Path['join'] | 路径拼接 |
deps.dirname | Path['dirname'] | 获取目录名 |
deps.xmlParser | XMLParserConstructor | XML 解析器构造函数 |
deps.xmlSerializer | XMLSerializerConstructor | XML 序列化器构造函数 |
deps.xpath | XPath | XPath 查询库 |
环境要求
- @xmldom/xmldom: XML DOM 解析库
- xpath: XPath 查询库
bash
npm install @xmldom/xmldom xpath函数签名
typescript
function integrateThirdPartyModule(
projectPath: string,
moduleDir: string,
packageName: string,
config: ThirdPartyModuleConfig,
deps: IntegrateThirdPartyModuleDeps
): Promise<{ success: boolean; message?: string; error?: string; logs: string[] }>
interface ThirdPartyModuleConfig {
name: string
libFiles?: Array<{ source: string; targetName?: string }>
gradleDependencies?: string[]
sourceFiles?: Array<{
source: string
targetDir: string
targetName?: string
packageReplacements?: Array<{ oldPackage: string; newPackage: string }>
}>
manifestModifications?: ManifestModification[]
dcloudPropertiesConfig?: {
featureName: string
featureImpl: string
moduleName: string
moduleImpl: string
}
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
projectPath | string | 是 | Android项目路径 |
moduleDir | string | 是 | 模块目录(如 'app' 或 'HBuilder-uniPlugin') |
packageName | string | 是 | 应用包名 |
config.name | string | 是 | 模块名称 |
config.libFiles | Array | 否 | 需要拷贝到libs目录的文件列表 |
config.gradleDependencies | string[] | 否 | Gradle依赖列表 |
config.sourceFiles | Array | 否 | 需要拷贝的Java/Kotlin源文件 |
config.manifestModifications | ManifestModification[] | 否 | AndroidManifest.xml修改项 |
config.dcloudPropertiesConfig | object | 否 | dcloud_properties.xml配置项 |
deps | IntegrateThirdPartyModuleDeps | 是 | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ success: boolean; message?: string; error?: string; logs: string[] }> | Promise,解析为集成结果对象 |
工作原理
- 拷贝库文件:将
.aar或.jar文件拷贝到libs目录 - 添加Gradle依赖:在
build.gradle中添加依赖声明 - 拷贝源文件:将 Java/Kotlin 源文件拷贝到对应包目录,支持包名替换
- 修改AndroidManifest.xml:根据配置添加权限、Activity、Service 等
- 配置dcloud_properties.xml:添加 UniApp 原生插件配置
- 返回结果:包含成功状态、消息、错误信息和详细日志
这是所有第三方模块集成的基础函数,其他集成函数(如微信登录、QQ登录等)都基于此函数实现。