| 1234567891011121314151617181920212223242526272829303132 |
- #!/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)`)
|