#!/usr/bin/env node // 把 apps/mobile 打好的 APK 整理为发布目录 dist-mobile:agent-<版本>.apk 与 index.json,由服务在 /app 下载页提供。 // 用法:先 pnpm apk 打包,再执行本脚本;deploy/release-apk.sh 会依次完成并发布到服务目录 import crypto from 'node:crypto' import fs from 'node:fs' import path from 'node:path' import { fileURLToPath } from 'node:url' const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..') const apk = path.join(root, 'apps/mobile/android/app/build/outputs/apk/debug/app-debug.apk') const out = path.join(root, 'dist-mobile') const { version } = JSON.parse(fs.readFileSync(path.join(root, 'apps/mobile/package.json'), 'utf8')) if (!fs.existsSync(apk)) { console.error(`没有找到安装包:${apk},请先执行 pnpm apk`) process.exit(1) } fs.rmSync(out, { recursive: true, force: true }) fs.mkdirSync(out, { recursive: true }) const file = `agent-${version}.apk` fs.copyFileSync(apk, path.join(out, file)) const data = fs.readFileSync(path.join(out, file)) const release = { version, file, size: data.length, sha256: crypto.createHash('sha256').update(data).digest('hex'), publishedAt: new Date().toISOString(), } fs.writeFileSync(path.join(out, 'index.json'), `${JSON.stringify(release, null, 2)}\n`) console.log(`dist-mobile/${file}(${(data.length / 1048576).toFixed(1)} MB)`)