系统定义
- HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
- 对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,形成一个“超级虚拟终端”,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
- 对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。 对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。
技术特性硬件互助,资源共享分布式软总线
分布式软总线是多种终端设备的统一基座,为设备之间的互联互通提供了统一的分布式通信能力,能够快速发现并连接设备,高效地分发任务和传输数据。分布式软总线示意图见。
一次开发,多端部署
HarmonyOS提供了用户程序框架、Ability框架以及UI框架,支持应用开发过程中多终端的业务逻辑和界面逻辑进行复用,能够实现应用的一次开发、多端部署,提升了跨设备应用的开发效率。一次开发、多端部署示意图见图
技术架构
HarmonyOS整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 功能/模块”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能/模块。HarmonyOS技术架构如图
安装VM linux VMware Tools
我在自己的另一篇文章中详细讲解了怎么安装VM Linux。
下载安装包
- VM虚拟机
- linux
安装VM
- 解压
- 以管理员身份运行
- 不断下一步
- 取消这两个勾选
- 继续下一步
- 安装结束后,点击 许可证
- 填入注册码 CG54H-D8D0H-H8DHY-C6X7X-N2KG6 AA702-81D8N-0817Y-75PQT-Q70A4
YC592-8VF55-M81AZ-FWW5T-WVRV0
FC78K-FKED6-H88LZ-0QPEE-QP8X6
UV1H2-AKWD2-H8EJZ-GGMEE-PCATD
AC310-0VG0P-M88CQ-YWY5Z-QPRG0
CG54H-D8D0H-H8DHY-C6X7X-N2KG6
ZC3WK-AFXEK-488JP-A7MQX-XL8YF
AC5XK-0ZD4H-088HP-9NQZV-ZG2R4
ZC5XK-A6E0M-080XQ-04ZZG-YF08D
ZY5H0-D3Y8K-M89EZ-AYPEG-MYUA8
- 完成
安装Linux系统ubuntu
- 在桌面找到【VMware Workstation Pro】,双击打开。
- 点击【创建新的虚拟机】。
- 选择【典型】,点击【下一步】。
- 选择【稍后安装操作系统】,点击【下一步】。
- 选择【稍后安装操作系统】,点击【下一步】。
- 选择【Linux】,版本选择【ubuntu 64位】,点击【下一步】。
- 虚拟机名称输入【ubuntu 64位】,点击【浏览】更改系统的安装位置,建议安装在除C盘之外的磁盘,可在F盘或其他磁盘新建【ubuntu】文件夹,点击【下一步】。
- 点击【下一步】。
- 点击【自定义硬件】。
- 点击【内存】,设置为【2048MB】。
- 选择【新CD/DVD(SATA)】后选择【使用ISO镜像文件】,点击【浏览】找到并选择解压后【ubuntu】文件夹里面的【ubuntu-20.04.1-desktop-amd64】这个镜像。
- 点击【网络适配器】,网络连接选择【仅主机模式】。
- 选中【USB控制器】,点击【移除】。
- 选中【打印机】,点击【移除】然后点击【关闭】
- 点击【完成】。’
- 选中【ubuntu 64位】,点击【开启此虚拟机】之后不要有任何操作等待下一步的出现。
- 选择【中文(简体)】,点击【安装Ubuntu】。
- 点击【继续】。
19. 这里默认就好(默认的是Shanghai)点击【继续】。
20. 创建用户账号,点击【继续】。
21. 安装中。
22. 安装完成,点击【现在重启】。
23. 点击键盘上的回车【Enter】键。 24. 重启后不要有任何操作。 25. 点击【用户名】。 26. 输入密码,点击【登录】。
27. 安装完成
、
下载安装VMware Tools
VMware Tools的功能主要有两点:
1、可以在本机和虚拟机之间拖拽文件 2、是虚拟机的屏幕充满VMware Workstations的窗口
步骤
这里以Ubuntu 16.04为例,其他的步骤都大致相同
- 选择“虚拟机”->“安装VMware Tools”
- 等一会儿之后,在桌面或者文件里就会出现一个VMware Tools的磁盘驱动,打开终端把压缩文件解压到某个路径
- 解压完之后,进解压路径,就会看VMware Tools的安装包(上图安装包左边的文件夹)
- 进入安装包,打开终端,执行安装程序
开始安装之后见到yes,就输入yes。其他的就一路回车按(Enter)直到出现“Enjoy, –the VMware team”如下图,就表示安装成功了,然后手动重启虚拟机,虚拟机的屏幕充满VMware Workstations的窗口。
- 若是手动重启虚拟机之后,虚拟机的屏幕没有充满VMware Workstations的窗口,也可以手动设置
也可以在本机和虚拟机之间直接拖拽文件了
- 最后,解压的VMware Tools的安装文件不想要的话,可以删除,不会影响正常的使用
构建编译环境
将Linux shell改为bash
查看shell是否为bash,在终端运行如下命令
代码语言:javascript复制ls -l /bin/sh
1
如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:
方法一:在终端运行如下命令,然后选择 no。
代码语言:javascript复制sudo dpkg-reconfigure dash
1
方法二:先删除sh,再创建软链接。
代码语言:javascript复制sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh
12
确定Python安装好后,运行如下命令,将python路径链接到"/usr/bin/python"。
代码语言:javascript复制which python3.8
cd /usr/bin && sudo rm python && sudo ln -s /usr/local/bin/python3.8 python && python --version
12
安装并升级Python包管理工具(pip3),任选如下一种方式。
命令行方式:
代码语言:javascript复制sudo apt-get install python3-setuptools python3-pip -y
sudo pip3 install --upgrade pip
12
安装包方式:
代码语言:javascript复制curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
12
运行如下命令,安装python模块setuptools。
代码语言:javascript复制pip3 install setuptools
1
安装GUI menuconfig工具(Kconfiglib),建议安装Kconfiglib 13.2.0 版本,任选如下一种方式。
命令行方式:
代码语言:javascript复制sudo pip3 install kconfiglib
1
安装包方式: 下载.whl文件(例如:kconfiglib-13.2.0-py2.py3-none-any.whl)。 下载路径:“https://pypi.org/project/kconfiglib#files”
运行如下命令,安装.whl文件。
代码语言:javascript复制sudo pip3 install kconfiglib-13.2.0-py2.py3-none-any.whl
1
安装pycryptodome,任选如下一种方式。
安装升级文件签名依赖的Python组件包,包括:pycryptodome、six、ecdsa。安装ecdsa依赖six,请先安装six,再安装ecdsa。 命令行方式:
代码语言:javascript复制sudo pip3 install pycryptodome
1
安装包方式: 下载.whl文件(例如:pycryptodome-3.7.3-cp37-cp37m-manylinux1_x86_64.whl)。 下载路径:“https://pypi.org/project/pycryptodome/#files”。
运行如下命令,安装.whl文件。
代码语言:javascript复制sudo pip3 install pycryptodome-3.7.3-cp37-cp37m-manylinux1_x86_64.whl
1
安装ecdsa,任选如下一种方式。
命令行方式:
代码语言:javascript复制sudo pip3 install ecdsa
1
安装包方式: 下载.whl文件(例如:ecdsa-0.14.1-py2.py3-none-any.whl)。 下载路径:“https://pypi.org/project/ecdsa/#files”
运行如下命令,安装.whl文件。
代码语言:javascript复制sudo pip3 install ecdsa-0.14.1-py2.py3-none-any.whl
1
安装Scons
打开Linux编译服务器终端。 运行如下命令,安装SCons安装包。
代码语言:javascript复制sudo apt-get install scons -y
1
如果软件源中无法找到安装包,请按以下步骤处理:
下载源码包(下载路径:“ https://scons.org/pages/download.html ”,推荐SCons版本是3.0.4 )。 解压源码包到任意目录。 安装源码包:进入解压目录,运行如下命令:
代码语言:javascript复制sudo python3 setup.py install
1
运行如下命令,查看是否安装成功。如果安装成功,查询结果下图所示。
代码语言:javascript复制scons -v
1
安装编译工具环境
须知
如果后续通过“HPM组件方式”或“HPM包管理器命令行工具方式”获取源码,不需要安装gn、ninja、gcc_riscv32编译工具。
(推荐)如果后续通过“镜像站点方式”或“代码仓库方式”获取源码,需要安装gn、ninja、gcc_riscv32编译工具。 安装gn、ninja、gcc_riscv32编译工具时,请确保编译工具的环境变量路径唯一。
官方流程
安装gn
官网 打开Linux编译服务器终端。 下载gn工具。 解压gn安装包至~/gn路径下。
代码语言:javascript复制tar -xvf gn.1523.tar -C ~/
1
设置环境变量。
代码语言:javascript复制vim ~/.bashrc
1
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
代码语言:javascript复制export PATH=~/gn:$PATH
1
生效环境变量。
代码语言:javascript复制source ~/.bashrc
1
安装ninja
打开Linux编译服务器终端。 下载ninja工具。 解压ninja安装包至~/ninja路径下。
代码语言:javascript复制tar -xvf ninja.1.9.0.tar -C ~/
1
设置环境变量。
代码语言:javascript复制vim ~/.bashrc
1
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
代码语言:javascript复制export PATH=~/ninja:$PATH
1
生效环境变量。
代码语言:javascript复制source ~/.bashrc
1
安装gcc_riscv32(WLAN模组类编译工具链)
须知 Hi3861平台仅支持使用libgcc运行时库的静态链接,不建议开发者使用libgcc运行时库的动态链接,会导致商业分发时被GPL V3污染。
打开Linux编译服务器终端。 下载gcc_riscv32工具。 解压gcc_riscv32安装包至~/gcc_riscv32路径下。
代码语言:javascript复制`tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~`/
1
设置环境变量
代码语言:javascript复制vim ~/.bashrc
1
将以下命令拷贝到.bashrc文件的最后一行,保存并退出。
代码语言:javascript复制export PATH=~/gcc_riscv32/bin:$PATH
1
生效环境变量。
代码语言:javascript复制source ~/.bashrc
1
Shell命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
代码语言:javascript复制riscv32-unknown-elf-gcc -v
1
整合
集体解压
配置环境变量
打开设置环境变量
代码语言:javascript复制vim ~/.bashrc
1
在最下面添加这几行
代码语言:javascript复制export PATH=~/gn:$PATH
export PATH=~/ninja:$PATH
export PATH=~/gcc_riscv32/bin:$PATH
123
保存
代码语言:javascript复制source ~/.bashrc
1
现在可以查看这些环境变量
代码语言:javascript复制echo $PATH
12
编译鸿蒙源码
获取鸿蒙源码
开发者需要在Linux服务器上下载一套源代码,获取源码(下载链接)。更多源码获取方式,请见源码获取。
解压
在Linux终端中输入
代码语言:javascript复制tar -xzvf code-1.0.tar.gz
1
编译
在终端上输入
代码语言:javascript复制python build.py wifiiot
1
DevEco编译
使用HarmonyOS IDE工具DevEco的终端工具连接Linux服务器。(HarmonyOS IDE工具DevEco集成了终端工具的能力,基本使用请参考指导文档) 依次点击“View”、“Terminal”,打开IDE终端工具。
在终端界面使用ssh命令连接linux服务器,如“ssh user@ipaddr”。
进入源码目录下,运行程序
输入 python build.py wifiiot
构建成功后,会在./out/wifiiot/路径中生成以下文件,至此编译构建流程结束。
出现的问题
出现这种问题的原因往往是python的软连接的问题
我的解决方法:
进入环境变量,删除错误的python环境配置,保存退出
然后 which python3
出现
/usr/bin/python
1
输入 python -v 出现 python 3.8.5 之后就可以运行成功了 本质就是把bin里面的python换成3.8的软连接