1、环境搭建
编译 OpenHarmony 的源码建议在 Ubuntu 下进行,使用 windows+ubuntu20.04 的搭建。
VirtualBox 官网下载地址:https://www.virtualbox.org/
Ubuntu20.04 官网下载地址:https://ubuntu.com/download/desktop
关于 VirtualBox 和 Ubuntu 的安装就不详细的说明了,百度一下资料很多。
1.1、改 sh 为 bash
ls -l /bin/sh #如果显示为“/bin/sh -> bash”则为正常,否则请按以下方式修改:
sudo dpkg-reconfigure dash #然后选择no
1.2、安装 OpenHarmony 依赖包
1. sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby openjdk-8-jdk python3-distutils dosfstools mtools
2. pip3 install setuptools kconfiglib
#安装编译hi3861需要的pip包
1. pip3 install scons ecdsa pycryptodome
2. pip3 install --upgrade --ignore-installed six
具体所需要的依赖包详细网址可以参考:https://repo.huaweicloud.com/harmonyos/os/2.0/tool_chain/Standard_System.md
1.3、安装 python3.8 和 pip
编译 OpenHarmony 源码 hi3861 目标平台需要使用 scons,默认安装的 scons 版本需要 python 版本 >=3.7,一般推荐 python 版本 3.8。
a、如果是 ubuntu20.04,因为默认 python 是 3.8,正好符合要求,只需要设置以下 python 的环境变量,建立一个软连接即可。
1. which python3.8 #查看python3.8的安装位置
输出:/usr/bin/python3.8 #比如我的安装目录
2. cd /usr/bin #进入python的目录
3. sudo rm python #删除python
4. sudo ln -s /usr/bin/python3.8 python #将python链接到python3.8
5. python --version
OpenHarmony源码一般推荐的编译的环境是ubuntu18.04版本,主要原因是 Ubuntu20.04后,系统动态库版本更新更名。PyTorch 在引入时调用动态库找不到对应的库进而报错。解决方案是设置一个软连接,让系统在查找低版本动态库时,自动打开高版本动态库。操作如下。
首先输入下面命令查询当前动态库版本。根据找不到的动态库名自行更改。
1. ls /lib/x86_64-linux-gnu/libtinfo.so.*
2. /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.6.2
可以看到我们 Ubuntu 20.04 的系统上只有 6 这个版本,而 python 在查找 5 当然找不到。我们设置一个 5 到 6 的软连接即可。
3. sudo ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5
4. sudo apt-get install -y libncursesw5
注意:如果 pip 下载慢,配置 pip 包下载源,加速国内安装 pip 包:
1. mkdir~/.pip/
2. vim ~/.pip/pip.conf
#输入以下内容,改变默认下载的网址
[global]
index-url = https://mirrors.huaweicloud.com/repository/pypi/simple
trusted-host = mirrors.huaweicloud.com
timeout = 120
b、如果是其他版本,比如 ubuntu18.04,默认 Python3 版本是 3.6,得先安装 python3.8
sudo apt-get install python3.8 python3-pip
安装完成后,需要将默认 python 切换为 3.8,比较麻烦的是多个 python 版本的管理,一般推荐使用 virtualenv 管理,单独 source 相应的 active 脚本切换当前 shell 会话的默认 python 版本
virtualenv 管理多个 python 运行环境,不适用 virtualenv 的情况下,pip install 和 sudo pip install 的包会分别放到用户 home 目录和系统目录
安装 virtualenv:
pip3 install virtualenv
sudo apt install python3-virtualenv
#创建使用python3.8为默认python解释器的virtualenv
mkdir ~/Harmony/venv && virtualenv -p python3.8 ~/Harmony/venv
#激活virtualenv,激活后的pip3 install会将包文件缓存到相应的子目录中
source ~/harmonyos/venv/bin/activate
source ~/Harmony/.venv/bin/activate
2、下载源码
Ubuntu 环境搭建完成之后开始在码云下载源代码(注册码云账号)。
2.1、配置 GIT
1. git config --global user.name "XXXXXXX" #填写自己的用户名称
2. git config --global user.email "XXXXXX" #填写自己的用邮箱
3. git config --global credential.helper store
4. git config –list #查看git配置是否无误
2.2、生成/添加 SSH 公钥
Gitee 提供了基于 SSH 协议的 Git 服务,在使用 SSH 协议访问仓库之前,需要先配置好账户/仓库的 SSH 公钥。
你可以按如下命令来生成 sshkey:
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"
注意:这里的
[email]xxxxx@xxxxx.com[/email]
只是生成的 ssh key 的名称,并不约束或要求具体命名为某个邮箱。 现网的大部分教程均讲解的使用邮箱生成,其一开始的初衷仅仅是为了便于辨识所以使用了邮箱。
按照提示完成三次回车,即可生成 ssh key。通过查看 ~/.ssh/id_rsa.pub
文件内容,获取到你的 public key
cat ~/.ssh/id_rsa.pub
# ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....
复制生成后的 ssh key,用之前创建的码云账号登录码云,通过个人主页主页 「设置」->「安全设置」->「SSH 公钥」 ,添加生成的 public key 添加到仓库中。
添加成功后,就可以使用 SSH 协议对仓库进行操作了。
2.3、安装码云 repo 工具
1. curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo #如果没有权限,可以用 sudo -i 切换到root,安装完成后在切换回去
2. chmod a+x /usr/local/bin/repo #设置repo文件 a+x就是全部用户可执行
3. pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
2.3、下载源码
repo 是下载多个 git 库的 python 脚本,参考 repo 用法:https://blog.csdn.net/nwpushuai/article/details/78778602
repo init
-u #指定 manifests 这个远程 git 库的 URL,manifests 库是整个项目的清单,通常包含了 default.xml 这个文件
-b #指定 manifest.xml 文件中的一个版本,,也就是俗称的“分支”运行该命令后,会在当前目录下新建一个.repo 子目录
repo sync
-j12 #开启多线程同步操作,这会加快 sync 命令的执行速度。默认情况下,使用 4 个线程并发进行 sync
–no-repo-verify:在下载 repo 库时,会对 repo 的源码进行检查。通过–repo-url 指定第三方 repo 库时,可能会导致检查不通过,所以可以配套使用该参数,强制不进行检查
-c, –current-branch:只同步指定的远程分支。默认情况下,sync 会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间
-d, –detach:脱离当前的本地分支,切换到 manifest.xml 中设定的分支。在实际操作中,这个参数很有用,当我们第一次 sync 完代码后,往往会切换到 dev 分支进行开发。如果不带该参数使用 sync, 则会触发本地的 dev 分支与 manifest 设定的远程分支进行合并,这会很可能会导致 sync 失败
sync -c #只同步指定的远程分支
说明: Master 主干为开发分支,开发者可通过 Master 主干获取最新特性。发布版本代码相对比较稳定,开发者可基于发布版本代码进行商用功能开发。
- OpenHarmony 主干代码获取
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
- OpenHarmony 发布版本代码获取
OpenHarmony 发布版本获取源码方式请参考 Release-Notes。
3、编译源码
3.1、 执行 prebuilts
在源码根目录下执行脚本,安装编译器及二进制工具。
bash build/prebuilts_download.sh
如果出现 ssl 校验失败,可以加上 --skip-ss
./build/prebuilts_download.sh --skip-ssl
3.2、 编译
以 hi3516 为例子,进入源码根目录,执行如下命令进行版本编译。
./build.sh --product-name Hi3516DV300
检查编译结果。编译完成后,log 中显示如下:
build system image successful.
=====build Hi3516DV300 successful.
4、烧录指导
不同的芯片厂商可能烧录的工具和所需要安装的驱动不一样,目前以 hi3516 为例子进行烧录。
需要以下几个文件,分别是 USB 驱动,USB 转串口驱动,hitool 烧录工具和一个 HiUSB 补丁文件,这些可以去官网下载或者是联系芯片厂商提供。
4.1、安装 USB 驱动
解压 HiUSBBurnDriver 这个压缩包。
如果你电脑是第一次安装 HiTool 工具,双击 HiUSBBurnDriver\ InstallDriver.exe 安装 USB 驱动,再双击 烧录工具\usb-patch-for-win8win10.reg,进行 USB 补丁的安装。
4.2、安装 CH340 驱动
连接好 CH340G 串口线:先将 4pin 串口连接在核心板的 4pin 接口位置。CH340G 串口线接线如下图所示。
CH340G 的实物图如下图所示
请将 USB 的一头插入电脑上,若你的电脑是第一次使用 CH340G 的串口线,需要安
装驱动,双击 USB-to-Serial Comm Port.exe 驱动程序,如果在电脑的设备管理器上能看到设备即可
4.3、hitool 配置及烧录步骤
4.3.1、解压 Hi3516-HiTool 这个 hitool 工具的压缩包
4.3.2、直接双击烧录工具 Hi3516-HiTool\HiTool.exe 文件即可
4.3.3、选择好正确的芯片类型:这里是 Hi3516DV300
4.3.4、 选择“emmc”烧录和“USB 口”烧录方式
4.3.5、 选择已有的分区表文件或者自己在下面配置
选择这个 xml 之后呢,会自动识别好分区
这个时候点击页面的烧写,然后按住 3516 板子的 update 建,就是串口旁边的那个。然后使用 USB 上电(注意:因硬件版本不同,有的板子 USB 烧录口是在主板左侧,有的是板子后面的凹槽处),然后等 hitool 工具进入烧录模式后,松开 update 键。
烧写成功后
5、错误处理
由于 OpenHarmony 源码比较大,下载时可能会出现下载不完全的情况,这个时候我们只需要进入对应的目录进行下拉更新即可。如下图所示。
最后
有很多小伙伴不知道学习哪些鸿蒙开发技术?不知道需要重点掌握哪些鸿蒙应用开发知识点?而且学习时频繁踩坑,最终浪费大量时间。所以有一份实用的鸿蒙(HarmonyOS NEXT)资料用来跟着学习是非常有必要的。
这份鸿蒙(HarmonyOS NEXT)资料包含了鸿蒙开发必掌握的核心知识要点,
内容包含了:(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(HarmonyOS NEXT)技术知识点。
希望这一份鸿蒙学习资料能够给大家带来帮助,有需要的小伙伴自行领取,限时开源,先到先得~无套路领取!!
如果你是一名有经验的资深Android移动开发、Java开发、前端开发、对鸿蒙感兴趣以及转行人员,可以直接领取这份资料
获取这份完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
鸿蒙(HarmonyOS NEXT)最新学习路线
-
HarmonOS基础技能
- HarmonOS就业必备技能
- HarmonOS多媒体技术
- 鸿蒙NaPi组件进阶
- HarmonOS高级技能
- 初识HarmonOS内核
- 实战就业级设备开发
有了路线图,怎么能没有学习资料呢,小编也准备了一份联合鸿蒙官方发布笔记整理收纳的一套系统性的鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,内容包含:ArkTS、ArkUI、Web开发、应用模型、资源分类…等知识点。
获取以上完整版高清学习路线,请点击→纯血版全套鸿蒙HarmonyOS学习资料
《鸿蒙 (OpenHarmony)开发入门教学视频》
《鸿蒙生态应用开发V2.0白皮书》
《鸿蒙 (OpenHarmony)开发基础到实战手册》
OpenHarmony北向、南向开发环境搭建
《鸿蒙开发基础》
- ArkTS语言
- 安装DevEco Studio
- 运用你的第一个ArkTS应用
- ArkUI声明式UI开发
- .……
《鸿蒙开发进阶》
- Stage模型入门
- 网络管理
- 数据管理
- 电话服务
- 分布式应用开发
- 通知与窗口管理
- 多媒体技术
- 安全技能
- 任务管理
- WebGL
- 国际化开发
- 应用测试
- DFX面向未来设计
- 鸿蒙系统移植和裁剪定制
- ……
《鸿蒙进阶实战》
- ArkTS实践
- UIAbility应用
- 网络案例
- ……
获取以上完整鸿蒙HarmonyOS学习资料,请点击→纯血版全套鸿蒙HarmonyOS学习资料
总结
总的来说,华为鸿蒙不再兼容安卓,对中年程序员来说是一个挑战,也是一个机会。只有积极应对变化,不断学习和提升自己,他们才能在这个变革的时代中立于不败之地。