OpenHarmony从头到尾实测
1.下代码
通过官方提供的多种途径,我比较推荐使用repo的方式。
下载代码
方式一(推荐):通过repo下载
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verifyrepo sync -c
2.配置环境
环境配置内容很多,比如需要python3 hc-gen,7zip等工具,按照入门指南安装或者docker都可以。
入门指南
3.编译
编译方法 安装hb并按照hb的编译方式可以简单的编译出镜像。
4.调试
调试按照入门指南可完成简单的Helloworld的调试。
使用VSCODE+插件或者使用HITOOL工具可进行烧录。HITOOL工具需要注册后下载。
HITOOL下载路径
5.上库
1.代码上库
- gitee上先fork自己要上库的仓,如果有多个,就需要fork多个,查看自己下载这个仓的链接
-
在kernel/liteos_a目录下,添加fork仓库为新的远端仓库,git remote -v查看添加情况:
git remote add --mirror=fetch wliteosa https://gitee.com/five-yuan/kernel_liteos_a.git
- 使用git add . ; git commit -m "des"; git push wliteosa HEAD:master 就能把你的代码推到自己fork的仓里了。
- 如果你再次修改代码,需要git push wliteosa HEAD:master -f 强制推送到你远端的仓,wliteos代表远端仓,HEAD:master代表的远端分支,如果你要何如release分支,本地代码也是release的情况下,通过HEAD:release也能推送到release分支。
2.工具链更新
- llvm的工具是依赖musl库函数的,如果直接修改musl的代码,并不能立即让工具链更新。其中第三个脚本需要python2的环境执行。目录有时候会变更,查找脚本所在位置即可。
-
// 在prebuilts\lite\sysroot\build\liteos目录下执行下面三个命令,完成musl的编译sh linux_header_install.shsh thirdparty_headers.shsh build_musl_clang.sh 最后一步编译musl需要用python2 来编译
-
如果要临时使用python2来执行第三个脚本,可以使用虚拟环境工具转换下。命令如下:
virtualenv -p python2 py2 //初始化环境. py2/bin/activate //激活环境,可以执行脚本了deactivate //执行完退出环境
-
生成usr目录下(\build\liteos\usr\lib\arm-liteos)的libc.so及libc.a都需要拷贝到sysroot下的usr目录下,目前有16个文件。
-
拷贝完即可执行全量编译。
6.合入
提交pr到网站上,在自己fork的仓内,建立pull request 写好描述,合入OpenHarmony分支,提示可自动合入代表无冲突,不能合入则代表当前有冲突,把分支更新下即可。
提交完PR,用issue关联所有PR,在pr下回复 start build即可完成构建及扫描。之后在fork的仓内修改代码,都需要重新触发start build。之后找对应的commiter合入代码即可。