OpenHarmony代码操作总结

OpenHarmony社区代码操作总结

OpenHarmony是HarmonyOS的开源版,由华为捐赠给开放原子开源基金会(OpenAtom Foundation)开源。第一个开源版本支持在128KB~128MB的设备上运行,欢迎参加开源社区一起持续演进。

本文主要介绍windows环境下OpenHarmony社区代码操作:代码下载,开发环境搭建,版本编译,烧写,挂载,代码运行,上库等完整操作流程总结;

本文以xts_acts仓库,L1-Hi3516开源板子操作为例。

主要操作是在Ubuntu子系统操作,本地只有HiTool版本烧写和代码编辑工具Visual Studio Code(操作过程中有些安装包和软件获取不便的,可以直接找我获取)。

内容较多,请先查看目录,按需参考


OpenHarmony社区文档文档中心

代码仓库地址https://openharmony.gitee.com

OpenHarmony学习资料个人归档(更新ing......)


OpenHarmony-RK3568开发板操作梳理

OpenHarmony-L2操作总结:

OpenHarmony-L2操作总结_@_南先生的博客-CSDN博客

OpenHarmony_Hi3861Ubuntu编译环境搭建测试套编译用例执行操作总结:

OpenHarmony_Hi3861Ubuntu编译环境搭建测试套编译用例执行操作总结_@_南先生的博客-CSDN博客

OpenHarmony-Hi3518EV300挂载烧写:

OpenHarmony-Hi3518EV300挂载烧写_@_南先生的博客-CSDN博客

OpenHarmony-常见问题解决(持续更新...):

OpenHarmony-常见问题解决(持续更新...)_@_南先生的博客-CSDN博客

OpenHarmony开发资料归档


目录

OpenHarmony社区代码操作总结

Windows环境中准备Ubuntu

获取OpenHarmony源码

下载单个仓

编译

流水线daily构建版本获取

转测版本

烧写

NFS挂载

windows本地代码编辑

代码上库

dco检查失败问题解决

提交失败项解决

附件


Windows环境中准备Ubuntu

使用Windows10的WSL2的Ubuntu子系统,网上有很多安装的分享,这里不做介绍,也可按照以下InsStep直接安装,通过微软商店默认安装是安装在系统盘下的,具体路径如下,所有Ubuntu的内容都在这个路径下。

C:\Users\username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs

InsStep:

1.打开设置->安全和更新->开发者选项,选择为“开发人员模式”;

2.Win + R运行control appwiz.cpl指令,在启用或关闭Windows功能中勾选适用于Linux的Windows子系统虚拟机平台两项启用(注:没有虚拟机平台的,请升级Windows系统,Win10 版本号为 2004(内部版本19041或更高)),重启;

 3.以管理员身份打开PowerShell并运行:dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart   开启Windows子系统功能;

4.打开Microsoft Store搜索Ubuntu,安装Ubuntu20.04:

5.安装完直接打开,设置用户名和密码以及root用户密码:

PS: root和个人用户密码忘记,修改可参考win10子系统 WSL如果root和其他用户的密码都忘记的修复方法 - Halo3224 - 博客园

 6.将Ubuntu Shell环境修改为bash

执行sudo dpkg-reconfigure dash,选择No,将Ubuntu shell由dash修改为bash

 如图,执行ls -l /bin/sh查看:

7.安装完成,用户账号设置好之后,打开命令行窗口执行wsl -l -v查看下wsl的版本,确保是wsl2,如果是版本1,可执行wsl.exe --set-version Ubuntu-20.04 2命令升级为版本2,执行后等待转换完成即可(注:如果wsl不能执行,是Windows系统版本太低,需要更新系统)!!注意一定要是WSL2,如果是版本1,编译速度会慢几十倍

 PS:执行wsl.exe --set-version Ubuntu-20.04 2出现内核组件问题,先下载安装
wsl_update_x64.msi后,在执行切换命令,即可开始转换,等待转换完成即可

8.wsl2安装完成后,切换软件源为国内软件源:

s1:备份原来的源:cp -ra /etc/apt/sources.list /etc/apt/sources.list.bak

s2: 将源换成阿里源:sudo gedit /etc/apt/sources.list,将里面的内容清空,把下面的内容复制进去,保存退出

deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
s3: 更新缓存和升级:

sudo apt-get update

sudo apt-get upgrade

PS:按上述步骤切换软件源后可解决一Ubuntu20.04一些依赖工具安装失败的问题

9.迁移wsl2至非系统盘:

这里介绍一下如何将安装好的Ubuntu子系统从系统盘迁移到指定的目录,本文将其迁移到D:\Ubuntu目录下。

Ubuntu子系统安装成功后,进行迁移操作,操作如下:

1.需要下载LxRunOffline,下载地址,下载文件LxRunOffline-v3.5.0-mingw.zip,然后解压到某个目录中

​​

2.设置环境变量,在系统变量Path中添加LxRunOffline解压的目录(.exe所在的目录)

​​

3.重启电脑,使环境变量生效

4.Win + R运行cmd,输入LxRunOffline,如果显示下面的提示证明已经安装成功了

​​

5.Win + R运行cmd,输入LxRunOffline list查看子系统版本

​​

6.复制上面的版本号,然后输入LxRunOffline move -n {version} -d {dir},{version}是版本号,{dir}是迁移目的目录,比如本文是20版本,迁移到D盘Ubuntu目录下,LxRunOffline move -n Ubuntu-20.04 -d D:\Ubuntu,然后回车,等待迁移完成,10分钟左右。

​​

这样,整个Ubuntu子系统就迁移到了指定目录下了:

WSL文件映射在\\wsl$路径下,通过\\wsl$\Ubuntu-20.04打开文件所在位置

 

10.WSL映射到本地

如图:

本地方便查看

 PS:

1.WSL安装使用参考阅读:不用装双系统,直接在 Windows 上体验 Linux:Windows Subsystem for Linux

2.WSL与Windows交互文件权限问题:从根本上解决DrvFs文件系统的权限问题请查看:从根本上解决DrvFs文件系统权限问题

获取OpenHarmony源码

Ubuntu环境下:

Linux开发环境准备:

环境搭建主要分为:安装和配置python、安装gn、安装ninja、安装llvm、安装hb,安装如下流程:

参考 Ubuntu编译环境准备

1.python环境

Ubuntu20已自带python3.8.5,执行sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150切换python3:

​​

安装pip3

$ sudo apt-get -y update

$ sudo apt-get install python3-pip

其他所需库参考开源文档使用pip3安装即可。或者直接依次执行下面命令:
$ sudo pip3 install kconfiglib

$ sudo pip3 install pycryptodome

$ sudo pip3 install six --upgrade --ignore-installed six

$ sudo pip3 install ecdsa

​​

2.安装gn:

下载gn工具

安装

mkdir ~/gn   
tar -xvf gn-linux-x86-1717.tar.gz -C ~/gn    
vim ~/.bashrc
export PATH=~/gn:$PATH
source ~/.bashrc

3.安装ninja:

下载ninja工具

安装

mkdir ~/ninja
tar -xvf ninja.1.9.0.tar -C ~/ninja
vim ~/.bashrc
export PATH=~/ninja:$PATH
source ~/.bashrc

4.安装llvm:

下载LLVM工具

安装

mkdir ~/llvm
tar -zxvf llvm.tar.gz -C ~/llvm
vim ~/.bashrc
export PATH=~/llvm/bin:$PATH
source ~/.bashrc

apt安装全部依赖的工具:

sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler

源码获取

1.码云gitee账号注册,SSH公钥注册,git客户端配置参考开源文档介绍配置即可,生成/添加SSH公钥

2.安装码云repo工具:

$ su root    -----------身份验证失败,执行 sudo passwd,设置root密码即可。

$ sudo passwd

$ su root 

# curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo

# chmod a+x /usr/local/bin/repo

# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple reques

3.git lfs安装

curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
git lfs install

安装成功:

​​

PS:

1.git lfs用于下载大文件使用,是git的扩张,实现对大文件的支持;

2.Git LFS操作介绍请参考:Git LFS 操作指南

获取OpenHarmony主干代码

PS:参考源码下载

方式一(推荐):通过repo + ssh 下载

repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

方式二:通过repo + https 下载

repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'

如图:

​​

获取OpenHarmony release分支代码

repo init -u https://gitee.com/openharmony/manifest.git  -b OpenHarmony_1.0.1_release --no-repo-verify
 repo sync -c
repo forall -c 'git lfs pull'

如图:

​​

下载单个仓

私仓代码可以单独下载,以OpenHarmony-SIG组织,oh-inner-release-management仓为例:

​​

1.fork仓

​​

2.复制克隆链接

ps:注意是fork后的个人仓

oh-inner-release-management: 1、需求:内部转测试的双周非正式版本信息承载2、目标:OH非正式版本的信息承载3、意义:非官方开发转测试通道

​​

 3.git clone

git clone https://gitee.com/nan-xiansen/oh-inner-release-management.git

​​

4.修改上库

git add .

git commit -sm "commit msg"

git push

ps:git push 默认提交到master分支

编译

1.安装hb

$ python3 -m pip install --user ohos-build

$ vim ~/.bashrc

填加:export PATH=~/.local/bin:$PATH

source ~/.bashrc

​​

2.依赖工具及java环境安装:

以轻量和小型系统L1-Hi3516DV300板子为例:

S1.执行:

sudo apt-get install build-essential gcc g++ make zlib* libffi-dev

​​S2.执行:

sudo apt-get install dosfstools mtools mtd-utils default-jre default-jdk

2.编译版本

hb set 

回车

选择ipcamera_hispark_taurus@hisilicon

hb build 

等待编译完成

编译完成所在路径:D:\Ubuntu\rootfs\home\alex\openharmony_master\out\hispark_taurus\ipcamera_hispark_taurus\

版本烧写所需文件:OHOS_Image.bin,rootfs_vfat.img,userfs_vfat.img

流水线daily构建版本获取

CI-PORTAL

​​

转测版本

oh-inner-release-management: 1、需求:内部转测试的双周非正式版本信息承载2、目标:OH非正式版本的信息承载3、意义:非官方开发转测试通道

​​

烧写

使用Hitool工具烧写:

1.登录Hihope官网下载Hi3516-HiTool安装包解压到本地

​​

Windows环境双击HiTool.exe即可打开;

2.点击链接下载USB-to-Serial Comm Port驱动程序

​​

点击安装包,安装驱动程序。

驱动安装完成后,将Hi3516开源板子连接到PC上,重新插拔USB接口,串口信息显示如下图所示(如果初次查看设备管理没有端口,请安装CH341SER.EXE驱动)。

​​

3.连接网线,进行小网Ip设置

​​

4.烧写

打开hitool烧写工具,按照如下配置烧写:

下电上电等待烧写成功:

​​

PS:板子第一次烧写需要烧写fastboot,uboot文件(Hi3516DV300为例)可从device/hisilicon/hispark_taurus/sdk_liteos/uboot/out/boot获取:

参数:开始地址 0  长度  1M

​​

其他板子的uboot文件所在路径同样路径获取即可:

​​

如图,烧写成功,板子正常启动:

​​

NFS挂载

说明:hanewin官网下载的最新版本的nfs1.2.59,安装使用时会存在Unable to open file ×××.xml的情况,可自行下载安装其他旧的nfs版本,自测hanewin_nfs_server_V1.1.69和hanewin_nfs_server_1.2.19都可以,同样流程安装即可正常使用,安装包也可从附件中获取。

​​

1.控制面板——系统和安全——Windows Defender防火墙——高级设置——入站规则——新建规则(勾选端口next——TCP——特定本地端口,添加111,1058,2049 next——允许连接next——勾选域、专用、共用 next)——为该规则定义一个名字haneWinTcp——完成。

2.hanewin官网下载最新版本的nfs server安装包

​​

3.双击.exe安装;

4.安装成功后,到安装所在路径下,以管理员方式运行NFS Server:

​​

5.配置

​​

6.设置保存后,重启NFS服务

​​

7.挂载

使用Xshell或其他工具,连接3516的板子:

​​

​​

​​

挂载:

创建挂载目录:/test_root/kernel

完成挂载:mount 192.168.1.3:/mnt /test_root/kernel nfs

​​

​​

8.挂载常见问题分析

挂载失败:

1.首先看网络是否OK,设备和本地相互能ping通

2.网络OK,查看nfs服务是否开启,nfs配置是否皮配置OK

windows本地代码编辑

1.下载安装代码编辑工具Visual Studio Code,点击下载;

2.安装一些常用插件;

3.直接从本地Ubuntu目录打开打开代码文件编辑即可;

​​

编辑后,编译,以某个测试套用例为例:

​​

​​

将编译好的可执行文件放到挂载目录下:

​​

执行

​​

代码上库

1.登录码云fork代码xts_acts仓

​​

2.签署“贡献者许可协议”(CLA)

​​

3.创建本地分支:repo start branch_name --all

4.查看修改:git status

​​

5.git add .

6.git commit -sm "xxxxxx"  //xxxxx为提交信息描述

ps:

1.参考:zh-cn/contribute/贡献流程.md · OpenHarmony/docs - Gitee

dco检查失败问题解决

问题:如果dco已签署,但是提交时还是显示dco检查失败,请按如下方法配置后重新触发或重新提交即可解决:

在个人用户和root下分别配置(root最好也同样配置下)

git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

7.git push https://gitee.com/码云用户名/xts_acts upup:refs/heads/kernel_lite_20210402_3

其中,码云用户名是自己注册码云的名称,xts_acts是fork的代码仓,upup是Ubuntu本地repo建的分支,kernel_lite__20210405是分支标签,自己随便建,不创建默认是maser分支(这是给码云远端个人仓本次提交所创建的分支)。

说明:第一次push,需要输入username和password,用户名输入码云用户名,密码是码云登录密码;输入后回车,重新执行git push操作即可。

​​

​​

8.新建Pull Request将远端个人仓库同步到主干仓:

注意:这儿是从远端fork的个人仓中同步(下图左边源分支这儿是个人码云用户名,而不是OpenHarmony),不知道的按如下操作:个人账户中点击个人主页——选择xts_acts——Pull Request——新建Pull Request——选择源分支同步到目标分支;

​​

​​

评论输入start build,代码开始构建:自动触发编译和测试以及静态检查,全部通过后,会有审核人员审核合入;

如图已成功合入的:

​​

至此,代码已成功上库合入,如果有编译或测试或静态检查失败,以同样流程修改后重新上库。

提交失败项解决

1.静态检查失败:

​​

失败项查看:

按照失败项本地修改后重新提交

​​

​​

2.编译测试项失败:

编译失败较少,一般提交前本地最好编译测试通过,编译失败查看,点击后面的report会自动下载编译内容;

测试失败查看:

​​

​​

3.解决后重新提交:

git add .

git commit --amend

git push https://gitee.com/码云用户名/xts_acts upup:refs/heads/kernel_lite_20210402_3 --force

说明:

修改后,追加提交,只需要git push时在前面git push 信息的后面加上 --force,这样修改追加提交的内容就会自动同步到前面创建的pr里,不需要重新在创建新的PR,然后评论输入start build,开始构建即可。

PS:对于第一提交只有静态检查失败的情况,本地静态检查修改后,追加提交后,可在评论区先输入static-check,只触发静态检查check,如果静态检查通过,就输入start build开始触发全量构建,如果改完后静态检查还是失败,那么本地再修改,再追加提交,评论输入static-check,直到单独触发静态检查成功后,再输入start build重新构建(而不用等修改后二次构建失败后再修改再构建),这样可以减少因为静态检查修改失败导致的修改和构建的时间。

远端个人仓分支管理:

​​

​​

4.特殊情况:

静态检查无法修改的,比如误报,测试对象本身问题等,在评论去说明情况即可,审核人会审核合入;

码云工具问题导致失败的情况,联系工具的人解决恢复后,评论输入start build  重新触发构建即可。

附件

提供了一些用到的软件安装包,可直接下载使用:

点击下载

​​

相关文章

文章浏览阅读1.4k次。被@Observed装饰的类,可以被观察到属性...
文章浏览阅读1k次。Harmony OS_harmonyos创建数据库
文章浏览阅读1.1k次,点赞25次,收藏23次。自定义组件Header...
文章浏览阅读952次,点赞11次,收藏25次。ArkUI是一套构建分...
文章浏览阅读735次。​错误: 找不到符号符号: 变量 Layout_l...
文章浏览阅读941次,点赞23次,收藏21次。harmony ARKTS b...