12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- // build-android.js 位于 .build/ 目录下
- const fs = require('fs');
- const path = require('path');
- const { execSync } = require('child_process');
- const { rmSync } = require('fs');
- // 计算各路径
- const rootDir = path.join(__dirname, '..'); // 项目根目录
- const cordovaPrjDir = path.join(__dirname, 'dros'); // .build/dros
- const srcDir = path.join(rootDir, 'dist', 'h5'); // ../dist/h5
- const dstDir = path.join(cordovaPrjDir, 'www');
- rmSync('.build/dros', { recursive: true, force: true });
- // 1. 在项目根目录执行 cordova create
- execSync('npx cordova create .build/dros zskk.dros dros', { cwd: rootDir, stdio: 'inherit' });
- // 2. 在 .build/dros 中执行 cordova platform add android
- execSync('npx cordova platform add android', { cwd: cordovaPrjDir, stdio: 'inherit' });
- // 3. 复制 dist/h5 → .build/dros/www
- fs.rmSync(dstDir, { recursive: true, force: true });
- fs.mkdirSync(dstDir, { recursive: true });
- function copy(src, dst) {
- const stat = fs.statSync(src);
- if (stat.isDirectory()) {
- fs.mkdirSync(dst, { recursive: true });
- for (const entry of fs.readdirSync(src)) {
- copy(path.join(src, entry), path.join(dst, entry));
- }
- } else {
- fs.copyFileSync(src, dst);
- }
- }
- copy(srcDir, dstDir);
- // 4. 在 .build/dros 中执行 cordova build android
- execSync('npx cordova build android', { cwd: cordovaPrjDir, stdio: 'inherit' });
- // 5. 重命名apk文件
- const version='1.0.0'
- const pkg='dros'
- const src = path.join(__dirname, 'dros/platforms/android/app/build/outputs/apk/debug/app-debug.apk');
- const dst = path.join(__dirname, `dros/platforms/android/app/build/outputs/apk/debug/${pkg}-v${version}.apk`);
- fs.copyFileSync(src, dst);
- console.log(`✅ 已生成 ${dst}`);
|