kylin-code/README.md

174 lines
11 KiB
Markdown
Raw Normal View History

2023-07-28 11:34:42 +08:00
# Kylin-Code
致力于为 openKylin 社区提供程序编辑、编译、调试、发布、性能分析等全套开发流程的编程环境,以满足 openKylin 平台上的软件开发需求。
2022-07-28 16:50:45 +08:00
2023-07-28 11:34:42 +08:00
## 链接地址
- IDE基础平台安装包下载地址https://gitee.com/openkylin/kylin-code/releases
- [插件手动下载地址](https://gitee.com/openkylin/extensions-repo/tree/master/KylinIDETeam)https://gitee.com/openkylin/extensions-repo KylinIDETeam目录
- [用户帮助文档地址](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/%E7%9B%AE%E5%BD%95.md)https://gitee.com/openkylin/extensions-repo user-guide目录
## 支持架构
- 支持X86架构
- 支持openKylin系统桌面应用模式、远程开发模式
- 通过远程开发模式安装openKylin系统的机器可以作为本地开发机远程开发X86、ARM、LoongArch架构、银河麒麟操作系统V10机器上的代码
## 组成
- **Kylin-Code**整体上由4部分组成如下图所示包括IDE基础平台、插件管理器、插件、插件仓库。**本仓库仅是Kylin-Code的其中一个组成部分IDE基础平台**
* ![总体架构图](./imgs/readme-img/kylin-code-structure.png)
- **仅安装IDE基础平台只能完成很有限的编辑功能需要安装插件并在操作系统上安装插件依赖才能实现更多的开发功能**
- **IDE基础平台提供基本图形界面、插件架构用户通过插件管理器检索、安装、管理插件通过插件依赖管理器安装插件依赖**
- 本仓库IDE基础平台fork 自微软Visual Studio Code(VSCode)开源项目 [Code OSS](https://github.com/microsoft/vscode) ,默认接入 [OpenVSX](https://open-vsx.org/) 插件市场
## 桌面应用模式与远程开发模式
- **桌面应用模式**与常见IDE一样IDE基础平台以桌面应用软件形式安装运行
* [本仓库的kylin-code](https://gitee.com/openkylin/kylin-code/releases)即为这种模式
- **远程开发模式**类似微软remote-ssh功能IDE基础平台以远端服务形成安装运行用户在本地通过SSH连接开发远程机器上的代码体验和本地开发大体一致
* 远程开发模式需要插件插件名称Kylin remote development插件IDremote-dev插件发布者xhafei和服务端配合实现插件会自动或引导用户安装服务端
* 服务端下载地址https://gitee.com/mcy-kylin/kylin-ide-server/releases
* 通过远程开发模式安装openKylin系统的机器可以作为本地开发机远程开发X86、ARM、LoongArch架构、银河麒麟操作系统V10机器上的代码
## 使用方法
### 桌面应用模式
- **安装IDE基础平台**
* 安装方式一openKylin系统1.0版本已预装Kylin-Code
* 安装方式二在openKylin系统的软件商店中找到Kylin-Code进行安装
* 安装方式三:[下载安装包](https://gitee.com/openkylin/kylin-code/releases)然后后执行sudo dpkg -i <file>.deb
- **下载安装插件依赖管理器**
* 插件名称extension dependency发布者KylinIdeTeam
2023-08-01 16:50:55 +08:00
* 安装方式一通过在线插件检索从OpenVSX插件市场中安装见下图点击插件视图中的插件筛选器图标选择Kylin-IDE(Kylin-Code)插件分类->插件管理器
2023-07-28 11:34:42 +08:00
- ![插件依赖管理器OpenVSX安装](./imgs/readme-img/search.gif)
* 安装方式二或手动在openKylin的[extensions-repo仓库中](https://gitee.com/openkylin/extensions-repo/tree/master/KylinIDETeam/)找到并下载安装插件
2023-07-28 11:34:42 +08:00
- **下载安装插件**
* 安装方式一通过在线检索从OpenVSX插件市场中安装方法见上文
* 安装方式二或手动在openKylin的extensions-repo中找到并下载安装插件
2023-08-01 16:50:55 +08:00
* Kylin-IDEKylin-Code插件分类菜单检索到的插件是KylinIdeTeam开发、适配的插件
2023-07-28 11:34:42 +08:00
* 根据开发需求选择检索分类
- **使用插件依赖管理器检查、安装插件依赖**
* 点击菜单中的帮助->打开插件依赖管理器进入插件依赖管理器页面
* 详细见[用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/%E6%8F%92%E4%BB%B6%E4%BE%9D%E8%B5%96%E7%AE%A1%E7%90%86.md)
- **开始开发工作**
2023-07-28 15:02:27 +08:00
* 如果是新手可以安装Kylin Project Manager插件项目创建管理插件创建简单项目在此基础上进行开发。[详细见用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86.md)
* 也可以打开一个项目文件夹开始编辑工作已安装对应编程语言的支持插件和依赖配置task.json、launch.json运行和调试
- 以C语言为例[详细见用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/C-C++%E5%BC%80%E5%8F%91.md)
2023-07-28 11:34:42 +08:00
### 远程开发模式
- **在安装了openKylin系统的机器上按照桌面应用模式安装IDE基础平台、插件依赖管理器**
- **下载安装远程开发插件**插件名称Kylin remote development插件IDremote-dev插件发布者xhafei
* 安装方式一通过在线插件检索从OpenVSX插件市场中安装
* 安装方式二或手动在openKylin的extensions-repo仓库中找到并下载安装插件
2023-07-28 11:34:42 +08:00
- **输入、配置远程机器的用户名、IP等信息自动或根据提示安装服务端输入远程SSH密码**
* 详细见[用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/%E8%BF%9C%E7%A8%8B%E5%BC%80%E5%8F%91.md)
- **在远程端下载安装插件依赖管理器**
- **在远程端下载安装插件**
- **在远程端使用插件依赖管理器检查、安装插件依赖**
- **开始远程开发工作**
## OpenVSX插件市场使用注意
- OpenVSX插件市场是一个开源插件市场所有开发者都可以申请上传插件插件数量较多。但并不是其中的所有插件都能正常使用需要用户甄别
- 我们提供了一种检索方式能够在OpenVSX插件市场中检索到我们开发适配的插件满足基本开发需求**请优先使用我们开发适配的插件**
* 检索方法见下图点击插件视图中的插件筛选器图标选择Kylin-Code(Kylin-IDE)插件分类
* ![在OpenVSX插件市场中找到我们开发适配的插件](./imgs/readme-img/find-our-ext.jpg)
## 特色功能
- **[远程开发](#远程开发模式)**
* 微软的remote-ssh插件为微软协议未开源
* 支持X86、ARM、LoongArch架构而remote-ssh插件不支持LoongArch架构。LoongArch架构上的远程开发可以使用本功能
* 如果有其他架构的支持需要可以在Issues中提出
* 详细见[用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/%E8%BF%9C%E7%A8%8B%E5%BC%80%E5%8F%91.md)
- **历史调试**
* 历史调试插件可在调试过程中记录中断时的堆栈信息,并可在调试过程中或结束后回放调试时的堆栈信息,用户可在调试过程中记录关心的调试信息以便在需要的时候复现调试信息
* 详细见[用户帮助文档相关章节](https://gitee.com/openkylin/extensions-repo/blob/master/user-guide/files/%E5%8E%86%E5%8F%B2%E8%B0%83%E8%AF%95.md)
# 常见问题
- 为什么基于Code-OSS
2023-08-01 16:50:55 +08:00
VSCode有多个版本从微软网站下载的二进制版本称之为vscode从github网站下载源码后用户自行编译生成的二进制版本称之为code-oss。Code-OSS是VSCode的开源版本遵循MIT协议。根据stackoverflow网站统计VSCode持续多年在集成开发环境IDE领域排名第一成为最受欢迎的IDE。VSCode采用插件架构插件丰富社区活跃度高。在比较了多个IDE开源软件后我们决定基于Code-OSS进行二次开发、定制插件为openKylin用户开发软件提供支持。
- 已有VSCode、VSCodium为什么不直接拿来用
这是很多人感到疑惑的问题。如果VSCode、VSCodium能满足所有需求可以直接使用VSCode或VSCodium但由于以下原因我们还是决定基于Code-OSS来做定制开发。
* 第一VSCode协议限制较大。从微软网站下载的VSCode二进制发行版软件并非完全开源它所使用的部分插件也不是开源软件例如常用的C/C++支持插件、remote-ssh插件等。
* 第二我们希望支持更多的国产平台VSCode和VSCodium仅支持X86和ARM平台LoongArch、申威等国产平台需自行支持重新编译构建Code-OSS则不可避免。
* 第三面向国产操作系统我们有增加、改造、定制功能的需要仅依靠VSCodium无法满足需要需要对源码进行改造。例如为常用操作增加工具栏从OpenVSX开源插件市场中检索到我们针对国产系统适配、改造的插件等。
- 为什么不使用最新版本
目前版本基于Code-OSS1.68.0版本进行改造,之所以不使用最新版本,主要基于以下原因。
* 第一Code-OSS代码迭代较快通常2周发布一个版本紧跟Code-OSS版本不太现实。
* 第二我们希望在多个国产平台上保持版本基本一致Code-OSS依赖的Electron移植适配工作量较大特别是LoongArch等国产平台需要基于现有Electron版本或投入大量精力移植适配某个版本。
* 第三为用户在openKylin等国产操作系统上开发软件提供一个稳定好用的IDE是我们所要追求的目标。
2023-07-28 11:34:42 +08:00
- 如何加入Framework SIG组一起思考、推进国产IDE的发展
1. 在相关仓库反馈issues[仓库列表](https://gitee.com/openkylin/community/tree/master/sig/framework#repository)
2. 参与开发:您可以直接在我们的[仓库列表](https://gitee.com/openkylin/community/tree/master/sig/framework#repository)中 fork 自己的感兴趣的项目提交pr。
3. 成为 Maintainer您可以直接向目前的任何一个[Maintainer](https://gitee.com/openkylin/community/tree/master/sig/framework#maintainers)提出申请,在获得超过半数的 Maintainer 的支持之后,我们正式吸纳您成为 Framework SIG 的 Maintainer。
# 构建步骤
2022-07-28 16:50:45 +08:00
1. 下载源码:
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
git clone https://gitee.com/openkylin/kylin-code.git
2022-06-14 18:20:16 +08:00
2022-07-28 16:50:45 +08:00
2. 安装指定版本nodejs
2022-06-14 18:20:16 +08:00
2023-12-06 09:57:37 +08:00
版本要求:>=18.15.x and <19
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
获取地址https://nodejs.org/dist/
2022-06-14 18:20:16 +08:00
2022-07-28 16:50:45 +08:00
3. 安装yarn
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
yarn有版本要求如果未安装或提示版本不符。可以安装1.17.0
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
卸载yarn
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
npm uninstall yarn --global
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
安装:
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
npm install --global yarn@1.17.0
2022-06-14 18:20:16 +08:00
2022-07-28 16:50:45 +08:00
4. C/C++ compiler tool chain
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
sudo apt-get update
sudo apt-get install build-essential g++ libx11-dev libxkbfile-dev libsecret-1-dev
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
5. npm/yarn 设置
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
设置淘宝镜像(解决下载electron慢的问题)
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
yarn config set registry http://registry.npm.taobao.org/
npm config set registry https://registry.npm.taobao.org
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
在项目根目录新建文件.npmrc, 在其中添加 (注意,在.npmrc中必须小写在环境变量中是大写)
2022-06-14 18:20:16 +08:00
2022-06-14 18:11:52 +08:00
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
registry=https://registry.npm.taobao.org
electron_mirror=https://npm.taobao.org/mirrors/electron/
2022-07-28 16:50:45 +08:00
6. 安装依赖
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
cd kylin-code
yarn
2022-06-14 18:20:16 +08:00
2022-07-28 16:50:45 +08:00
7. 构建
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
yarn watch
2022-06-14 18:11:52 +08:00
2022-07-28 16:50:45 +08:00
8. 运行
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
./scripts/code.sh
2022-06-14 18:11:52 +08:00
2022-07-28 17:03:06 +08:00
9. 配置商店地址
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
在源码根目录下的 product.json 中添加如下json片段配置 open vsx 开源插件商店:
2022-06-14 18:20:16 +08:00
2022-07-28 17:03:06 +08:00
```json
"extensionsGallery": {
"serviceUrl": "https://open-vsx.org/vscode/gallery",
"itemUrl": "https://open-vsx.org/vscode/item"
2022-07-28 17:03:06 +08:00
}
```