Vscode连接OHOS开发环境
Vscode连接OHOS开发环境
看完这篇教程后,你将得到:
Visual Studio Code下载和配置vim基本使用方法- 无
systemd启动openssh-server(sshd)ssh使用方法我们使用软通的通晓开发板,其他开发板的开发环境可能略有差异
本文假设你已经看过了前置教程:开发环境基本配置
Vscode配置
首先下载Visual Studio Code
截至发文日期,最新版是1.99.2
但是我们最新也只能下载1.98.2
并且要关闭自动更新
1. 下载VSC 1.98.2
下面链接二选一即可,一个是更新说明和下载页面超链,一个是下载直链
注意保留安装包,如果不小心更新了可以通过安装包重新安装(不会影响配置文件,但是可能一部分插件也需要重新安装)
2. 安装
下载完成后,点击安装,一切默认即可,打勾的地方最好全部打勾
路径只影响软件本体位置,实际上文件到时候大部分都在你的user目录下
3. 新建配置文件 (可选)
进入软件后,建议新建一个配置文件:
- 点击软件左下角的齿轮
- 选择选项
配置文件(XXXXXX) - 点击子选单选项
配置文件 - 点击
新建配置文件 - 选中
无标题配置文件 - 更改名称,名称随意
- 我改成了
OpenHarmonyOS DEV
- 我改成了
- 点击改名后的配置文件,点击打勾来启用
接下来我们就可以安心配置了
通过区分配置文件,让我们不同的开发环境之间不打架,更好的区分。
并且有利于我们"最简化"我们的开发配置,让vsc响应更快
4. 关闭自动更新 (必须)
点击小齿轮,点击选单设置
搜索update
在用户下
关闭以下内容:
- Update: Enable Windows Background Updates
- :取消勾选
- Update: Mode
- :选择
none
- :选择
vscode本体的自动更新已经关闭
由于插件版本取决于vscode版本,我们保证vsc始终是1.98.2版本即可
点击最上面横菜单栏的···,选择帮助,点击子选单关于
保证弹出窗口的版本小于等于1.98.2(后面的user setup不影响)
如果发现版本被偷偷自动更新到最新版,直接点击1.98.2安装包进行安装即可,这不会影响任何内容,只有在旧版不被兼容的插件会被关闭。可以重新安装兼容的插件版本。
5. 准备下载插件
软件最左侧,第三个或者第四个图标,长得像俄罗斯方块或者巧克力的那个(随便你怎么说)
那是我们的扩展管理器
6. 继续进行!
取决于访问编译环境的方式,我们的工作将在这里产生分支。
但是请一定保证你的vscode版本不超过1.98.2
关于“怎么这么麻烦!?!!”的回答:
众所周知,vscode是基于electron(虽然是微软魔改版)和nodejs开发的,
之前为了兼容性,一直放低其运行时要求,现在为了加功能不得不更新其所需的框架的版本,
也就需要更新的glibc库和stdc++库,
很不巧的,其需要的库版本正好是ubuntu18.04不受支持的版本
对应的,vscode也提高了运行时的要求。(并且官方团队还略微阴阳怪气的回应兼容性问题)
所以要么自行升级对应库,并且重新配置依赖和链接,
要么回滚vsc版本。
考虑到自行配置难度很大,我们选择回滚vsc。
其实微软早就想把旧玩意换掉了,在之前通过一些提示信息悄摸摸告诉用户我们要更新了,你的服务器可能不兼容更新内容。
只是最近终于出手了。
总而言之,1.98 vsc虽然不在官方更新了,但是暂时也在维护周期内,如果发现严重问题也会在update界面发布新的子版本
Dev Containeer(本机环境部署推荐)
配置vscode的devcontainer插件
0. 什么是Dec Container
Dev Containor(开发容器)是一种较为先进的开发环境配置方式通过格式化的自配置文件
devcontainer.json,允许我们生成与项目相关的开发容器镜像,保证开发环境自动化部署和一致性
当然这里我们只是借用这个插件图形化的访问我们的开发环境。
由于容器的特殊性,我们不能直接访问容器内部。
该插件会在容器内部自动配置Vscode的后端服务器,允许我们以"瘦客户端"直接连上容器内的后端,达成图形化访问容器的目的。
在扩展管理器内搜索Dev Container
点击安装
安装好插件后会发现左侧栏目多出一个图标,长得像个显示器,边上带个圈圈。
点击这个图标,出现远程管理器
选择开发容器
你会发现你的docker中已经实例化过的容器会在这里显示。
不出意外的话,我们的开发环境会被显示成:
﹀ 开发容器
﹀ ■ openharmony-docker:1.0.0 container_name
鼠标移到openharmony-docker:1.0.0 container_name上,右侧有个 -> 箭头(在当前窗口附加),点击他
你的软件会闪烁一下,重新载入工作区,
如果你是第一次启动,在这期间vscode会托管并安装vsc后端。
如果弹出
远程主机可能不符合Vscode服务器的先决条件, 说明你的vsc版本超过1.98, 新版的vsc后端服务器无法部署在开发环境中,请降级vsc或者尝试自行构建高版本的开发环境
安装完毕后将会自动链接,可能会再一次重新载入工作区
并且可能弹出一个窗口你即将连接到不受支持的服务器,是否继续?
建议勾选不再显示并点击继续。
关于“容器目录树中多了一级”的回答:
如果你使用某些开发者提供的镜像,也可能会是:
﹀ 开发容器
﹀ ■ openharmony-docker:1.0.0 container_name
■ txsmartropenharmony /home/openharmony/txsmartropenharmony
这代表开发者可能已经完全部署了环境,并将其添加过工作区。
你可以直接附加工作区。
至此,devcontainer部分已经配置完毕,进入工作区就可以直接使用了。
Remote - SSH(远程机环境部署推荐)
配置openssh-server
(本部分假设您无法图形化访问容器内部)
注意:你需要将容器的22端口开放,并且映射到物理机上的端口,否则你将无法访问ssh
如果docker ps -a时在PORT一栏并没有任何内容,你可能需要重新创建容器,并添加端口映射,具体参考前置教程
打开容器所在服务器的powershell:
# 进入容器的终端环境,我的容器名字叫container_name,看看你的
docker exec -it container_name /bin/bash
这里才是真正麻烦的地方:
容器环境默认不开启systemd,这使得推荐的sshd启动方式受限:
systemctl enable sshd
# service sshd enable
systemctl start sshd
# service sshd start
Failed to enable unit, refusing to operate on linked unit file sshd.service
System has not been booted with systemd as init system (PID 1). Can't operate.
我们需要手动启动sshd,启动方式很简单,只需要直接执行/usr/sbin/sshd即可
但是环境特殊,在我们执行之前,需要进行以下操作:
-
修改
sshd_config以允许root密码登录(配置私钥登录则不需要)修改教程
-
输入
vim /etc/ssh/sshd_configVIM编辑器使用方法
- 打开文件:
vim filepath
打开文件后默认是
命令模式,要进行编辑请进入编辑模式- 进入编辑模式: 键入
i(insert直接在光标位置编辑),a(append在光标其后以为编辑),o(Open a line另起一行进行编辑) - 进入命令模式:
ESC退出编辑模式并回到命令模式,按下:来准备输入命令 - 写入文件(保存):
命令模式输入:w(write)来保存文件 - 无修改时退出vim:
命令模式输入:q(quit)来退出查看 - 不保存修改退出:如果你编辑了一定内容,请输入
:qa!(quit abondon force)来放弃所有修改并退出 - 保存退出vim:
命令模式输入:wq(write quit)来保存内容并退出
- 打开文件:
-
找到32行的
PermitRootLogin,按下i进入编辑模式。删除其前的#(取消他的注释) -
将后面的Value字段(默认应该是
prohibit-password或者without-password)改为yes -
ESC进入命令模式并且输入:wq保存退出。
这一步做了什么?
简单来说, 默认情况下是不允许root用户以ssh方法登陆系统的,我们只是将其改为允许
关于
sshd_config, 这是控制sshd的连接设置的配置文件,和大多数配置文件以及sh文件类似,#代表对其属性项进行注释,
该配置文件中以“键值对”(或者被称作KV存储)的方式表示所有的设置。默认的配置文件基本上已经以注释方式列出了所有可修改项,并且其后的Value字段为默认值
PermitRootLogin的默认值为"限制不允许密码登录",也就是只能通过私钥进行登录,然而我们默认不好配置私钥我们让
PermitRootLogin为yes,就可以使用密码登录了。
-
-
修改root密码 (配置私钥登录则不需要)
修改教程
- 输入
passwd root 'password'不要忘记单引号 - 默认不显示输入内容是正常情况,你输入就行了。
该密码只会被用作ssh登录,
由于容器进入自动跳入root用户,所以改错了重新改就行,
记住了新密码就行,复杂度取决于环境重要性。
请不要给自己找麻烦
这一步做了什么?
由于我们要配置root使用密码登录,不知道密码那就白搭了。然而docker会在容器实例化的时候自动给root用户随机一个密码。
我们不知道密码,没办法ssh登录,所以需要重新修改。
在这个容器中修改这个密码不会有问题。
但不保证所有容器这么干都不会出问题
- 输入
-
sshd环境补全计划 (必须)
- 运行
mkdir /run/sshd && chmod 0755 /run/sshd - sshd运行的时候需要这个文件夹,保证有即可
- 有一定的可能性在容器关闭后文件夹会消失,重新创建即可
- 运行
-
手动启动sshd
- 运行
/usr/sbin/sshd(注意手动启动一定要打绝对路径,否则不启动)
- 运行
接下来你的22端口就会被sshserver开放给外部,想办法访问容器22端口即可。
如果你遵循了前置教程的内容,容器的22端口应该已经被映射到了物理机的11451端口,在物理机(windows)上通过以下方式访问:
# [-p]代表指定端口
ssh -p 11451 root@localhost
#ssh [-p] [port] [username]@[hostname/address]
或者如果物理机通过frp等方式将端口开放。。。
# [-p]代表指定端口
ssh -p yourport root@youraddress
#ssh [-p] [port] [username]@[hostname/address]
执行后:
会问你要不要加入已知hosts / 非已知host是否连接,输入yes
(注意如果是敏感环境,请注意识别连接对象是否为你的目标服务器)
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
yes
然后会提示你,已经永久将
Warning: Permanently added '[hostname/address]:port' (KEY/CERT TYPE) to the list of known hosts.
然后会要求你输入密码,输入刚才我们改的密码[your password]即可, 注意输入时不会回显
root@localhost's password:
成功之后就是这样的,接下来就可以配置vscode了
Welcome to Ubuntu 18.04.5 LTS (YOUR BASE PLATFORM)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
Last login: [date] from [your ip address]
请不要跟着这里面的提示打unminimize 否则你的容器大小会爆炸
配置vscode 的ssh
在扩展管理器内搜索ssh,
出现Remote - SSH
点击安装
安装好插件后可能会发现左侧栏目多出一个图标,长得像个显示器,边上带个圈圈。
点击这个图标,出现远程管理器
选择远程(隧道/SSH)
不出意外的话,会显示成:
﹀ 远程(隧道/SSH)
﹀ SSH
鼠标移到SSH上,右侧有个 +,点击他
vsc顶部显示输入SSH连接命令,输入我们刚才在物理机上输入的ssh连接指令就可以
这是我的
# [-p]代表指定端口 ssh -p 11451 root@localhost #ssh [-p] [port] [username]@[hostname/address]或者如果物理机通过frp等方式将端口开放,从外部访问的话。。。
# [-p]代表指定端口 ssh -p yourport root@youraddress #ssh [-p] [port] [username]@[hostname/address]
然后会要求你输入密码,输入刚才我们改的密码[your password]即可, 这个显示你输入了多少字符,但是不会显示输入内容
你的软件会闪烁一下,重新载入工作区,
如果你是第一次启动,在这期间vscode会托管并安装vsc后端。
如果弹出
远程主机可能不符合Vscode服务器的先决条件, 说明你的vsc版本超过1.98, 新版的vsc后端服务器无法部署在开发环境中,请降级vsc或者尝试自行构建高版本的开发环境
安装完毕后将会自动链接,可能会再一次重新载入工作区
并且可能弹出一个窗口你即将连接到不受支持的服务器,是否继续?
建议勾选不再显示并点击继续。
接下来顶部可能要求你选择一个目录,默认停留在你登录用户的家目录/root
我们接下来要跳转到/home/openharmony/txsmartropenharmony
这个界面是交互式的:
-
你先选择
..(这在类UNIX系统中代表“上一级目录”)
这会从/root退回到/(也就是系统根目录下面) -
选择
/home(常规用户的家目录) -
选择
openharmony(我们项目的父文件夹) -
选择
txsmartropenharmony(项目文件夹) -
然后点击
确定
如果没有要求你选择目录的话。。。
我们手动呼出这个界面
点击左侧第一个图标资源管理器
点击打开文件夹,然后就跟着上面的内容走即可
打开对应文件夹后,勾选信任创建者和信任父文件夹,点击信任(反正所有带信任的东西都信任就行了)
SSH登录方式配置完毕
开发环境插件建议:
在vsc连接上开发环境之后,建议额外安装以下插件:
本地安装:
- Error Lens (Alexander)
- TODO Highlight (Wayou Liu)
远程机安装:
- C/C++ (Microsoft)
- C/C++ Extension Pack (Microsoft)
- GN Language Server (Microsoft)
可能会自动安装上 CMake Tools (Microsoft) 插件
在当前开发环境中基本上用不到(OHOS使用gn作为元构建系统,而非cmake),依照你的心情可以选择卸载。
通晓开发板使用C语言和Cpp语言进行开发,
微软的C/Cpp插件,会提供高亮,报错显示,静态分析等等(Intellsense服务)
微软的GN语言服务器,会提供.gn文件的语法高亮,能看得清楚点。
Error Lens会将报错以行高亮的形式展示,并且在旁边直接显示内容,十分方便
TODO Highlight则是会高亮显示例如TODO UPDATE之类的消息,有利于了解库的更新历史,以及可以在看库的时候看库开发者的各种小插曲,
如果有特殊需求可以看看 background (shalldie) ,我相信大部分人都会很喜欢

浙公网安备 33010602011771号