头图

麒麟操作系统 (kylinos) 从入门到精通 - 研发环境 - 第四十九篇 Electron软件打包

0.基础环境

类别:笔记本
型号:中国长城 NF14C
硬件平台:飞腾处理器(ArmV8 指令集)
系统:银河麒麟操作系统 V10 SP1(2203)

关键词:
信创,麒麟系统,linux,c++,c,飞腾,arm,electron,npm,nvm,nodejs

1.背景

目前,为了支持国产软件、硬件平台,在选择跨平台技术时,主要可能的选择是QT、基于web技术的electron等。特别是electron使得前端人员也可以很好的进行跨一台的软件开发,无论是打包成deb,还是exe都通过electron-builder做了很好的支持。但在实际的实践活动中,在飞腾ARM平台打包时,会出现错误。本文以electron-egg 3.0为打包案例,为大家提供一个可以参考的electron在麒麟系统和飞腾处理器下展现一个较为完整的教程。

2.nodejs多版本管理

考虑到nodejs升级较快,不同开发人员可能依赖的node版本不一致。我们将使用nvm-cli来进行版本管理,可以根据工程需要切换版本。
项目主页:https://github.com/nvm-sh/nvm
图片.png

2.1 官方用法举例

$ nvm use 16
Now using node v16.9.1 (npm v7.21.1)
$ node -v
v16.9.1
$ nvm use 14
Now using node v14.18.0 (npm v6.14.15)
$ node -v
v14.18.0
$ nvm install 12
Now using node v12.22.6 (npm v6.14.5)
$ node -v
v12.22.6

2.2 安装

1.执行安装脚本安装nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

或者()

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

2.安装并切换node

nvm install 18 #要安装的版本,可以指定18.5.0,只写18会拉18系列的最新版本
nvm use 18 #将node切换至需要的版本

2.3 检测

node -v

图片.png

2.4 安装一些全局组件

sudo apt-get install build-essential libefl-all-dev  libxss-dev -y
npm install --location=global yarn #安装yarn,也可以直接在后续只用npm install,但yarn的机制更先进,后续就以yarn为主了。
npm install --location=global node-gyp #electron 需要这个组件

图片.png

3. 运行electron-egg

假设你装了git,没有就自己准备一下。#sudo apt-get install git

3.1 electron-egg简介

一个入门简单、跨平台、企业级桌面软件开发框架。基于electron二次封装做了一些工作。
图片.png

3.2 拉项目代码

git clone -b v3.0.1 https://gitee.com/dromara/electron-egg.git #v3.0.1为拉取指定版本,项目仓库中有此tag

图片.png

3.3 运行项目

根据官方说明,前后端分别安装好依赖再运行

3.3.1 前端

1.安装依赖库
进入前端目录,执行

yarn install --registry=https://registry.npm.taobao.org #使用淘宝镜像加速

图片.png
2.运行前端

yarn serve #这个具体是什么指令是pakcage.json中配好了,也可以在vscode中操作,这里不再说明。

图片.png
运行成功后
图片.png

3.4.1 后端

1.安装依赖库
进入后端目录,执行

yarn install --registry=https://registry.npm.taobao.org #使用淘宝镜像加速

图片.png
运行后端

yarn dev #这个具体是什么指令是pakcage.json中配好了,也可以在vscode中操作,这里不再说明。

图片.png
运行成功后,效果如下
图片.png

3.4 打包项目

electron使用electron-builder组件进行打包,且工程中已经配置好了。我们直接打包即可。

yarn build-l-arm64 #选择arm64下的linux打包,输出为deb

图片.png
这其中会遇到一些错误,本文提供解决办法如下。遇到了,就解决,解决后再重试打包。也可以先按下面解决好了再执行打包。
错误1:gyp ERR
主要原因可能是跨平台版本的软件包,没有对arm做好支持,所以使用下面的方式构建一下。
图片.png
解决办法:

 yarn  install --build-from-resource

错误2:fpm格式不正确
原因是electron拉的fpm为x86下面的,而且github项目上没有arm版本。
图片.png
解决办法(参考了官方的说明pdf与https://www.beekeeperstudio.io/blog/electron-apps-for-arm-and...):

sudo apt update
sudo apt install ruby ruby-dev -y
sudo gem install fpm
cd ~/.cache/electron-builder/fpm/fpm-1.9.3-2.3.1-linux-X86_64/ #版本有可能不同,根据实际情况更改
rm -rf fpm
ln -s /usr/local/bin/fpm fpm

图片.png

4.成品展现

图片.png
图片.png

5.写在最后

在windows,哪怕是x86的linux下,一些问题也不会碰到。希望给大家在arm平台打包eletron应用有一点参考。

麒麟系统专栏:
地址一:https://segmentfault.com/blog/kylinos
邮箱:1179611323@qq.com
群:662512340
github:https://github.com/xiaohelong
twitter:https://twitter.com/xiaohelong
发行日志:
20230331 13:30 首发
20230401 10:27 增加gyp安装方式


麒麟操作系统
频繁更新,为大家提供麒麟系统在飞腾处理器上使用教程(相类似的版本可参考)。从场景出发,每一篇为一个...

码农极客,2004年接触Linux世界。爱技术的IT的男

56 声望
138 粉丝
0 条评论
推荐阅读
麒麟操作系统 (kylinos) 从入门到精通 - 办公环境 - 第五十五篇 ISO光盘文件装载
类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)系统:银河麒麟操作系统 V10 SP1(2303) 关键词:信创,麒麟系统,linux,c++,c,飞腾,arm,iso,mount,虚拟光驱,ultraiso

码上世界阅读 510

封面图
最好用的 python 库合集
🎈 分词 - jieba优秀的中文分词库,依靠中文词库,利用词库确定汉子之间关联的概率,形成分词结果 {代码...} 🎈 词云库 - wordcloud对数据中出现频率较高的 关键词 生成的一幅图像,予以视觉上的突出 {代码...} 🎈 ...

tiny极客11阅读 3.5k评论 2

封面图
花了几个月时间把 MySQL 重新巩固了一遍,梳理了一篇几万字 “超硬核” 的保姆式学习教程!(持续更新中~)
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。

民工哥14阅读 1.9k

封面图
疫情已过,2023 我的前端面试记录
顺利入职。把我最近找工作的心得记录下来。工作交接确定 lastday整理手头工作,相关对接人、交接人放文档中工作交接过渡阶段。做好被咨询者,该拉人拉人,该拉群拉群平时沟通顺畅的同事如果没有 WX 可以加一个属...

linong11阅读 1.1k

终于卷完了!Redis 打怪升级进阶成神之路(2023 最新版)!
是一种非关系型数据库服务,它能解决常规数据库的并发能力,比如传统的数据库的IO与性能的瓶颈,同样它是关系型数据库的一个补充,有着比较好的高效率与高性能。专注于key-value查询的redis、memcached、ttserver。

民工哥10阅读 810

封面图
思否 CTO 祁宁:社区问答是激荡高级智慧的头脑风暴
在祁宁家里,有一套完整的赛车模拟器,他甚至还请人到国外代购了最新的 VR 设备。作为沉浸式赛车游戏发烧友,除了享受速度与激情带来的愉悦感,祁宁在玩的过程中更多的是思考如何将技术能力进行产品化的问题。

万事ONES6阅读 12.9k评论 1

封面图
硬卷完了!MongoDB 打怪升级进阶成神之路( 2023 最新版 )!
前面我们学习:MySQL 打怪升级进阶成神之路、Redis 打怪升级进阶成神之路,然后我们还在继续 NoSQL 的卷王之路。从第一篇文章开始,我们逐步详细介绍了 MogoDB 基础概念、安装和最基本的CURD操作、索引和聚合、工...

民工哥6阅读 450

封面图

码农极客,2004年接触Linux世界。爱技术的IT的男

56 声望
138 粉丝
宣传栏