Electron 编译
来源:互联网 发布:天播网络机顶盒刷系统 编辑:程序博客网 时间:2024/06/05 01:52
转自: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)
python
2.7xnode.js
v0.12.xClang
3.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 R2
or highterVisual Studio 2013
Community versioin is okPython 2.7
Node.js
Git
系统必须问英文语言,这在chromoum编译中尤为重要,必须安装vs2013(除了2013别的目前请不要尝试),python
node.js
Git
直接去官网下,傻瓜式安装,不过python 需要配置环境变量。
mac
ox x
>= 10.8Xcode
>= 5.1node.js
v5.Xpyobjc
pyobjc 的安装可以尝试如下命令
$ sudo easy_install -U pyobjc-core$ sudo easy_install -U pyobjc
如果出现错误,需要前往下面网址下载,没错误请忽略
pyobjc-core
pyobjc-framework-Cocoa
pyobjc-framework-Quartz
分别解压后执行如下命令
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 !
- Electron 编译
- Electron 编译
- Electron
- electron
- mac平台electron native(ffmpeg)模块编译
- electron 的c++ addon编译方法
- 【Electron】Electron开发入门
- generator-electron
- 杂谈:Electron
- Electron安装
- Electron-文档
- Electron-引导
- electron demo
- Electron初探
- Electron基本概念
- Electron安装
- 安装electron
- Electron 原理
- MyBatis操作数据库步骤
- linux用户进程内存管理基本架构
- FFmpeg
- Ubuntu如何查找libz.so.1属于哪个包并安装
- 面试题63:二叉搜索树的第k个结点
- Electron 编译
- 170427 百度地图JSAPI
- CSDN日报20170426 ——《四无年轻人如何逆袭》
- V4L2框架分析学习
- java游戏服务器之网络层Netty 之EventLoop
- 轮播图切换
- [LeetCode]13. Roman to Integer(罗马数字转化为整数)
- UESToj 1057 秋实大哥与花 ( 线段树
- tensorflow中一些重要函数