modifyGradle
修改 Android Gradle 构建文件,支持修改应用ID、版本信息和签名配置。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.existsSync | FileSystem['existsSync'] | 检查文件是否存在 |
deps.readFileSync | FileSystem['readFileSync'] | 读取文件内容 |
deps.writeFileSync | FileSystem['writeFileSync'] | 写入文件内容 |
deps.copyFileSync | FileSystem['copyFileSync'] | 复制文件 |
deps.join | Path['join'] | 路径拼接 |
deps.dirname | Path['dirname'] | 获取目录名 |
deps.basename | Path['basename'] | 获取文件名 |
环境要求
- fs: Node.js 文件系统模块
- path: 路径处理模块
typescript
import fs from 'fs'
import path from 'path'函数签名
typescript
function modifyGradle(
buildGradlePath: string,
options: GradleModificationOptions,
deps: ModifyGradleDeps
): Promise<ModificationResult>
interface GradleModificationOptions {
applicationId?: string
versionName?: string
versionCode?: number
signing?: {
keystore: string
keystorePassword: string
keyAlias: string
keyPassword: string
}
}
interface ModifyGradleDeps {
existsSync: FileSystem['existsSync']
readFileSync: FileSystem['readFileSync']
writeFileSync: FileSystem['writeFileSync']
copyFileSync: FileSystem['copyFileSync']
join: Path['join']
dirname: Path['dirname']
basename: Path['basename']
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
buildGradlePath | string | 是 | build.gradle 文件路径 |
options.applicationId | string | 否 | 应用包名 |
options.versionName | string | 否 | 版本名称(如 "1.0.0") |
options.versionCode | number | 否 | 版本代码(如 1) |
options.signing | object | 否 | 签名配置对象 |
deps | ModifyGradleDeps | 是 | 依赖注入对象 |
返回值
| 类型 | 说明 |
|---|---|
Promise<{ success: boolean; message?: string; error?: string }> | Promise,解析为修改结果对象 |
异常
| 错误类型 | 触发条件 | 说明 |
|---|---|---|
| 文件不存在 | build.gradle 路径无效 | success: false, error 为 "文件不存在" |
| 写入失败 | 文件写入权限问题 | success: false, error 包含错误详情 |
工作原理
备份文件:复制原始 build.gradle 为 build.gradle.bak
读取文件:读取 build.gradle 文件内容
使用正则替换修改配置:
- applicationId: 匹配
applicationId "xxx"并替换 - versionName: 匹配
versionName "xxx"并替换 - versionCode: 匹配
versionCode xxx并替换 - signing: 在 buildTypes.release 块中添加或更新签名配置
- applicationId: 匹配
写入文件:将修改后的内容写回 build.gradle
返回结果:
- 成功:
success: true,message描述修改内容 - 失败:
success: false,error包含错误信息
- 成功:
使用正则表达式替换而非完全解析,保持文件原有格式和注释不变。