W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
如果您的應(yīng)用使用Electron 6.0.8及之后的版本,您現(xiàn)在可以在基于ARM的Windows10上構(gòu)建它。 這大大提高了性能,但需要重新編譯應(yīng)用中使用的任何原生模塊。 它還可能需要對生成和打包腳本進行小的修改。
如果您的應(yīng)用不使用任何原生模塊,那么創(chuàng)建應(yīng)用的 Arm 版本非常簡單。
node_modules
目錄為空。set npm_config_arch=arm64
,然后像往常一樣運行 npm install
/yarn install
。許多特定于 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。
如果您使用原生模塊,則必須確保它們使用 v142 的 MSVC 編譯器(在 Visual Studio 2017 中提供)進行編譯。 您還必須檢查 native module 提供或引用的 .dll
或 .lib
文件是否可用于 Arm 上的 Windows。
若要測試您的應(yīng)用,請使用運行 Windows 10(1903 或更高版本)的 Arm 架構(gòu)的 Windows 設(shè)備。 確保您將應(yīng)用程序復制到了目標設(shè)備——從網(wǎng)絡(luò)位置加載應(yīng)用程序資源時,Chromium 的沙盒將無法正常工作。
建議使用 Node.js v12.9.0 或更高版本。 如果您不希望更新到新版本的 Node,則可以 手動更新 npm 的 node-gyp 副本 到 5.0.2 或更高版本,其中包含編譯 Arm 原生模塊所必需的更改。
交叉編譯本機模塊需要 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
在環(huán)境中設(shè)置 ?npm_config_arch=arm64
? 會創(chuàng)建正確的 arm64 .obj 文件,但 VS 2017 的標準開發(fā)人員命令提示將使用 x64 鏈接器。要解決此問題:
將 x64_x86 Cross Tools Command Prompt for VS 2017 快捷方式(例如,將其定位在開始菜單中,右鍵單擊,選擇“打開文件位置”,復制并粘貼)復制到方便的位置。
右鍵單擊新的快捷方式并選擇屬性。
將目標字段更改為最后讀取 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-gyp 解壓 Electron 的節(jié)點頭并將 x86 和 x64 版本的 node.lib 下載到 %APPDATA%\..\Local\node-gyp\Cache,但它不會下載 arm64 版本(對此的修復正在開發(fā)中)要解決此問題:
從 https://electronjs.org/headers/v6.0.9/win-arm64/node.lib 下載 arm64 node.lib
%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)試原生模塊可以使用 Visual Studio 2017(運行在開發(fā)計算機上)和運行在目標設(shè)備上的對應(yīng)的 Visual Studio 遠程調(diào)試器 來完成。 調(diào)試步驟:
.exe
應(yīng)用(傳遞 --inspect-brk
參數(shù)可以在加載任何 native modules 之前暫停應(yīng)用)。.pdb
symbols under Debugging > Symbols.如果您在本文檔中遇到問題,或者您的應(yīng)用在 x86 版本中工作正常,但在 arm64 版本中工作不正常,請 提交問題 并在標題中注明“Windows on Arm”。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: