main.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { app, BrowserWindow, session } from 'electron';
  2. import { fileURLToPath } from 'url';
  3. import path from 'path';
  4. import { setContentSecurityPolicy } from './main-js/security.js';
  5. import { createWindow } from './main-js/window-setup.js';
  6. import { registerIpcHandlers as registerDeviceManagerHandlers } from './main-js/adb/device-manager.js';
  7. import { registerIpcHandlers as registerDeviceInfoHandlers } from './main-js/adb/device-info.js';
  8. import { registerIpcHandlers as registerScreenshotHandlers } from './main-js/adb/screenshot.js';
  9. import { registerIpcHandlers as registerTouchEventHandlers } from './main-js/adb/touch-event.js';
  10. import { registerIpcHandlers as registerInputHandlers } from './main-js/adb/input.js';
  11. import { registerIpcHandlers as registerScrollHandlers } from './main-js/adb/scroll.js';
  12. import { registerIpcHandlers as registerSystemHandlers } from './main-js/adb/system.js';
  13. import { registerIpcHandlers as registerReadWriteHandlers } from './main-js/read-and-write.js';
  14. import { registerIpcHandlers as registerExecutePyHandlers } from './main-js/execute-py.js';
  15. import { registerIpcHandlers as registerWorkflowHandlers } from './main-js/workflow.js';
  16. const __filename = fileURLToPath(import.meta.url);
  17. const __dirname = path.dirname(__filename);
  18. const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged;
  19. // 应用启动逻辑:设置 CSP、创建窗口、监听激活事件
  20. app.whenReady().then(() => {
  21. setContentSecurityPolicy(isDev);
  22. createWindow();
  23. // 注册所有 ADB 相关的 IPC 处理器
  24. registerDeviceManagerHandlers();
  25. registerDeviceInfoHandlers();
  26. registerScreenshotHandlers();
  27. registerTouchEventHandlers();
  28. registerInputHandlers();
  29. registerScrollHandlers();
  30. registerSystemHandlers();
  31. registerReadWriteHandlers();
  32. registerExecutePyHandlers();
  33. registerWorkflowHandlers();
  34. app.on('activate', () => {
  35. if (BrowserWindow.getAllWindows().length === 0) {
  36. createWindow();
  37. }
  38. });
  39. // 禁用 before-quit 事件的确认对话框
  40. app.on('before-quit', (event) => {
  41. // 不阻止退出,直接退出应用
  42. // 如果需要清理资源,可以在这里添加
  43. });
  44. });
  45. // 应用关闭逻辑:macOS 保持运行,其他平台退出
  46. app.on('window-all-closed', () => {
  47. if (process.platform !== 'darwin') {
  48. // 直接退出,不询问
  49. app.exit(0);
  50. }
  51. });