赞
踩
官网文档:构建说明 | Electron
个人购买链接是首页
ubuntu下的代理配置:https://portal.shadowsocks.nz/knowledgebase/185/Windows-or-macOS-or-LinuxClashy-设置方法.html
另外配置系统代理:
附件为git以及npm以及yarn的配置
.gitconfig为git的基本配置,不一定完全合理,但是我是这样配置的,最后拉取成功了
.npmrc为npm的基本配置;.yarnrc为yarn的基本配置。都配置为国内镜像
- .gitconfig
-
- [https]
- proxy = socks5://127.0.0.1:7891
- [http]
- proxy = socks5://127.0.0.1:7891
- sslVerify = false
- [user]
- name = xxxxxxxxx
- email = xxxxxxxxx
- [core]
- compression = 0
- [pack]
- deltaCacheSize = 2047m
- packSizeLimit = 2047m
- windowMemory = 2047m
-
-
- .npmrc
-
- registry "https://registry.npm.taobao.org"
-
- sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
- phantomjs_cdnurl "http://cnpmjs.org/downloads"
- electron_mirror "https://npm.taobao.org/mirrors/electron/"
- sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
- profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
- chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
-
-
- .yarnrc
-
- # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
- # yarn lockfile v1
-
-
- registry "https://registry.npm.taobao.org"
- chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"
- electron_mirror "https://npm.taobao.org/mirrors/electron/"
- lastUpdateCheck 1645151377004
- phantomjs_cdnurl "http://cnpmjs.org/downloads"
- profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
- sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
- sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"

报错1: ssl相关报错可以尝试设置
报错2: canot find。。。,如下图:
原因及解决办法:使用官网最新的depot_tools,困扰了我两天,我使用的是自己很早以前csdn下载的。
报错3: no such file or directory “npx”或“python”
原因及解决办法:本地nodejs仅npm和node设置了软连接,npx未配置,配置即可。python的话是因为我的ubuntu中为python2和python3,我将python3复制了一个命名为python。
报错4: cannot access https://githubzzzzzzzz。。t
原因及解决办法:git config —global sslVerify “false”
问题5: 卡在building fresh packages不动
解决办法:配置yarn与npm的国内镜像源。参考[转]解决yarn install一直卡在Building fresh packages - 简书
拉完代码之后切换分支:
在 src/electron 目录下执行: $git checkout v12.2.3
在 src 目录下执行:$gclient sync会将相关代码全部同步到该版本对应的版本
及时做好快照是很重要的。
总结:
官方代码理论上在arm64机器不管其pagesize是4k、16k、64k,均是可以编译成功的,因为源码是通过接口去获取这个参数,但我们在交叉编译时所用的机器和实际需要运行的机器pagesize参数不一定一致。比如本次我们要适配的就是arm+银河麒麟v10,该系统的内核参数pagesize为65536。查看pagesize的命令:getconf PAGESIZE。
修改点:
**文件1:**electron/src/v8/src/base/platform/platform-posix.cc
文件2:electron/src/v8/src/base/sys-info.cc
**文件3~n:**全局搜索(我好像总共搜索了三十来个文件,共34处,耐心一点,一不小心就放弃了)
vscode打开electron源码,搜索sysconf(_SC_PAGESIZE),找到之后将其全部替换为目标pagesize,我这里全部修改为了65535.
注意:修改的时候能注释就全注释掉,不要有声明但未使用的变量,否则也会导致编译中断。
- $ cd src
-
- // 相关编译工具
-
- $ export PATH=/home/dev/depot_tools:$PATH
-
- $ export CHROMIUM_BUILDTOOLS_PATH=`pwd`/buildtools
-
- // 编译参数
-
- $ gn gen out/Release --args=’import("//electron/build/args/release.gn") target_cpu="arm64"’
-
- //编译
-
- $ ninja -C out/Release electron
-
- // LINK这一步非常之久,耐心等待即可。
-
- // test
-
- $ ./electron 即可弹出electron窗体
-
- //打包
-
- $ ninja -C out/Release electron:electron_dist_zip

本人有配置好所有环境以及源码拉去完毕的electron交叉编译环境(ubuntu20.04),有需要的可以联系:291540704@qq.com
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。