你有node,你啥实现不了,外部监听一下。
import chokidar from 'chokidar'
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// 发布版本
const publishVersion = 'V241205'
export const useWatch = (watchDir) => {
const watcher = chokidar.watch(watchDir, { ignoreInitial: true })
console.log('正在监听:', watchDir)
let renameFile = ''
watcher.on('add', (filepath) => {
console.log('add', filepath);
if (renameFile === filepath) {
return
}
const pathObj = path.parse(filepath)
if (filepath.endsWith('.apk')) {
// 获取配置信息,主要为了让名字有环境区分的概念
const data = fs.readFileSync(path.resolve(__dirname, '../your-app/static/js/config.js'))
const keyword = data.toString().split('export const').map(str => str.trim())[1]
const Env = keyword.split('=').map(str => str.trim())[1].replaceAll("'", "")
// 拿到当前环境
const targetEnv = Env || 'vite'
const files = fs.readdirSync(watchDir)
// 拼出app名称
const appName = `APP-${publishVersion}-${targetEnv}`
// 判断是否有重复的
const sameFiles = files.filter(name => name.includes(appName))
let sameFilesLen = sameFiles.length
let padEnd = ''
// 获取 appName_1、appName_2、appName_3 ...这样的名称
const getRenameFile = () => {
if (sameFilesLen) {
padEnd = `_${sameFilesLen}`
}
const finalName = `${pathObj.dir}/${appName}${padEnd}.apk`
if (fs.existsSync(finalName)) {
sameFilesLen++
return getRenameFile()
}
return finalName
}
renameFile = getRenameFile()
// 重命名
fs.renameSync(filepath, renameFile)
}
})
}
useWatch(path.resolve(__dirname, '../your-app/unpackage/release/apk'))
4 个回复
套马杆的套子 - 没有解决不了的问题,只有解决不完的问题
之前也研究过,但是应该是不行,可能如果是自行改的话,官方那块怕重复吧
及时入坑
你有node,你啥实现不了,外部监听一下。
DCloud_云服务_Mal
目前还不支持apk名称自定义
AppleDev
想要修改云打包生成的APK名称,可以通过修改配置文件或构建脚本来实现。具体步骤如下:
修改配置文件:在项目中找到相关的构建配置文件(比如build.gradle),在其中找到生成APK的相关配置,通常会有一个outputFileName或类似的属性用于设置APK的名称,修改这个属性的数值为你想要的名称。
构建脚本:通过在构建过程中进行自定义操作来修改生成的APK名称。可以编写一个脚本,在构建完成后对生成的APK文件进行重命名操作,将其改为需要的名称。
无论采取哪种方法,都需要注意在修改名称后进行测试,确保生成的APK文件仍然可以正常使用。