2
头图

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安装方式


码上世界
74 声望280 粉丝

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