main.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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 registerInputHandlers } from './main-js/adb/input.js';
  10. import { registerIpcHandlers as registerHistoryHandlers } from './main-js/history.js';
  11. const __filename = fileURLToPath(import.meta.url);
  12. const __dirname = path.dirname(__filename);
  13. const isDev = process.env.NODE_ENV === 'development' || !app.isPackaged;
  14. // 应用启动逻辑:设置 CSP、创建窗口、监听激活事件
  15. app.whenReady().then(() => {
  16. setContentSecurityPolicy(isDev);
  17. createWindow();
  18. // 注册所有 ADB 相关的 IPC 处理器
  19. registerDeviceManagerHandlers();
  20. registerDeviceInfoHandlers();
  21. registerScreenshotHandlers();
  22. registerInputHandlers();
  23. registerHistoryHandlers();
  24. app.on('activate', () => {
  25. if (BrowserWindow.getAllWindows().length === 0) {
  26. createWindow();
  27. }
  28. });
  29. // 禁用 before-quit 事件的确认对话框
  30. app.on('before-quit', (event) => {
  31. // 不阻止退出,直接退出应用
  32. // 如果需要清理资源,可以在这里添加
  33. });
  34. });
  35. // 应用关闭逻辑:macOS 保持运行,其他平台退出
  36. app.on('window-all-closed', () => {
  37. if (process.platform !== 'darwin') {
  38. // 直接退出,不询问
  39. app.exit(0);
  40. }
  41. });