跳转到主要内容

Electron 2.0.0

·7分钟阅读

经过四个多月的开发、八个 beta 版本以及来自众多应用程序灰度发布的全球测试,Electron 2.0.0 版本现已在 electronjs.org 上提供。


发布流程

从 2.0.0 开始,Electron 的发布将遵循 语义化版本控制。这意味着主版本号将更频繁地更新,通常代表 Chromium 的重大更新。补丁版本应该更稳定,因为它们仅包含高优先级的错误修复。

Electron 2.0.0 在主要版本发布前的稳定性改进方面也取得了进展。几款大型 Electron 应用程序已将 2.0.0 beta 版本纳入其灰度发布计划,为 Electron 的 beta 系列提供了有史以来最好的反馈循环。

更改 / 新功能

  • Electron 工具链的多个重要部分进行了重大升级,包括 Chrome 61、Node 8.9.3、V8 6.1.534.41、Linux 上的 GTK+ 3、更新的拼写检查器和 Squirrel。
  • MacOS 现在支持 应用内购买#11292
  • 用于加载文件的新的 API。 #11565
  • 用于启用/禁用窗口的新 API。 #11832
  • 新的 `app.setLocale()` API。 #11469
  • 新增支持日志记录 IPC 消息。 #11880
  • 新的菜单事件。 #11754
  • 向 `powerMonitor` 添加了一个 `shutdown` 事件。 #11417
  • 添加 `affinity` 选项,用于将多个 `BrowserWindow` 集合到单个进程中。 #11501
  • 添加了 `saveDialog` 列出可用扩展名的功能。 #11873
  • 支持其他通知操作 #11647
  • 能够设置 macOS 通知关闭按钮的标题。 #11654
  • 为 `menu.popup(window, callback)` 添加了条件。
  • 触控栏项目的内存改进。 #12527
  • 改进了安全建议清单。
  • 添加应用程序范围的安全范围书签。 #11711
  • 添加了在渲染器进程中设置任意参数的功能。 #11850
  • 为格式选择器添加了辅助视图。 #11873
  • 修复了网络代理竞态条件。 #12053
  • 放弃对 Linux 上的 `mips64el` 架构的支持。Electron 需要 C++14 工具链,但该架构在发布时无法获得。我们希望将来重新添加支持。

API 重大更改

  • 移除了 已弃用的 API,包括
    • 更改了 `menu.popup` 的签名。 #11968
    • 移除了已弃用的 `crashReporter.setExtraParameter` #11972
    • 移除了已弃用的 `webContents.setZoomLevelLimits` 和 `webFrame.setZoomLevelLimits`。 #11974
    • 移除了已弃用的 `clipboard` 方法。 #11973
    • 移除了 `tray.setHighlightMode` 的布尔参数支持。 #11981

Bug 修复

  • 更改为确保 `webContents.isOffscreen()` 始终可用。 #12531
  • 修复了当 DevTools 未分离并获得焦点时 `BrowserWindow.getFocusedWindow()` 的问题。 #12554
  • 修复了在预加载路径包含特殊字符的沙箱渲染器中预加载未加载的问题。 #12643
  • 根据文档修正了 `allowRunningInsecureContent` 的默认值。 #12629
  • 修复了 `nativeImage` 的透明度问题。 #12683
  • 修复了 `Menu.buildFromTemplate` 的问题。 #12703
  • 确认 `menu.popup` 选项是对象。 #12330
  • 消除了新进程创建和上下文释放之间的竞态条件。 #12361
  • 更新了更改 `BrowserView` 时的拖放区域。 #12370
  • 修复了在获得焦点时菜单栏切换 `alt` 键的检测。 #12235
  • 修复了 Webview 中的错误警告。 #12236
  • 修复了从父窗口继承 `show` 选项的问题。 #122444
  • 确保 `getLastCrashReport()` 确实是最后一个崩溃报告。 #12255
  • 修复了在网络共享路径上 `require` 的问题。 #12287
  • 修复了上下文菜单点击回调。 #12170
  • 修复了弹出菜单位置。 #12181
  • 改进了 libuv 循环清理。 #11465
  • 修复了 `hexColorDWORDToRGBA` 处理透明颜色的问题。 #11557
  • 修复了 `getWebPreferences` API 中的空指针解引用问题。 #12245
  • 修复了菜单代理中的循环引用。 #11967
  • 修复了 `net.request` 的协议过滤。 #11657
  • WebFrame.setVisualZoomLevelLimits 现在设置用户代理缩放约束 #12510
  • 为 webview 选项设置了适当的默认值。 #12292
  • 改进了动态效果支持。 #12157 #12171 #11886
  • 修复了单例 fixture 中的计时问题。
  • 修复了 NotifierSupportsActions() 中损坏的生产缓存
  • 使 MenuItem 角色兼容 camelCase。 #11532
  • 改进了触控栏更新。 #11812, #11761
  • 移除了多余的菜单分隔符。 #11827
  • 修复了蓝牙选择器 bug。关闭 #11399
  • 修复了 macOS 全屏切换菜单项标签。 #11633
  • 改进了窗口停用时工具提示的隐藏。 #11644
  • 迁移了已弃用的 web-view 方法。 #11798
  • 修复了从 browserview 打开的窗口的关闭问题。 #11799
  • 修复了蓝牙选择器 bug。 #11492
  • 更新以使用任务调度程序处理 `app.getFileIcon` API。 #11595
  • 更改为即使在屏幕外渲染时也触发 `console-message` 事件。 #11921
  • 修复了使用 `WebContents.downloadURL` 从自定义协议下载的问题。 #11804
  • 修复了透明窗口在开发者工具分离时失去透明度的问题。 #11956
  • 修复了 Electron 应用程序取消重启或关闭的问题。 #11625

macOS

  • 修复了触控栏项目重复使用时的事件泄漏。 #12624
  • 修复了暗黑模式下的托盘高亮显示。 #12398
  • 修复了异步对话框阻塞主进程的问题。 #12407
  • 修复了 `setTitle` 托盘崩溃问题。 #12356
  • 修复了设置 dock 菜单时的崩溃。 #12087

Linux

  • 更好的 Linux 桌面通知。 #12229 #12216 #11965 #11980
  • 对菜单提供更好的 GTK+ 主题支持。 #12331
  • 在 Linux 上优雅退出。 #12139
  • 使用应用程序名称作为托盘图标的默认工具提示。 #12393

Windows

  • 添加了对 Visual Studio 2017 的支持。 #11656
  • 修复了异常传递给系统崩溃处理程序的问题。 #12259
  • 修复了最小化窗口隐藏工具提示的问题。 #11644
  • 修复了 `desktopCapturer` 以捕获正确屏幕的问题。 #11664
  • 修复了 `disableHardwareAcceleration` 与透明度的问题。 #11704

下一步计划

Electron 团队正在努力支持更新版本的 Chromium、Node 和 V8。敬请期待 3.0.0-beta.1!