Руководство по платформе Electron
Electron — это фреймворк, который использует веб-технологии (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, поставляется с необходимыми инструментами для разработки программного обеспечения для кодирования подписи и компиляции нативного кода для 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
Примечание: Если вы используете Cordova CLI до версии 9.x, вам необходимо использовать аргумент 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 в корневом каталоге проекта и установить его относительный путь в параметре предпочтений ElectronSettingsFilePath, в файле config.xml.
Пример config.xml:
<platform name="electron">
<preference name="ElectronSettingsFilePath" value="res/electron/settings.json" />
</platform>
Чтобы переопределить или установить любые параметры BrowserWindow, в этом файле параметры добавляются к свойству browserWindow.
Пример res/electron/settings.json:
{
"browserWindow": { ... }
}
Как установить размеры окна по умолчанию
По умолчанию width установлено в 800, а height установлено в 600. Это можно изменить, установив свойства width и height.
Пример:
{
"browserWindow": {
"width": 1024,
"height": 768
}
}
Как заблокировать возможность изменения размера окна
Установив флаг свойства resizable, вы можете заблокировать возможность пользователя изменять размер окна вашего приложения.
Пример:
{
"browserWindow": {
"resizable": false
}
}
Как сделать окно полноэкранным
Используя флаг свойства fullscreen, вы можете запустить приложение в полноэкранном режиме.
Пример:
{
"browserWindow": {
"fullscreen": true
}
}
Как настроить поддержку Node.js и Electron API
Установите флаг свойства nodeIntegration в true. По умолчанию этот флаг свойства установлен в false для поддержки популярных библиотек, которые вставляют символы с такими же именами, которые уже используются Node.js и Electron.
Подробнее об этом можно прочитать в документации Electron: Не могу использовать jQuery/RequireJS/Meteor/AngularJS в Electron.
Пример:
{
"browserWindow": {
"webPreferences": {
"nodeIntegration": false
}
}
}
Настройка основного процесса Electron
Если необходимо настроить основной процесс Electron вне рамок настроек Electron, можно добавить изменения непосредственно в файл cdv-electron-main.js, расположенный в {PROJECT_ROOT_DIR}/platform/electron/platform_www/. Это основной процесс приложения.
❗ Однако не рекомендуется изменять этот файл, поскольку процесс обновления
cordova-electronзаключается в удалении старой платформы перед добавлением новой версии.
DevTools
Флаги --release и --debug управляют отображением DevTools. DevTools отображаются по умолчанию в сборках отладки (without a flag или с --debug). Если вы хотите скрыть DevTools, передайте флаг --release при сборке или запуске приложения.
Примечание: DevTools можно закрыть или открыть вручную в сборке отладки.
Конфигурации сборки
Конфигурации сборки по умолчанию
По умолчанию, без дополнительных настроек, cordova build electron будет собирать пакеты по умолчанию для операционной системы (ОС), которая запускает команду. Ниже приведен список пакетов по умолчанию для каждой ОС.
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 предназначен для создания кроссплатформенных приложений, требуется несколько конфигураций для каждой сборки ОС. Узел electron в файле build.json содержит три свойства, которые разделяют конфигурации сборки для каждой ОС.
Пример структуры конфигурации с каждой платформой
{
"electron": {
"linux": {},
"mac": {},
"windows": {}
}
}
Каждый узел ОС содержит свойства, используемые для определения генерируемого пакета и способа его подписи.
Свойства ОС:
-
package— массив форматов пакетов, которые будут сгенерированы. -
arch— массив архитектур, для которых будет создан каждый пакет. -
signing— объект, содержащий информацию о подписи. См. Конфигурации подписи для получения дополнительной информации.
Любые свойства, которые не определены, будут использовать значения по умолчанию.
Добавление package
Свойство package — это список массивов пакетов, которые должны быть выведены. Если свойство определено, пакеты по умолчанию не используются, если их не добавить. Порядок пакетов не важен.
Пример конфигурации ниже сгенерирует пакеты tar.gz, dmg и zip для macOS.
{
"electron": {
"mac": {
"package": [
"dmg",
"tar.gz",
"zip"
]
}
}
}
Доступные пакеты по операционной системе
| Тип пакета | Linux | macOS | Windows |
|---|---|---|---|
| default | - |
dmgzip
| - |
| 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] Только Windows 10 может создавать пакеты AppX.
Установка архитектуры пакета arch
Свойство arch — это список архитектур, для которых создан каждый пакет. Когда свойство определено, по умолчанию используется только default, если оно не добавлено.
❗ Не все архитектуры доступны для каждой операционной системы. Пожалуйста, ознакомьтесь с Выпусками Electron, чтобы определить допустимые комбинации. Например, macOS (Darwin) поддерживает только x64.
Доступные архитектуры
- ia32
- x64
- armv71
- arm64
Приведенный выше пример сгенерирует пакет x64 dmg.
{
"electron": {
"mac": {
"package": [ "dmg" ],
"arch": [ "x64" ]
}
}
}
Поддержка многоплатформенной сборки
❗ Не все платформы поддерживают эту функцию и могут иметь ограничения.
Сборка для нескольких платформ на одной операционной системе возможна, но имеет ограничения. Рекомендуется, чтобы операционная система сборщика (хост ОС) соответствовала платформе, для которой собирается приложение.
Ниже представлена матрица, показывающая каждую хост ОС и для каких платформ она способна собирать приложения.
| Хост [1] | Linux | Mac | Windows |
|---|---|---|---|
| Linux | ✅ | ❗ [2] | |
| Mac [3] | ✅ | ✅ | ❗ [2] |
| Windows | ✅ |
Ограничения:
- [1] Если приложение содержит нативные зависимости, оно может быть скомпилировано только на целевой платформе.
- [2] Linux и macOS не могут собирать пакеты Windows Appx для Windows Store.
- [3] Все необходимые системные зависимости, кроме rpm, будут загружены автоматически по требованию. RPM можно установить с помощью brew. (macOS Sierra 10.12+)
Пример ниже включает многоплатформенную сборку для всех ОС и использует настройки сборки по умолчанию.
{
"electron": {
"linux": {},
"mac": {},
"windows": {}
}
}
Настройки подписи
Подпись macOS
Существует три типа целевых подписей. (debug, release, и store). Каждый раздел имеет следующие свойства:
| ключ | описание |
|---|---|
| entitlements | Строковое значение пути к файлу разрешений. |
| entitlementsInherit | Строковое значение пути к файлу разрешений, который наследует настройки безопасности. |
| identity | Строковое значение имени сертификата. |
| requirements | Строковое значение пути к файлу требований. ❗ Это недоступно для настроек подписи mas (магазин). |
| provisioningProfile | Строковое значение пути к профилю предоставления. |
Пример конфигурации:
{
"electron": {
"mac": {
"package": [
"dmg",
"mas",
"mas-dev"
],
"signing": {
"release": {
"identity": "APACHE CORDOVA (TEAMID)",
"provisioningProfile": "release.mobileprovision"
}
}
}
}
}
Для подписи macOS есть несколько исключений из того, как используется информация о подписи. По умолчанию все пакеты, за исключением mas и mas-dev, используют настройки подписи debug и release.
Используя пример конфигурации выше, давайте рассмотрим несколько случаев использования, чтобы лучше понять исключения.
Случай 1:
cordova build electron --debug
Команда выше:
- Сгенерирует сборку
dmgи сборкуmas-devс использованием настроек подписиdebug. - Проигнорирует пакет цели
mas.
Случай 2:
cordova build electron --release
Команда выше:
- Сгенерирует сборку
dmgс использованием конфигурацииrelease. - Сгенерирует сборку
masс использованием конфигурацииstore. - Проигнорирует пакет цели
mas-dev.
Подпись Windows
Информация о подписи состоит из двух типов. (debug, release). Каждый раздел имеет следующие свойства:
| ключ | описание |
|---|---|
| certificateFile | Строковое значение пути к файлу сертификата. |
| certificatePassword | Строковое значение пароля файла сертификата. Альтернатива: пароль можно задать в переменной среды CSC_KEY_PASSWORD. |
| certificateSubjectName | Строковое значение подписи сертификата. ❗ Требуется для EV Code Signing и требует Windows |
| certificateSha1 | Строковое значение SHA1-хеша сертификата подписи. ❗ Требуется для Windows |
| signingHashAlgorithms | Коллекция алгоритмов подписи, которые будут использоваться. (sha1, sha256)❗ Сборки AppX поддерживают только sha256
|
| additionalCertificateFile | Строковое значение пути к дополнительным файлам сертификатов. |
Пример конфигурации:
{
"electron": {
"windows": {
"package": [ "nsis" ],
"signing": {
"release": {
"certificateFile": "path_to_files",
"certificatePassword": "password"
}
}
}
}
}
Подпись Linux
Для сборок Linux требования к подписи отсутствуют.
Плагины
Все плагины на основе браузера могут использоваться с платформой Electron.
При добавлении плагина, если плагин поддерживает как платформу electron, так и платформу browser, то используется часть electron. Если плагин не содержит electron, но содержит реализацию browser, то используется реализация browser.
Внутри Electron используется Chromium (Chrome) в качестве веб-вью. Некоторые плагины могут иметь условия, написанные специально для каждого браузера. В этом случае это может повлиять на поведение, которое предполагалось. Поскольку Electron может поддерживать функции, которых нет в браузере, эти плагины, возможно, потребуется обновить для платформы electron.
© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/9.x/guide/platforms/electron/index.html