const fs = require('fs') const path = require('path') const rootDir = path.resolve(__dirname, '..') const pkgPath = path.join(rootDir, 'package.json') const androidGradlePath = path.join(rootDir, 'android', 'app', 'build.gradle') const readJson = (file) => { const raw = fs.readFileSync(file, 'utf8') return JSON.parse(raw) } const calcVersionCode = (version) => { const [major = 0, minor = 0, patch = 0] = String(version) .split('.') .map((n) => Number.parseInt(n, 10) || 0) return major * 10000 + minor * 100 + patch } const syncAndroidGradle = (version) => { if (!fs.existsSync(androidGradlePath)) { console.warn('[version-sync] 未找到 android/app/build.gradle,跳过 Android 同步') return } const versionCode = calcVersionCode(version) let content = fs.readFileSync(androidGradlePath, 'utf8') content = content.replace(/versionCode\s+\d+/, `versionCode ${versionCode}`) content = content.replace(/versionName\s+"[^"]+"/, `versionName "${version}"`) fs.writeFileSync(androidGradlePath, content) console.log( `[version-sync] Android 已同步:versionName=${version}, versionCode=${versionCode}`, ) } const main = () => { const pkg = readJson(pkgPath) const version = pkg.version if (!version) { throw new Error('package.json 中缺少 version 字段') } syncAndroidGradle(version) } main()