build-android.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // build-android.js 位于 .build/ 目录下
  2. const fs = require('fs');
  3. const path = require('path');
  4. const { execSync } = require('child_process');
  5. // 计算各路径
  6. const rootDir = path.join(__dirname, '..'); // 项目根目录
  7. const cordovaPrjDir = path.join(__dirname, 'dros'); // .build/dros
  8. const srcDir = path.join(rootDir, 'dist', 'h5'); // ../dist/h5
  9. const dstDir = path.join(cordovaPrjDir, 'www');
  10. // 1. 在项目根目录执行 cordova create
  11. execSync('npx cordova create .build/dros', { cwd: rootDir, stdio: 'inherit' });
  12. // 2. 在 .build/dros 中执行 cordova platform add android
  13. execSync('npx cordova platform add android', { cwd: cordovaPrjDir, stdio: 'inherit' });
  14. // 3. 复制 dist/h5 → .build/dros/www
  15. fs.rmSync(dstDir, { recursive: true, force: true });
  16. fs.mkdirSync(dstDir, { recursive: true });
  17. function copy(src, dst) {
  18. const stat = fs.statSync(src);
  19. if (stat.isDirectory()) {
  20. fs.mkdirSync(dst, { recursive: true });
  21. for (const entry of fs.readdirSync(src)) {
  22. copy(path.join(src, entry), path.join(dst, entry));
  23. }
  24. } else {
  25. fs.copyFileSync(src, dst);
  26. }
  27. }
  28. copy(srcDir, dstDir);
  29. // 4. 在 .build/dros 中执行 cordova build android
  30. execSync('npx cordova build android', { cwd: cordovaPrjDir, stdio: 'inherit' });