一、拉取源码部分
官网文档:构建说明 | Electron
VPN代理购买及配置
个人购买链接是首页
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会将相关代码全部同步到该版本对应的版本
及时做好快照是很重要的。
总结:
- vpn还是要给力,不然总是失败,晚上貌似能好一点。
- 电脑性能一定要好,无论是cpu还是内存,不然卡到爆
二.交叉编译之源码修改
官方代码理论上在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