如何在银河麒麟操作系统上搭建 Electron (含 Electron 打包指南)

news2024/9/29 1:20:02

本次教程所用版本

QT版本:5.12

Eletron版本:31.3.1

Electron-packager版本:17.1.2

VScode版本:1.92.0

Node版本:18.19.0

npm版本:10.2.3

前言:

随着跨平台应用开发的需求日益增长,Electron 和 Qt 成为了两种广受欢迎的选择。Electron 以其简单易用、快速开发的特点吸引了众多前端开发者,而 Qt 则因其强大的图形界面支持和高效的性能表现受到了许多专业软件开发者的青睐。银河麒麟操作系统作为一款基于 Linux 的国产操作系统,其安全稳定的特点使得它成为了政府机构和企业用户的优选。

1. 下载VScode

官网地址:Visual Studio Code - Code Editing. Redefined

下载完成后安装即可,过程不再演示。

打开终端:

进入到/home下,并创建Eletron文件夹。用于后续的项目创建。(作者喜欢在ROOT用户下操作,更加方便快捷,但是同时也更加危险,推荐大家用普通用户就好,在mkdir 前加 sudo即可)

Vscode打开文件夹

点击Yes,获取权限。

2. 下载Node

在Vscode中打开终端,或者使用普通终端即可,这里都一样。

下载源码包:注意这里请注意架构,作者时x64,如果是arm就把x64改成arm64即可

wget https://nodejs.org/download/release/v18.19.0/node-v18.19.0-linux-x64.tar.gz

将文件解压到/usr/sbin目录下,重命名成nodejs,加上软连接即可。

tar -zxvf ./node-v18.19.0-linux-arm64.tar.gz  -C /usr/sbin  // 解压文件
 
cd /usr/sbin/

sudo mv node-v18.19.0-linux-arm64/ nodejs //相当于重命名

// 软连接,方便全局使用

sudo ln -s /usr/sbin/nodejs/bin/node /usr/sbin/
sudo ln -s /usr/sbin/nodejs/bin/npm /usr/sbin/

查看版本,如果正确及配置成功。

如果报错,检查一下架构错了没。

3. 安装Electron 和 Electron-packager

在换源之前我们需要先初始化一下项目,也就是生成一下JSON文件。

sudo npm init

一直敲回车即可,最后输入一个yes。Script下是个脚本,可以自己随意设置,调试的时候可以执行。

换源:

sudo npm config edit 

加上上面的即可

electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
electron_mirror=https://cdn.npmmirror.com/binaries/electron/
registry=https://registry.npmmirror.com
strict-ssl=false

清除一下之前的缓存:

sudo npm cache clean --force

下载Electron和Electron-packager

sudo npm install --save-dev electron
sudo npm install electron-packager --save-dev

此时你会发现在JSON文件多了你的上方两个软件的版本。

这里大家也可以直接换成我的,应该没啥区别,哈哈。但是如果版本不同记得要改版本号哦。

​
{
  "name": "my-electron-app",
  "version": "1.0.0",
  "description": "Hello World!",
  "main": "main.js",
  "author": "Jane Doe",
  "license": "MIT",
  "scripts": {
    "start": "electron ."
  },
  "dependencies": {
    "electron": "^31.3.1"
  },
  "devDependencies": {
    "electron-packager": "^17.1.2"
  }
}

​

这里的main.js就是我们的主程序,因为作者了解过浅,我也不知道能不能包含其他文件,这里就不瞎说了。

4. 打包程序为exe

这里大家去AI随意生成一个即可。

在Script中添加打包命令:

"package-mac": "electron-packager . Path --platform=linux --arch=x64 --electron-version=31.3.1 --mirror=https://npm.taobao.org/mirrors/electron/ --out=dist

选项详解

  • .:这表示你的项目的根目录,即包含 package.json 文件的目录。
  • Path:这是打包后应用程序的名称。
  • --platform=linux:指定目标平台为 Linux。
  • --arch=x64:指定目标架构为 64 位。
  • --electron-version=31.3.1:指定 Electron 的版本为 31.3.1。
  • --mirror=https://npm.taobao.org/mirrors/electron/:指定 Electron 的镜像源,这里使用了 Taobao 镜像,不然会超时。
  • --out=dist:指定输出目录为 dist,打包好的应用程序将被放置在这个目录下。

点击script上方的Debug

点击即可,这里需要切换的root用户。

这里会有一个dist目录,其中会有一个Path可执行程序

至此,大功告成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992044.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础核心知识点(建议收藏再用)

目录 一、python入门day1-day24 day01-03 编程语言day04 变量day05 垃圾回收机制(GC机制) 1 引用计数2 标记清除3 分代回收 day05 程序交互与基本运算符day06 可变不可变类型day07 流程控制 1 赋值 2 浅拷贝 copy3 深拷贝 deepcopy day08-10 基本数据类…

ES数据类型学习之keyword和text以及查询条件match和term

es(4)—查询条件match和term_es match term-CSDN博客 参考文章如上。开始学习 1.text和keyword的学习 直接上官网Text type family | Elasticsearch Guide [7.17] | Elastic Text type family The text family includes the following field types: …

默克索引轻松搞定,快速查找!

在化学、药学和生物科学领域,有一部被广泛认可的权威工具书——《默克索引》(Merck Index)。自1889年首次出版以来有130多年的历史,《默克索引》一直被视为化学品、药物和生物制品的关键物理、药理和历史信息的最权威、最可靠的来…

Ubuntu22.04安装NVIDIA Driver和CUDA

Ubuntu22.04安装NVIDIA Driver和CUDA 1.安装NVIDIA Driver(1).卸载Ubuntu自带的驱动程序:(2).禁用nouveau:(3).安装相应的NVIDIA Driver: 2.安装CUDA(1).下载并安装CUDA:(2).配置环境变量: 本文记录了在 "Ubuntu22.04"上安装 "NVIDIA D…

百度关掉Ai智能回答(保姆级技术文,解决过程完整记录)

随着AI时代到来,百度也是不肯落于人后,在其搜索页面推出了AI自动回答。点到这里的你想必正因此懊恼,你说它怎么切入不好,非得搞个东西在那一直跳,顶着下面的内容哐哐直跳,你想好好浏览内容还得等它跳消停了…

C++(week15): C++提高:(四)并发服务器架构模型

文章目录 一、五种网络IO模型1.数据传输过程2.两组重要概念3.五种网络IO模型(1)阻塞式IO(2)非阻塞式IO(3)IO多路复用(4)信号驱动IO(5)异步IO 4.五种网络IO模型的对比5.举例说明 二、并发服务器模型1.循环式迭代式模式2.并发式服务器3.prefork服务器4.反应式服务器 (Reactor)5.反…

协同过滤推荐算法(包括传统协同过滤、矩阵分解、NeuralCF)

一、什么是协同过滤推荐算法 传统的协同过滤(Collaborative Filtering, CF)是一种推荐系统技术,它基于用户的历史行为数据来预测用户对未评分项目的潜在兴趣。 “协同大家的反馈、评价和意见一起对海量的信息进行过滤,从中筛选出…

IPD如何通过数字化项目管理平台落地实施?

随着市场竞争的日益激烈,企业对于产品研发的效率和质量逐渐提高,越来越多的企业关注到IPD(Integrated Product Development),希望参考IPD体系的方法理念和实践经验,从而帮助企业快速响应市场变化、缩短产品开发周期、提升产品开发…

step9:设置软件初始状态获取时不发送配置指令

文章目录 文章介绍问题描述效果图 解决办法下拉框控件ComboBox切换开关组件Switch数值微调框控件SpinBox 文章介绍 问题描述 虚拟端口(硬件)发送信号给客户端电脑,会设置此时硬件的各种基础参数, 客户端软件被设置基础参数之后&a…

计算机视觉——凸包计算

现在有一大堆点,然后你要找出一个可以围住这些点且面积最小的凸多边形,这个凸多边形称为凸包。 显而易见,如果要面积最小,那凸包的顶点势必得是这一大堆点的几个点,你也可以想成是用一条橡皮筋把这些点圈起来。 先把各…

什么是云原生?(一)

1. 前言 停下手头的工作,让你的同事定义“云原生”一词。你很可能会得到几个不同的答案。 1.1 让我们从一个简单的定义开始: 云原生架构和技术是一种设计、构建和操作在云中构建并充分利用云计算模型的工作负载的方法。 1.2 云原生计算基金会给出了官方…

easyexcel使用教程--导入导出简单案例

java中操作excel的库是poi,但是poi有很多问题,使用复杂,内存占用大等,阿里开源了一个操作excel的库叫easyexcel,它基于poi做了很多优化,平时读写excel建议使用这个库 文档地址: 关于Easyexcel | Easy Excel 官网 写入excel 在…

操作无法完成错误0x000006ba?教你几种全面解析与解决方案指南

错误代码0x000006ba通常与 Windows 操作系统中的远程过程调用(RPC)服务有关。当你在尝试执行某些操作,如连接到网络共享、运行某些网络服务或使用依赖于 RPC 的应用程序时,可能会遇到这个错误。接下来就和大家聊聊操作无法完成错误…

“揭秘CentosChina爬虫项目:掌握Scrapy框架的必备技巧与数据库设计“

Centoschina 项目要求 爬取centoschina_cn的所有问题,包括文章标题和内容 数据库表设计 库表设计: 数据展示: 项目亮点 低耦合,高内聚。 爬虫专有settings custom_settings custom_settings_for_centoschina_cncustom_settin…

鸿蒙(API 12 Beta2版)媒体开发【使用OHAudio开发音频播放功能(C/C++)】

OHAudio是系统在API version 10中引入的一套C API,此API在设计上实现归一,同时支持普通音频通路和低时延通路。仅支持PCM格式,适用于依赖Native层实现音频输出功能的场景。 使用入门 开发者要使用OHAudio提供的播放或者录制能力&#xff0c…

根据 IP 地址配置子网示例(下挂 hub 接不同 vlan 终端)

我们一般根据端口配置子网比较简单,但是如果换接口,就又要到交换机上重新配置端口所属 vlan 了,紧急情况下,还是比较耽误时间的。但如果根据IP地址配置 vlan,则可以插在交换机上任意端口,排障时比较节省时间…

部分PC制造商不会帮助英特尔第13/14代酷睿延保 对用户来说可能是个问题

早前英特尔已经宣布大部分第 13/14 代酷睿桌面处理器将可以获得延长保修服务,即后续使用出现非人为损坏的问题后,用户都可以联系英特尔换一颗新处理器。然而英特尔承担责任不代表对用户来说就高枕无忧,例如只有盒装版处理器才能直接联系英特尔…

MySQL数据库分区

文章目录 1. 分区的基本概念2. 分区的类型3. 在 MySQL 中实现分区3.1 创建分区表3.2 插入数据3.3 查询数据3.4 修改分区3.5 查看分区信息 4. 具体示例4.1 范围分区 (Range Partitioning)4.2 列表分区 (List Partitioning)4.3 哈希分区 (Hash Partitioning)4.4 键分区 (Key Part…

Win32注册表操作

注册表的概念 注册表是一个存储计算机配置信息的数据库,用于存储计算机上的硬件、安装的软件、系统设置以及用户账户配置等重要信息。对注册表的编辑不当可能会影响计算机的正常运行。应用程序可以调用API函数来对注册表进行增、删等操作。 注册表结构 运行Regedi…

【Redis 进阶】Redis 典型应用 —— 分布式锁

一、什么是分布式锁 在一个分布式的系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制, 避免出现类似于 “线程安全” 的问题。 而 Java 的 synchronized 或者 C 的 std::mutex,这样的锁都是只能在当前进程…