Electron 编译
转自:http://www.crabx.site/u/zerocode1337/2016-1-12/5694bc70aa2843950acd553a
参考:https://chromium.googlesource.com/chromium/src/+/master/docs/windows_build_instructions.md
前言:
electron是atom的兄弟开源项目,与NW.js类似,可以让用户使用web技术,创建跨平台的桌面应用,electron使用chromium内核、V8引擎和node.js构建,由于产品需求,官方的版本无法满足功能上的需求,所以我们需要修改chromium内核达到我们的功能需求(在body中插入一行js代码)。本文只针对编译过程中遇到的问题做些说明,对内核修改不做赘述,旨在记录大项目编译过程心得,以为今后版本升级、维护、扩展性开发提供参考。
请确保所有工作是在稳定VPN环境下,否则中间会出现各种问题
解决部分环境依赖问题
linux(ubuntu)
python2.7xnode.jsv0.12.xClang3.4 or later 这个编译器会在执行脚本的时候自行下载更新- Development headers of
GTK+and libnotify.
在ubuntu上需要安装下列库 执行下述命令
sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
libnotify-dev libgnome-keyring-dev libgconf2-dev \
libasound2-dev libcap-dev libcups2-dev libxtst-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib
一般linux 自带python,所以只需要安装node.js即可(最好安装v 5.x版本)
windows
windows7/Server 2008 R2or highterVisual Studio 2013Community versioin is okPython 2.7Node.jsGit
系统必须问英文语言,这在chromoum编译中尤为重要,必须安装vs2013(除了2013别的目前请不要尝试),python node.jsGit 直接去官网下,傻瓜式安装,不过python 需要配置环境变量。
mac
ox x>= 10.8Xcode>= 5.1node.jsv5.Xpyobjc
pyobjc 的安装可以尝试如下命令
$ sudo easy_install -U pyobjc-core
$ sudo easy_install -U pyobjc
如果出现错误,需要前往下面网址下载,没错误请忽略
分别解压后执行如下命令
python setup.py install
electron源码下载
linux mac win都执行如下命令即可,特别提示:windows最好使用git GUI 命令行工具
$ git clone https://github.com/atom/electron.git
启动python脚本
在electron目录下有script文件夹,bootstrap.py脚本会自动下载所需依赖,前提是有python2.7.
执行如下命令
$ cd electron
$ ./script/bootstrap.py -v //(linux 和 mac 下执行这个命令)
$ python ./script/bootstrap.py -v //(windwos下执行这个命令)
这个过程会很久,linux下首先会更新当前环境中的clang(这步有错误就多换几个代理),mac和win类似,然后会更新一些依赖并下载chromium库。我们发现下载的chromium库是atom下的另一个子项目,所以这步是分水岭。
替换libchromium
上步说到,chromium库是atom下的另一个子项目,我们可以通过链接访问github项目主页,这个其实就是electron所需要的对应版本的chromium内核。写文档时编译的版本为 47.0.2526.73
下载
执行 git clone https://github.com/atom/libchromiumcontent.git 将项目下载到本地目录,打开目录
执行如下命令:
$ script/bootstrap //(linux or mac)
$ python script/bootstrap //(windows)
更新
然后下载源码,更新组件和依赖,大约40分钟
$ script/update -t x64 //(linux or mac)
$ python script/update -t x64 // (windows)
编译
最后编译,大约2-3个小时
$ script/build -t x64 //(linux or mac)
$ python script/build -t x64 // (windows)
定制
以上工作只是编译官方给出的chromium版本内核,我们还需要修改源码,再编译(不要担心,再编译速度会很快)
研究后我们发现有个vender/chromium/src目录,这是放源码的地方。打开vendor/chromium/src/third_party/WebKit/Source/core/html/parser,将事先准备的代码手动修改(不能直接替换,最好根据git diff 来手动修改)。
修改完毕后,再次执行编译命令
$ script/build -t x64 //(linux or mac)
$ python script/build -t x64 //(windows)
替换相应文件到electron
接下来就可以替换我们编译好的文件到electron目录了 在linux平台上找到以下7个文件
./out/Release/libwebcore_rendering.a
./out/Release/libwebcore_generated.a
./out/Release/libwebcore_html.a
./out/Release/libwebcore_remaining.a
./out/Release/libwebcore_dom.a
./out/Release/libwebcore_svg.a
./out_component/Release/lib/libwebcore_shared.so
如果是windows平台找到
./out/Release/webcore_rendering.lib
./out/Release/webcore_generated.lib
./out/Release/webcore_html.lib
./out/Release/webcore_remaining.lib
./out/Release/webcore_dom.lib
./out/Release/webcore_svg.lib
./out_component/Release/webcore_shared.dll
./out_component/Release/webcore_shared.dll.lib
如果是mac平台找到
./out/Release/libwebcore_rendering.a
./out/Release/libwebcore_generated.a
./out/Release/libwebcore_html.a
./out/Release/libwebcore_remaining.a
./out/Release/libwebcore_dom.a
./out/Release/libwebcore_svg.a
./out_component/Release/lib/libwebcore_shared.dylib
以linux为例说明如何替换 将以上所有.a文件替换到electron的 /vendor/brightray/vendor/download/libchromiumcontent/static_library目录里 将.so 文件替换到electron的 /vendor/brightray/vendor/download/libchromiumcontent/shared_library目录里
编译electron
-
如果想同时建立发行版本和debug版本,执行下列命令
$ ./script/build.py -
这个脚本会在out/R目录中产生非常大的文件(大约1.3G),为了节约空间可以执行下列命令
$ ./script/create-dist.py
至此我们成功编译了electron,并且可以在electron目录下找到dist文件夹,里面有两个压缩包,与官方提供的基本一致。
Do one thing , and do it well !
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)