W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
如果您的應(yīng)用使用Electron 6.0.8及之后的版本,您現(xiàn)在可以在基于ARM的Windows10上構(gòu)建它。 這大大提高了性能,但需要重新編譯應(yīng)用中使用的任何原生模塊。 它還可能需要對(duì)生成和打包腳本進(jìn)行小的修改。
如果您的應(yīng)用不使用任何原生模塊,那么創(chuàng)建應(yīng)用的 Arm 版本非常簡(jiǎn)單。
node_modules
目錄為空。set npm_config_arch=arm64
,然后像往常一樣運(yùn)行 npm install
/yarn install
。許多特定于 Windows 的代碼包含在 x64 或 x86 體系結(jié)構(gòu)之間進(jìn)行選擇的 if... else 邏輯。
if (process.arch === 'x64') {
// 在64位體系結(jié)構(gòu)上執(zhí)行的代碼...
} else {
// 在32位體系結(jié)構(gòu)上執(zhí)行的代碼...
}
如果您希望以 arm64 為目標(biāo),像這樣的邏輯通常會(huì)選擇錯(cuò)誤的體系結(jié)構(gòu),所以仔細(xì)檢查您的應(yīng)用程序并為這樣的情況編寫(xiě)腳本。 在自定義生成和打包腳本中,應(yīng)始終檢查環(huán)境中 npm_config_arch
的值,而不是依賴于當(dāng)前的 process.arch。
如果您使用原生模塊,則必須確保它們使用 v142 的 MSVC 編譯器(在 Visual Studio 2017 中提供)進(jìn)行編譯。 您還必須檢查 native module 提供或引用的 .dll
或 .lib
文件是否可用于 Arm 上的 Windows。
若要測(cè)試您的應(yīng)用,請(qǐng)使用運(yùn)行 Windows 10(1903 或更高版本)的 Arm 架構(gòu)的 Windows 設(shè)備。 確保您將應(yīng)用程序復(fù)制到了目標(biāo)設(shè)備——從網(wǎng)絡(luò)位置加載應(yīng)用程序資源時(shí),Chromium 的沙盒將無(wú)法正常工作。
建議使用 Node.js v12.9.0 或更高版本。 如果您不希望更新到新版本的 Node,則可以 手動(dòng)更新 npm 的 node-gyp 副本 到 5.0.2 或更高版本,其中包含編譯 Arm 原生模塊所必需的更改。
交叉編譯本機(jī)模塊需要 Visual Studio 2017(任何版本)。您可以通過(guò) Microsoft 的 Visual Studio Dev Essentials 程序下載 Visual Studio Community 2017。安裝后,您可以通過(guò)從命令提示符運(yùn)行以下命令來(lái)添加特定于 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
? 會(huì)創(chuàng)建正確的 arm64 .obj 文件,但 VS 2017 的標(biāo)準(zhǔn)開(kāi)發(fā)人員命令提示將使用 x64 鏈接器。要解決此問(wèn)題:
將 x64_x86 Cross Tools Command Prompt for VS 2017 快捷方式(例如,將其定位在開(kāi)始菜單中,右鍵單擊,選擇“打開(kāi)文件位置”,復(fù)制并粘貼)復(fù)制到方便的位置。
右鍵單擊新的快捷方式并選擇屬性。
將目標(biāo)字段更改為最后讀取 vcvarsamd64_arm64.bat 而不是 vcvarsamd64_x86.bat。
如果成功完成,命令提示符應(yīng)在啟動(dòng)時(shí)打印類似于此的內(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è)備上開(kāi)發(fā)您的應(yīng)用程序,請(qǐng)?jiān)?nbsp;Target 中替換 vcvarsx86_arm64.bat,以便可以使用設(shè)備的 x86 仿真進(jìn)行交叉編譯。
默認(rèn)情況下,node-gyp 解壓 Electron 的節(jié)點(diǎn)頭并將 x86 和 x64 版本的 node.lib 下載到 %APPDATA%\..\Local\node-gyp\Cache,但它不會(huì)下載 arm64 版本(對(duì)此的修復(fù)正在開(kāi)發(fā)中)要解決此問(wèn)題:
從 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 替換為您正在使用的版本。
完成上述所有操作后,打開(kāi)交叉編譯命令提示符并運(yùn)行 set npm_config_arch=arm64。然后使用 npm install 正常構(gòu)建項(xiàng)目。與交叉編譯 x86 模塊一樣,您可能需要?jiǎng)h除 node_modules 以強(qiáng)制重新編譯本機(jī)模塊(如果它們之前是為另一種體系結(jié)構(gòu)編譯的)。
調(diào)試原生模塊可以使用 Visual Studio 2017(運(yùn)行在開(kāi)發(fā)計(jì)算機(jī)上)和運(yùn)行在目標(biāo)設(shè)備上的對(duì)應(yīng)的 Visual Studio 遠(yuǎn)程調(diào)試器 來(lái)完成。 調(diào)試步驟:
.exe
應(yīng)用(傳遞 --inspect-brk
參數(shù)可以在加載任何 native modules 之前暫停應(yīng)用)。.pdb
symbols under Debugging > Symbols.如果您在本文檔中遇到問(wèn)題,或者您的應(yīng)用在 x86 版本中工作正常,但在 arm64 版本中工作不正常,請(qǐng) 提交問(wèn)題 并在標(biāo)題中注明“Windows on Arm”。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: