Electron 平台指南

Electron 是一个使用 Web 技术(HTML、CSS 和 JS)构建跨平台桌面应用程序的框架。

系统要求

Linux

  • Python 版本 2.7.x。建议检查您的 Python 版本,因为某些发行版(如 CentOS 6.x)仍然使用 Python 2.6.x。

Mac

  • Python 版本 2.7.x,支持 TLS 1.2。
  • Xcode,macOS 的 IDE,捆绑了必要的软件开发工具,用于代码签名和编译 macOS 的原生代码。版本 8.2.1 或更高版本。
  • RedHat 构建支持
    • Homebrew,一种可用的 macOS 包管理器,用于安装额外的工具和依赖项。Homebrew 需要安装 RPM 打包依赖项。 Brew 安装步骤
    • RPM,多个 Linux 发行版的标准包管理器,是用于创建 Linux RPM 包的工具。要安装此工具,请使用以下 Homebrew 命令

      brew install rpm
      

Windows

  • Python 版本 2.7.10 或更高版本。
  • PowerShell,对于 Windows 7 用户,必须为 应用签名 版本 3.0 或更高版本。
  • Windows 调试工具 是一个用于增强调试功能的工具包。建议与 Windows SDK 10.0.15063.468 一起安装。

快速入门

创建项目

npm i -g cordova
cordova create sampleApp
cd sampleApp
cordova platform add electron

注意:如果使用的是 9.x 之前的 Cordova CLI 版本,则需要使用 cordova-electron 参数而不是 electron 来执行任何需要平台名称的命令。例如

cordova platform add cordova-electron
cordova run cordova-electron

预览项目

无需构建 Electron 应用即可预览。由于构建过程可能很慢,建议在预览时传入 --nobuild 标志以禁用构建过程。

cordova run electron --nobuild

构建项目

调试构建

cordova build electron
cordova build electron --debug

发布构建

cordova build electron --release

自定义应用程序的窗口选项

Electron 提供了许多选项来操作 BrowserWindow。本节将介绍如何配置一些基本选项。有关选项的完整列表,请参阅 Electron 文档 - BrowserWindow 选项

使用 Cordova 项目,建议在项目的根目录中创建一个 Electron 设置文件,并在 config.xml 文件中的首选项选项 ElectronSettingsFilePath 中设置其相对路径。

示例 config.xml

<platform name="electron">
    <preference name="ElectronSettingsFilePath" value="res/electron/settings.json" />
</platform>

要覆盖或设置任何 BrowserWindow 选项,在此文件中,选项将添加到 browserWindow 属性中。

示例 res/electron/settings.json

{
    "browserWindow": { ... }
}

如何设置窗口的默认大小

默认情况下,width 设置为 800height 设置为 600。可以通过设置 widthheight 属性来覆盖它。

示例

{
    "browserWindow": {
        "width": 1024,
        "height": 768
    }
}

如何禁用窗口可调整大小

设置 resizable 标志属性,可以禁用用户调整应用程序窗口大小的能力。

示例

{
    "browserWindow": {
        "resizable": false
    }
}

如何使窗口全屏

使用 fullscreen 标志属性,可以强制应用程序以全屏模式启动。

示例

{
    "browserWindow": {
        "fullscreen": true
    }
}

如何支持 Node.js 和 Electron API

nodeIntegration 标志属性设置为 true。默认情况下,此属性标志设置为 false,以支持插入与 Node.js 和 Electron 已使用的名称相同的符号的流行库。

您可以在 Electron 文档中阅读更多相关信息:我无法在 Electron 中使用 jQuery/RequireJS/Meteor/AngularJS

示例

{
    "browserWindow": {
        "webPreferences": {
            "nodeIntegration": false
        }
    }
}

自定义 Electron 的主进程

如果需要在 Electron 配置设置范围之外自定义 Electron 的主进程,则可以直接在 {PROJECT_ROOT_DIR}/platform/electron/platform_www/ 中的 cdv-electron-main.js 文件中添加更改。这是应用程序的主进程。

❗ 但是,不建议修改此文件,因为 cordova-electron 的升级过程是在添加新版本之前删除旧平台。

DevTools

--release--debug 标志控制 DevTools 的可见性。DevTools 在 调试构建没有标志 或使用 --debug)中默认显示。如果要隐藏 DevTools,请在构建或运行应用程序时传入 --release 标志。

注意:DevTools 可以使用调试构建手动关闭或打开。

构建配置

默认构建配置

默认情况下,在没有其他配置的情况下,cordova build electron 将为触发命令的主机操作系统 (OS) 构建默认包。以下是每个操作系统的默认包列表。

Linux

架构
tar.gz x64

Mac

架构
dmg x64
zip x64

Windows

架构
nsis x64

自定义构建配置

如果出于任何原因您想自定义构建配置,则修改将放置在项目根目录中的 build.json 文件中。例如 {PROJECT_ROOT_DIR}/build.json。此文件包含所有平台(Android、Electron、iOS、Windows)的所有构建配置。

示例配置结构

{
    "electron": {}
}

由于 Electron 框架用于创建跨平台应用程序,因此每个 OS 构建都需要多个配置。build.json 文件中的 electron 节点包含三个属性,用于分离每个 OS 的构建配置。

每个平台的示例配置结构

{
    "electron": {
        "linux": {},
        "mac": {},
        "windows": {}
    }
}

每个 OS 节点包含用于识别要生成的包以及如何签名的属性。

OS 属性

  • package 是将要生成的包格式的数组列表。
  • arch 是每个包构建的架构的数组列表。
  • signing 是一个包含签名信息的 object。有关更多信息,请参阅 签名配置

任何未定义的属性将回退到默认值。

添加 package

package 属性是将要输出的包的数组列表。如果定义了此属性,则不会使用默认包,除非添加。包的顺序无关紧要。

下面的配置示例将为 macOS 生成 tar.gzdmgzip 包。

{
    "electron": {
        "mac": {
            "package": [
                "dmg",
                "tar.gz",
                "zip"
            ]
        }
    }
}

按操作系统提供的包

包类型 Linux macOS Windows
default - dmg
zip
-
dmg - -
mas - -
mas-dev - -
pkg - -
7z
zip
tar.xz
tar.lz
tar.gz
tar.bz2
dir
nsis - -
nsis-web - -
portable - -
appx - - [1]
msi - -
AppImage - -
snap - -
deb - -
rpm - -
freebsd - -
pacman - -
p5p - -
apk - -
  • [1] 仅 Window 10 可以构建 AppX 包。

设置包 arch

arch 属性是每个包构建的架构的数组列表。当定义了此属性时,不会使用默认架构,除非添加。

❗ 并非所有架构都适用于所有操作系统。请查看 Electron 版本 以识别有效的组合。例如,macOS (Darwin) 仅支持 x64。

可用架构

  • ia32
  • x64
  • armv7l
  • arm64

上面的示例将生成一个 x64 dmg 包。

{
    "electron": {
        "mac": {
            "package": [ "dmg" ],
            "arch": [ "x64" ]
        }
    }
}

多平台构建支持

❗ 并非所有平台都支持此功能,并且可能存在限制。

在单个操作系统上构建多个平台可能是可能的,但存在限制。建议构建器的操作系统 (主机 OS) 与正在构建的平台匹配。

下面的矩阵显示了每个主机 OS 以及它们能够构建应用程序的平台。

主机 [1] Linux Mac Windows
Linux   [2]
Mac [3] [2]
Windows    

限制

下面的示例为所有 OS 启用多平台构建,并使用默认构建配置。

{
    "electron": {
        "linux": {},
        "mac": {},
        "windows": {}
    }
}

签名配置

macOS 签名

有三种类型的签名目标。(debugreleasestore)。每个部分都具有以下属性

key description
entitlements 指向权利文件的字符串路径值。
entitlementsInherit 指向继承安全设置的权利文件的字符串路径值。
identity 证书名称的字符串值。
requirements 指向需求文件的字符串路径值。

❗ 这不适用于 mas(store)签名配置。
provisioningProfile 指向配置文件的字符串路径值。

示例配置

{
    "electron": {
        "mac": {
            "package": [
                "dmg",
                "mas",
                "mas-dev"
            ],
            "signing": {
                "release": {
                    "identity": "APACHE CORDOVA (TEAMID)",
                    "provisioningProfile": "release.mobileprovision"
                }
            }
        }
    }
}

对于 macOS 签名,签名信息的使用方式有一些例外。默认情况下,除了 masmas-dev 之外,所有包都使用 debugrelease 签名配置。

使用上面的示例配置,让我们回顾一些用例,以更好地理解这些例外。

用例 1

cordova build electron --debug

上面的命令将

  • 使用 `debug` 签名配置生成 dmg 构建和 mas-dev 构建。
  • 忽略 mas 目标包。

用例 2

cordova build electron --release

上面的命令将

  • 使用 `release` 配置生成 dmg 构建。
  • 使用 `store` 配置生成 mas 构建。
  • 忽略 mas-dev 目标包。

Windows 签名

签名信息包含两种类型。(debugrelease)。每个部分具有以下属性

key description
certificateFile 证书文件路径的字符串。
certificatePassword 证书文件密码的字符串值。

备选方案:密码可以在环境变量 CSC_KEY_PASSWORD 上设置。
certificateSubjectName 签名证书主题的字符串值。

❗ EV 代码签名需要,需要 Windows
certificateSha1 签名证书 SHA1 哈希值的字符串值。

❗ 需要 Windows
signingHashAlgorithms 要使用的签名算法集合。(sha1sha256

❗ AppX 构建仅支持 sha256
additionalCertificateFile 附加证书文件的路径字符串。

示例配置

{
    "electron": {
        "windows": {
            "package": [ "nsis" ],
            "signing": {
                "release": {
                    "certificateFile": "path_to_files",
                    "certificatePassword": "password"
                }
            }
        }
    }
}

Linux 签名

Linux 构建没有签名要求。

插件

所有基于浏览器的插件都可以在 Electron 平台上使用。

添加插件时,如果插件同时支持 electronbrowser 平台,则将使用 electron 部分。如果插件缺少 electron 但包含 browser 实现,它将回退到 browser 实现。

在内部,Electron 使用 Chromium(Chrome)作为其 Web 视图。某些插件可能具有专门针对每个不同浏览器编写的条件。在这种情况下,它可能会影响预期行为。由于 Electron 可能支持浏览器不支持的功能,因此这些插件可能需要针对 electron 平台进行更新。