build-android.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // build-android.js 位于 .build/ 目录下
  2. const fs = require('fs');
  3. const path = require('path');
  4. const { execSync } = require('child_process');
  5. const { rmSync } = require('fs');
  6. const { exec } = require('cordova');
  7. // 计算各路径
  8. const rootDir = path.join(__dirname, '..'); // 项目根目录
  9. const cordovaPrjDir = path.join(__dirname, 'dros'); // .build/dros
  10. const srcDir = path.join(rootDir, 'dist', 'h5'); // ../dist/h5
  11. const dstDir = path.join(cordovaPrjDir, 'www');
  12. rmSync('.build/dros', { recursive: true, force: true });
  13. // 做一些环境检查
  14. execSync('npx cordova --version', { stdio: 'inherit' });
  15. // 1. 在项目根目录执行 cordova create
  16. execSync('npx cordova create .build/dros zskk.dros dros', { cwd: rootDir, stdio: 'inherit' });
  17. // 2. 在 .build/dros 中执行 cordova platform add android
  18. execSync('npx cordova platform add android', { cwd: cordovaPrjDir, stdio: 'inherit' });
  19. // 3. 复制 dist/h5 → .build/dros/www
  20. fs.rmSync(dstDir, { recursive: true, force: true });
  21. fs.mkdirSync(dstDir, { recursive: true });
  22. function copy(src, dst) {
  23. const stat = fs.statSync(src);
  24. if (stat.isDirectory()) {
  25. fs.mkdirSync(dst, { recursive: true });
  26. for (const entry of fs.readdirSync(src)) {
  27. copy(path.join(src, entry), path.join(dst, entry));
  28. }
  29. } else {
  30. fs.copyFileSync(src, dst);
  31. }
  32. }
  33. copy(srcDir, dstDir);
  34. // 4. 安装白名单插件
  35. // execSync('npx cordova plugin add cordova-plugin-whitelist', { cwd: cordovaPrjDir, stdio: 'inherit' });
  36. // 5. 复制预配置好的config.xml
  37. fs.copyFileSync(path.join(__dirname, 'config.xml'), path.join(cordovaPrjDir, 'config.xml'));
  38. // 6. 在 .build/dros 中执行 cordova build android
  39. execSync('npx cordova build android --verbose', { cwd: cordovaPrjDir, stdio: 'inherit' });
  40. // 7. 重命名apk文件
  41. const version='1.0.0'
  42. const pkg='dros'
  43. const src = path.join(__dirname, 'dros/platforms/android/app/build/outputs/apk/debug/app-debug.apk');
  44. const dst = path.join(__dirname, `dros/platforms/android/app/build/outputs/apk/debug/${pkg}-v${version}.apk`);
  45. fs.copyFileSync(src, dst);
  46. console.log(`✅ 已生成 ${dst}`);
  47. // 安装到连接的安卓设备
  48. execSync(`adb install "${dst}"`, { stdio: 'inherit' });
  49. console.log(`✅ 已安装到安卓设备 ${dst}`);