利用Ubuntu 20.04(WSL2)+ DevEco Device Tools搭建鸿蒙设备开发环境

news2024/12/24 9:52:20

小白一个,因为项目原因需要用到小熊派BearPi Nano做开发,决定使用WSL2上的Ubuntu 20.04进行开发环境的搭建,记录一下搭建的流程,过程难免有疏漏,望谅解。

过程中参考了@随遇而安的dandelion 大佬的这一篇文章:搭建鸿蒙设备开发环境:Ubuntu20.04+DevEco Device Tool Release 3.0,感谢大佬

1 WSL2

1.1 启用WSL2

Win+R打开运行,输入control打开控制面板,点击程序
控制面板

点击启用或关闭Windows功能

启用或关闭Windows功能
勾选Windows虚拟机监控程序平台适用于Windows的Linux子系统虚拟机平台,等待更改完成,重新启动。

Windows功能

1.2 升级WSL2

Win+X,选择终端管理员
终端管理员
输入以下命令更新WSL2版本:

wsl --update

等待更新完成后,输入以下命令将WSL默认版本设为WSL2:

wsl --set-default-version 2

1.3 安装Ubuntu 20.04

打开Microsoft Store,在搜索Ubuntu,选择Ubuntu 20.04.6 LTS进行下载安装。
Ubuntu 20.04
等待安装完成,打开Ubuntu 20.04.6 LTS,设置用户名与密码,等待配置完成。

2 Ubuntu 20.04

2.1 换国内源

输入以下命令备份source.list

sudo cp -a /etc/apt/sources.list /etc/apt/sources.list.bak

输入以下命令更换国内源(以华为源为例,其他源自行搜索):

sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && sudo sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

输入以下命令更新:

sudo apt-get update && sudo apt-get upgrade

2.2 更换Ubuntu默认shell

输入以下命令查看系统默认shell:

ls -l /bin/sh

Ubuntu 20.04默认shell为dash,如果显示不为bash,则输入以下命令更换系统shell:

sudo dpkg-reconfigure dash

在随后出现的页面中选择No
在这里插入图片描述

2.3 安装Python环境

鸿蒙DevEco Device Tool要求Python 3.8~3.9版本,执行以下命令确认Python版本:

python3 --version

2.3.1 安装pip3与venv

输入以下命令安装pip3venv(venv版本与Ubuntu所带版本一致):

sudo apt-get install python3-pip
sudo apt-get install python3.8-venv

执行以下命令为Python 3.8创建软链接

cd /usr/bin && sudo ln -s python3.8 python 

2.3.2 安装jinjia2

执行以下命令安装jinja2

pip3 install jinja2

2.3.3 安装SCons

sudo apt-get install scons

2.3.4 安装PyCryptodome

python3 -m pip install pycryptodome

2.3.5 安装EDCSA

python3 -m pip install ecdsa

2.3.6 安装Kconfiglib

python3 -m pip install kconfiglib

2.4 安装DevEvo Device Tool与VS Code

下载地址:华为集成开发环境IDE DevEvo Device Tool下载|HarmonyOS设备开发
在这里插入图片描述
通过Windows资源管理器将下载好的压缩包放进WSL2内,随后进行解压安装。以DevEco Device Tool 4.0 Beta 1为例,下载的文件名为devicetool-linux-tool-4.0.0.200.zip,假设存放的位置为~/,执行以下命令进行解压和安装:

cd ~/
unzip devicetool-linux-tool-4.0.0.200.zip
chmod u+x devicetool-linux-tool-4.0.0.200.sh
sudo ./devicetool-linux-tool-4.0.0.200.sh

在这里插入图片描述
通过选择,通过Tab跳转选择OK,等待安装成功,在这个过程中会同时安装DevEvo Device Tool与VS Code。

2.5 安装Node.js

假设安装版本为18,执行以下命令(如果需要其他版本,将链接中的18改为对应版本即可):

curl -sL https://deb.nodesource.com/setup_16.x -o nodesource_setup.sh
sudo bash nodesource_setup.sh

Ps.这里如果有魔法的话会很快,可以自己找pigcha之类的渠道。

2.6 安装HPM

2.6.1 切换国内源

执行以下命令将NPM源设置为淘宝源(如果有魔法的话这一步可以不用做):

npm config set registry http://registry.npm.taobao.org/

2.6.2 安装HPM

sudo npm install -g @ohos/hpm-cli

2.7 安装gn, ninja与gcc_riscv32

gn下载地址:gn下载地址
ninja下载地址:ninja下载地址
gcc_riscv32下载地址:gcc_riscv32下载地址

2.7.1 解压

执行以下命令将压缩包解压到指定文件夹,假设存放的文件夹为~/Tools

tar -xvf gn-linux-x86-1717.tar.gz
tar -xvf ninja.1.9.0.tar
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz

2.7.2 添加环境变量

使用习惯的编辑器,这里使用gedit进行编辑:

sudo gedit ~/.bashrc

假设gn, ninja与gcc_riscv32的存放位置分别为~/Tools/gn/, ~/Tools/ninja/~/Tools/gcc_riscv32/,在文件末尾添加如下几行:

export PATH=~/Tools/gn:$PATH 
export PATH=~/Tools/ninja:$PATH 
export PATH=~/Tools/gcc_riscv32/bin:$PATH

执行如下命令生效环境变量:

source ~/.bashrc

2.8 Windows端操作

在Windows端安装VS Code, Python 3.8~3.9和DevEco Device Tool(DevEco Device Tool版本与Ubuntu端保持一致)。

2.9 配置SSH环境

本来WSL2就可以连接Windows的VS Code做远程开发,但是尝试之后发现采用WSL2连接不能使用DevEco Device Tool中串口相关功能,于是使用SSH进行尝试后发现可行。

2.9.1 安装SSH并设置为开机启动(Ubuntu端)

执行以下命令:

sudo apt-get install openssh-server
sudo apt-get install net-tools
sudo systemctl enable ssh

通过ifconfig命令查看WSL2的IP地址,记录下来。
执行以下命令编辑SSH的配置文件:

sudo gedit /etc/ssh/sshd_config

PasswordAuthentication参数后的no改为yes以启用密码登录。

2.9.2 设置SSH连接(Windows端)

按照鸿蒙DevEco Device Tool官方文档指导对Windows端VS Code进行配置:配置Windows远程访问Ubuntu环境

2.10 配置DevEco Device Tool

连接上SSH后,使用Windows端VS Code进行开发。
在这里插入图片描述
在欢迎页新建工程导入工程,等待配置完成。
在这里插入图片描述
点击工程配置,安装相关环境(如果烧录器没有安装的话会有一个安装按钮):
在这里插入图片描述

3 一些额外的操作

3.1 Ubuntu免密登录

在VS Code中使用SSH登录WSL2每次都需要输入密码很麻烦,于是希望使用私钥登录。
Win+X,选择终端管理员
终端管理员
在命令行中输入以下命令生成私钥:

ssh-keygen

一路回车,私钥会保存在C:\User\{用户名}\.ssh\id_ras.pub中,使用VS Code打开,将其中保存的私钥拷贝出来。在Ubuntu端进入~/.ssh/,如果没有这个文件夹就创建一个,使用编辑器打开authorized_keys文件:

cd ~/.ssh
sudo gedit authorized_keys

将刚刚拷贝的私钥复制进去,保存并重启Ubuntu。

3.2 WSL2开机自启

Win+R打开运行,输入shell:startup打开目录,创建一个.txt文件,在其中填写如下:

cmd = "wsl -d Ubuntu-20.04"
CreateObject("Wscript.Shell").run cmd,vbhide

保存,然后将.txt文件扩展名修改为.vbs

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

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

相关文章

【MPC学习笔记】01:MPC简介(Lecture 1_1 Unconstrained MPC)

本笔记来自北航诸兵老师的课程 课程地址:模型预测控制(2022春)lecture 1-1 Unconstrained MPC 文章目录 0 MPC 简介0.1 案例引入0.2 系统模型0.3 MPC的优点0.4 MPC的缺点0.5 MPC的未来 1 详细介绍 0 MPC 简介 0.1 案例引入 MPC(…

MySQL--安装与配置与向日葵的基本操作使用

一.MySQL介绍 1.1 MySQL简介 MySQL是一个开源的关系型数据库管理系统,最早由瑞典MySQL AB公司开发。这个数据库系统有着高可靠性、高性能和易用性的特点,在互联网上得到了广泛的应用。MySQL支持SQL语言,可以运行在多种操作系统上&#xff0c…

数据结构【图篇】

数据结构【图篇】 文章目录 数据结构【图篇】前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件? 目录一、图(一)、图的存储(二)、图的基本操作(三)、最短路径问题 二、拓扑排序三、结语 前言 为什么突然想学算法了? > 用较为“官方…

Java中100==100为true,而1000==1000为false?

前言 今天跟大家聊一个有趣的话题,在Java中两个Integer对象做比较时,会产生意想不到的结果。 例如: Integer a 100; Integer b 100; System.out.println(ab);其运行结果是:true。 而如果改成下面这样: Integer …

八大算法排序@堆排序(C语言版本)

目录 堆排序大堆排序概念算法思想建堆建堆核心算法建堆的代码 排序代码实现 小堆排序代码实现时间复杂度空间复杂度 堆排序 堆排序借用的是堆的特性来实现排序功能的。大堆需要满足父节点大于子节点,因此堆顶是整个数组中的最大元素。小堆则相反,要求父节…

在Android设备上设置和使用隧道代理HTTP

随着互联网的深入发展,网络信息的传递已经成为人们日常生活中不可或缺的一部分。对于我们中国人来说,由于某些特殊的原因,访问国外网站时常常会遇到限制。为了解决这个问题,使用代理服务器成为了许多人的选择。而在Android设备上设…

WPD小波包理解

WPD是分析信号特性和提供具有时频局部化函数的正交小波基的有效工具,同时也是一种小波分解,它可以将原始信号分解成若干子层。小波分解实现了单侧分解,但它只分离频率的低通分量。相比之下,WPD提供了更精确的信号分析,…

40道java集合面试题含答案(很全)

1. 什么是集合 集合就是一个放数据的容器,准确的说是放数据对象引用的容器集合类存放的都是对象的引用,而不是对象的本身集合类型主要有3种:set(集)、list(列表)和map(映射)。 2. 集合的特点 集合的特点主要有如下两…

成为比开发硬气的测试人,我都经历了什么?

我的职业生涯很简单,可以说,我的测试生涯就是我的职业生涯。 大学的专业是计算机,当年是热门的学科,但自己的计算机知识不强悍,又加上学校的硬核是金融业,来学校校招的都是各大银行,且都是需要…

shopee利润怎么算?看妙手ERP如何帮您精准掌握店铺利润明细!

最近,妙手收到不少卖家朋友反应:“每个月对账的时候,常常遇到店铺利润明细不准确的情况。明明利润上显示是赚钱的,但是实际计算后发现店铺是亏损的,却找不到具体原因。”其实,究其根本就是:店铺…

2024货运市场继续回暖,满帮有望抓牢成长主旋律

2023年,物流货运行业将对它“刻骨铭心”。首次告别过去三年的特殊波动,物流货运的每一条细分赛道,都在努力跑出新速度,力图加速行业的修复,并走向高质量发展。中国物流与采购联合会在12月底指出,2023年物流…

ASP.NET Core基础之图片文件(一)-WebApi访问静态图片

阅读本文你的收获: 学会在WebApi项目中访问静态图片了解静态文件中间件UseStaticFiles的用法 系统中免不了要去处理图片文件,比如上传商品的图片、显示商品的图片,访问系统中的图片等等,根据微软官网描述: 静态文件&a…

运维人员的逆袭:IT界的“万金油”如何迈向人工智能时代

一、运维人员的角色变迁 1、从“修理工”到“系统守护者” 在传统的IT环境中,运维人员的主要任务是维护服务器、网络设备和数据库等基础设施。他们需要对硬件设备进行定期检查和维修,以确保系统的稳定运行。随着云计算和虚拟化技术的普及,运…

认真学SQL——MySQL入门之DQL多表查询

多表查询 本质: 把多个表通过主外键关联关系连接(join)合并成一个大表,再去查询 知识点: 外键 foreign key 外键概念: 在从表(多方)创建一个字段,引用主表(一方)的主键,对应的这个字段就是外键。 外键特点: 1:从表外键的值是对主表主键…

mysql 单表 操作 最大条数验证 以及优化

1、背景 开车的多年老司机,是不是经常听到过,“mysql 单表最好不要超过 2000w”,“单表超过 2000w 就要考虑数据迁移了”,“你这个表数据都马上要到 2000w 了,难怪查询速度慢”。 2、实验 实验一把看看… 建一张表 CREATE TABL…

【论文+在线运行】AnyText:能准确写汉字的AI绘图工具

源码:https://github.com/tyxsspa/AnyText 阿里在线运行: https://modelscope.cn/studios/damo/studio_anytext/summary 论文:2311.AnyText: Multilingual Visual Text Generation And Editing 一、AnyTexT是什么? 是一个基于扩散模型的&am…

四、HTML 属性

属性是 HTML 元素提供的附加信息。 一、HTML 属性 HTML 元素可以设置属性属性可以在元素中添加附加信息属性一般描述于开始标签属性总是以名称/值对的形式出现&#xff0c;比如&#xff1a;name"value"。 二、 属性实例 HTML 链接由 <a> 标签定义。链接的地…

用户管理第2节课 -- idea 2023.2 创建表--鱼皮

二、【先确定idea版本&鱼皮是否一致&#xff0c;再决定看不看这行】建表 2.1 idea 里连接数据库&#xff0c;通过可视化建表 2.1.1 清空表中数据 的 命令 truncate 清空 2.1.2 先输入删除表&#xff0c;的命令&#xff0c;再选中这行命令&#xff0c;执行&#xff0c;…

中科驭数鄢贵海新年演讲:数字经济下的算力基础先行,DPU自主创新力量大有可为

近日&#xff0c;中科驭数创始人、CEO鄢贵海受邀在北京电视台《金融街午餐会》新年特别活动中发表新年演讲。 鄢贵海在新年演讲中提到&#xff0c;在21世纪头30年&#xff0c;我们不可思议地经历了三次重要的科技变革&#xff0c;分别是互联网的普及、移动互联网的崛起、以及人…

Linux安装rabbitMq RPM安装 以及带延迟插件

rabbitmq安装 文档中rabbitmq下载链接 以及延迟插件 网盘下载 目前下载文件中版本已经过多个服务器安装测试 完全成功 1.安装执行 rpm -ivh openssl-libs-1.0.2k-19.el7.x86_64.rpm --force --nodeps rpm -ivh libnsl-2.34-28.el9_0.x86_64.rpm --force --nodeps rpm -ivh e…