99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Electron Windows on ARM

2023-02-16 17:16 更新

如果您的應(yīng)用使用Electron 6.0.8及之后的版本,您現(xiàn)在可以在基于ARM的Windows10上構(gòu)建它。 這大大提高了性能,但需要重新編譯應(yīng)用中使用的任何原生模塊。 它還可能需要對生成和打包腳本進行小的修改。

運行基本應(yīng)用?

如果您的應(yīng)用不使用任何原生模塊,那么創(chuàng)建應(yīng)用的 Arm 版本非常簡單。

  1. 確保應(yīng)用的 node_modules 目錄為空。
  2. 使用 命令提示符,運行 set npm_config_arch=arm64,然后像往常一樣運行 npm install/yarn install
  3. 如果您已將 Electron 安裝為開發(fā)依賴項,npm 將下載并解壓縮 arm64 版本。 然后,您可以像往常一樣打包和分發(fā)你的應(yīng)用。

一般考慮因素?

特定于體系結(jié)構(gòu)的代碼?

許多特定于 Windows 的代碼包含在 x64 或 x86 體系結(jié)構(gòu)之間進行選擇的 if... else 邏輯。

if (process.arch === 'x64') {
  // 在64位體系結(jié)構(gòu)上執(zhí)行的代碼...
} else {
  // 在32位體系結(jié)構(gòu)上執(zhí)行的代碼...
}

如果您希望以 arm64 為目標,像這樣的邏輯通常會選擇錯誤的體系結(jié)構(gòu),所以仔細檢查您的應(yīng)用程序并為這樣的情況編寫腳本。 在自定義生成和打包腳本中,應(yīng)始終檢查環(huán)境中 npm_config_arch 的值,而不是依賴于當前的 process.arch。

Native modules(原生模塊)

如果您使用原生模塊,則必須確保它們使用 v142 的 MSVC 編譯器(在 Visual Studio 2017 中提供)進行編譯。 您還必須檢查 native module 提供或引用的 .dll 或 .lib 文件是否可用于 Arm 上的 Windows。

測試應(yīng)用程序?

若要測試您的應(yīng)用,請使用運行 Windows 10(1903 或更高版本)的 Arm 架構(gòu)的 Windows 設(shè)備。 確保您將應(yīng)用程序復制到了目標設(shè)備——從網(wǎng)絡(luò)位置加載應(yīng)用程序資源時,Chromium 的沙盒將無法正常工作。

開發(fā)先決條件?

Node.js/node-gyp?

建議使用 Node.js v12.9.0 或更高版本。 如果您不希望更新到新版本的 Node,則可以 手動更新 npm 的 node-gyp 副本 到 5.0.2 或更高版本,其中包含編譯 Arm 原生模塊所必需的更改。

Visual Studio 2017?

交叉編譯本機模塊需要 Visual Studio 2017(任何版本)。您可以通過 Microsoft 的 Visual Studio Dev Essentials 程序下載 Visual Studio Community 2017。安裝后,您可以通過從命令提示符運行以下命令來添加特定于 Arm 的組件:

vs_installer.exe ^
--add Microsoft.VisualStudio.Workload.NativeDesktop ^
--add Microsoft.VisualStudio.Component.VC.ATLMFC ^
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 ^
--add Microsoft.VisualStudio.Component.VC.MFC.ARM64 ^
--includeRecommended

創(chuàng)建交叉編譯命令提示符

在環(huán)境中設(shè)置 ?npm_config_arch=arm64? 會創(chuàng)建正確的 arm64 .obj 文件,但 VS 2017 的標準開發(fā)人員命令提示將使用 x64 鏈接器。要解決此問題:

  1. 將 x64_x86 Cross Tools Command Prompt for VS 2017 快捷方式(例如,將其定位在開始菜單中,右鍵單擊,選擇“打開文件位置”,復制并粘貼)復制到方便的位置。

  2. 右鍵單擊新的快捷方式并選擇屬性。

  3. 將目標字段更改為最后讀取 vcvarsamd64_arm64.bat 而不是 vcvarsamd64_x86.bat。

如果成功完成,命令提示符應(yīng)在啟動時打印類似于此的內(nèi)容:

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.9.15
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************
[vcvarsall.bat] Environment initialized for: 'x64_arm64'

如果您想直接在 Windows on Arm 設(shè)備上開發(fā)您的應(yīng)用程序,請在 Target 中替換 vcvarsx86_arm64.bat,以便可以使用設(shè)備的 x86 仿真進行交叉編譯。

與正確的 node.lib 連接

默認情況下,node-gyp 解壓 Electron 的節(jié)點頭并將 x86 和 x64 版本的 node.lib 下載到 %APPDATA%\..\Local\node-gyp\Cache,但它不會下載 arm64 版本(對此的修復正在開發(fā)中)要解決此問題:

  1. 從 https://electronjs.org/headers/v6.0.9/win-arm64/node.lib 下載 arm64 node.lib

  2. 將它移動到 %APPDATA%\..\Local\node-gyp\Cache\6.0.9\arm64\node.lib

將 6.0.9 替換為您正在使用的版本。

交叉編譯本地模塊

完成上述所有操作后,打開交叉編譯命令提示符并運行 set npm_config_arch=arm64。然后使用 npm install 正常構(gòu)建項目。與交叉編譯 x86 模塊一樣,您可能需要刪除 node_modules 以強制重新編譯本機模塊(如果它們之前是為另一種體系結(jié)構(gòu)編譯的)。

調(diào)試本地模塊?

調(diào)試原生模塊可以使用 Visual Studio 2017(運行在開發(fā)計算機上)和運行在目標設(shè)備上的對應(yīng)的 Visual Studio 遠程調(diào)試器 來完成。 調(diào)試步驟:

  1. 在目標設(shè)備上通過命令提示符啟動 .exe 應(yīng)用(傳遞 --inspect-brk 參數(shù)可以在加載任何 native modules 之前暫停應(yīng)用)。
  2. 在開發(fā)計算機上啟動 Visual Studio 2017。
  3. 通過選擇 調(diào)試 > 訪問并輸入設(shè)備的 IP 地址和 Visual Studio 遠程調(diào)試器工具顯示的端口號,連接到目標設(shè)備。
  4. 單擊 刷新,然后選擇 相應(yīng)的 Electron 進程以附加
  5. 您可能需要確保應(yīng)用中原生模塊的所有符號都已經(jīng)正確加載。 要配置此內(nèi)容,請進入 Visual Studio 2017Debug > Options...,and add the folders containing your .pdb symbols under Debugging > Symbols.
  6. 附加后,設(shè)置適當?shù)臄帱c并使用 Chrome 的 用于Node的遠程工具 恢復JavaScript的執(zhí)行。

獲取其他幫助?

如果您在本文檔中遇到問題,或者您的應(yīng)用在 x86 版本中工作正常,但在 arm64 版本中工作不正常,請 提交問題 并在標題中注明“Windows on Arm”。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號