【技术专栏】openKylin龙芯新世界架构打包Electron应用实战
当Electron应用开发者或社区爱好者有意向将感兴趣的Electron应用程序迁移至openKylin系统的loong64新世界架构环境时,通常会面临缺乏依赖、loong64新世界架构支持不全等问题。现以Listen1(一款开源且免费的全平台音乐聚合工具)为实践案例,详细说明在openKylin系统环境下将Electron应用封装为适配loong64架构的deb软件包的具体操作流程。
部署基本编译环境
首先,在openKylin 2.0 SP2的loong64架构系统上部署chroot调试环境,可参考往期《【小白课程】一文教你调试OKBS编译错误》一文。
1、下载Listen1源码并初始化仓库
# 克隆项目到本地
git clone https://github.com/listen1/listen1_desktop.git
# 进入项目目录
cd listen1_desktop
# 更新子模块代码
git submodule update --init --recursive
2、安装打包基础依赖
sudo apt install npm dh-make build-essential
*openKylin的nodejs已经原生支持loong64架构,可放心直接使用。
3、配置龙芯社区npm源
npm config set registry https://registry.loongnix.cn:5873
*请注意配置端口号为5873,龙芯社区npm源中,4873端口号是旧世界龙芯npm仓库,5873端口号是新世界龙芯npm仓库。
4、配置使用系统fpm
# 安装ruby
apt install ruby-dev
# 使用ruby安装fpm
gem install --no-document fpm
# 设置系统变量,使项目打包时用系统变量
export USE_SYSTEM_FPM="true"
安装Electron
Electron可以使用龙芯社区贡献者darkyzhou(electron-loong64,Electron龙架构构建工具作者)移植打包的版本,Github地址为:
https://github.com/darkyzhou/electron-loong64
安装命令如下,其中THE_VERSION修改为您项目打包所需要的Electron版本:
ELECTRON_MIRROR="https://github.com/darkyzhou/electron-loong64/releases/download/" electron_use_remote_checksums=1 npm install electron@THE_VERSION --save-dev
检查是否安装正常:
有无正常生成node_modules目录;
node_modules下是否安装并存在node_modules/electron/dist/electron可执行文件;
node_modules/electron/dist/electron --no-sandbox --version是否能正常输出版本号:如果报缺少so库,请自行安装对应的deb到chroot中;
安装并修改Electron-Builder
有部分Electron应用使用Electron-Builder来打包deb包,Listen1也是如此。由于官方npm源中的Electron-Builder暂不支持loong64新世界架构打包,因此需要我们安装后手动修改部分代码使其支持loong64打包。
1、下载Electron-Builder
npm install electron-builder --save-dev
2、检查是否正常安装
npx electron-builder --version
3、修改electron-builder代码使其支持loong64打包
该步骤原理为找到项目中全部electron-builder/out/builder.js,全面替换arm64字符串为loong64,使其支持loong64参数打包。当然,如果比较熟悉nodejs的爱好者可以采用添加支持loong64选项的方式来修改代码,此处为了帮助大多数爱好者采取了较为简便的方法。
# 找到electron-builder/out/builder.js
# 整个项目中都要找齐这个electron-builder/out/builder.js
# 原理:全面替换arm64为loong64,使其支持loong64参数打包
for i in $(find . -name "electron-builder/out/builder.js")
do
sed -i 's/arm64/loong64/g' $i
done
修改项目packages.json文件
以Listen1为例,packages.json的编译指令中配置了架构相关内容,如下所示:
{
"name": "listen1",
"version": "2.33.0",
"description": "One for all free music in China",
"main": "app/main.js",
"scripts": {
...
"dist:linuxArm64": "electron-builder --linux --arm64",
...
},
...
}
注意看项目中的"scripts" -> "dist:linuxArm64",里面调用了"electron-builder --linux --arm64"参数,这时就应该模仿这个写法,添加一个"electron-builder --linux --loong64"的调用参数。整体修改如下:
{
"name": "listen1",
"version": "2.33.0",
"description": "One for all free music in China",
"main": "app/main.js",
"scripts": {
...
"dist:linuxArm64": "electron-builder --linux --arm64",
"dist:linuxLoong64": "electron-builder --linux --loong64",
...
},
...
}
此时,Listen1项目的loong64新世界架构打包命令就变成:
npm run dist:linuxLoong64
项目编译打包完成后就会生成loong64架构的deb安装包,至此关于openKylin龙芯新世界架构打包Electron应用的实战教程结束了,欢迎各位爱好者和应用开发者到openKylin上打包分发开源Electron项目!
OpenAtom openKylin是由开放原子开源基金会孵化及运营的开源项目,由基础软硬件企业、非营利性组织、社团组织、高等院校、科研机构和个人开发者共同创立。
社区以“为世界提供与人工智能技术深度融合的开源操作系统”为愿景,旨在于开源、自愿、平等、协作的基础上,共同打造全球领先的智能桌面操作系统开源根社区,推动Linux开源技术及其软硬件生态繁荣发展。
审核:openKylin