OpenHarmony—开发环境搭建

背景

因为没有实体的开发硬件,且不想破坏原有的Linux环境,所以这里基于 Docker + QEMU 搭建开发环境

  • 宿主机Linux系统
  • 命令行方式
  • Docker
  • QEMU 6.2

Docker环境准备

安装Docker

在Ubuntu中,可以使用下面的命令来安装Docker:

sudo apt install docker.io

获取Docker镜像

#获取小型系统镜像docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2#获取轻量系统镜像docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2#获取标准系统镜像docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2

运行构建环境

# 运行小型系统Docker构建环境
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_small:3.2
# 运行轻量系统Docker构建环境
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_mini:3.2
# 运行标准系统Docker构建环境
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2

其他

  • Docker需要root权限
  • 注意 Docker 的网络模式
  • 其他Docker相关的操作可自行网上查阅

获取OH源码

这里以获取 master 分支为例,如要下载其他分支,-b 换成其他分支名即可

前提条件

1.注册码云gitee帐号,注册码云SSH公钥(不使用ssh的话可省略)

2.安装git和git-lfs并配置用户信息

sudo apt-get update
sudo apt-get install git git-lfs
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store

3.安装repo

下述命令中的安装路径以”~/bin”为例,请用户自行创建所需目录

mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo 
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests

将repo添加到环境变量。

vim ~/.bashrc               # 编辑环境变量
export PATH=~/bin:$PATH     # 在环境变量的最后添加一行repo路径信息
source ~/.bashrc            # 应用环境变量

下载

方式一(推荐):通过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'

执行prebuilts

在源码根目录下执行prebuilts脚本,安装编译器及二进制工具,这点很重要,不然会报类似的错误:please execute preload_download.sh

bash build/prebuilts_download.sh

构建编译

通过尝试各种分支,各个demo,最后确定使用OpenHarmony-3.0-LTS 分支,ohemu下的qemu_small_system_demo

命令行方式

#python方式
python3 build.py -p {product_name}@{company}
#Release版本 :
./build.sh --product-name {product_name}
#Debug版本 :
./build.sh --product-name {product_name} --gn-args is_debug=true --build-target {target_name}
./build.sh --product-name qemu-arm-linux-min --ccache --jobs 4

hb方式

hb是OpenHarmony的命令行工具,用来执行编译命令,推荐使用这种方式

安装及卸载

#安装
python3 -m pip install --user ohos-build
#卸载
python3 -m pip uninstall ohos-build  
#以上安装如果还不行,在源码根目录运行如下命令安装hb并更新至最新版本。 有些版本为 build/lite
python3 -m pip install --user build/hb
  • 编译构建
  • #选择对应的构建目标
    hb set
    #查看当前设置信息
    hb env
    #编译
    hb build
    #clean
    hb clean

    QEMU

    QEMU 我没有安装在Docker里,是安装在宿主机上的,Docker里面的环境比较单一,缺少很多组件和包,

    所以这也导致 无法直接使用Openharmony根目录下的qemu-run脚本来运行QEMU

    安装QEMU

    这里是手动安装的openharmony推荐的6.2版本,不同的版本可能会有些问题。

    编译安装QEMU和其他的包的过程都是差不多,具体如下:

    1.安装依赖(Ubuntu 18+)

sudo apt install build-essential zlib1g-dev pkg-config libglib2.0-dev binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev virtualenv flex bison
  • 2.获取源码

  • wget https://download.qemu.org/qemu-6.2.0.tar.xz

    3.编译安装

  • #编译
    tar -xf qemu-6.2.0.tar.xz
    cd qemu-6.2.0
    mkdir build && cd build
    ../configure --prefix=qemu_installation_path
    make -j16
    #安装
    make install
    #添加环境变量, 最末尾加入: export PATH=$PATH:qemu_installation_path
    vim ~/.bashrc

    启动QEMU

    每个版本或分支可能启动的脚本的位置不太一样,但大致路径都是差不多的

    例如 qemu_small_system_demo

    Release或master:

    ./vendor/ohemu/qemu_small_system_demo/qemu_run.sh

    OpenHarmony-3.0-LTS:

    ./vendor/ohemu/qemu_small_system_demo/patches/qemu-run

    有些启动脚本需要做点稍微的修改,主要是传入的参数

    退出QEMU

    按下Ctrl-A + x可退出qemu虚拟环境

    各种问题

  • 文档各种不匹配,对不上,未更新;各个分支版本差异较大,错误
  • 提示缺少相关组件或包
apt-get install dosfstools mtools 
  • 运行 sudo + 命令,显示找不到命令
  • sudo默认的配置文件下只是指定三个命令位置,如下:
Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin 
  • 分支问题
  • 开始使用 OpenHarmony-v3.2-Release分支,报如下错误:
[ERR][KProcess:SystemInit]Failed to find file system jffs2
[ERR][KProcess:SystemInit]Failed to mount /, rootDev /dev/cfiflash0, errno 19: No such device
[ERR][KProcess:SystemInit]mount rootfs error!

在官方仓库OpenHarmony / device_qemu的 Issues 看到了成员回复:

small模拟系统未跟踪版本release,原因是问题太多,达不到能正式释放的水平。
2  这是个纯粹社区推动的项目,希望、需要共同参与推动
qemu项目是个社区项目,现在最大的问题是缺少开发者和维护者,非常期望参与解决问题~

大致意思就是qemu模拟的small等系统问题太多,达不到release的程度~~

换成 master 分支,报如下错误:

[OHOS ERROR] [606/783] ACTION //kernel/liteos_a:make(//build/lite/toolchain:linux_x86_64_ohos_clang)
[OHOS ERROR] FAILED: obj/kernel/liteos_a/make_build_ext_components.txt ...

换 OpenHarmony-3.0-LTS 分支后,勉强可以使用qemu_small_system_demo了

  • 运行qemu回环设备报错
xxx@xxx-PC:~/WorkSpace/OpenHarmony$ ./vendor/ohemu/qemu_small_system_demo/qemu_run.sh 
Start making out/smallmmc.img...记录了1+0 的读入
记录了1+0 的写出
104857600 bytes (105 MB, 100 MiB) copied, 0.0651924 s, 1.6 GB/s
losetup: out/smallmmc.img:设置回环设备失败: 设备或资源忙

分析qemu_run启动脚本和losetup,这个主要的问题是在第一次运行的时候,使用loop设备后,中间的过程报错退出了,未卸载loop设备,导致下次使用该loop设备一直在占用,手动卸载后OK了

以上的内容主要介绍了OpenHarmony—开发环境搭建知识点,考虑到有想要学习更多的OpenHarmony开发的小伙伴

在这里我特邀了行业的几位大佬,花费好几个星期时间,为大家整理一套《OpenHarmony4.0&Next》思维导图每部分都对应OpenHarmony4.0&Next开发者需要掌握的技术点,并加以PDF总结,希望能帮助到想要技术提升进入大厂的朋友或正在面试大厂的朋友做一个技术上的储备:

其次是现在, 考虑到市场上还没有系统性的学习资料,所以就整理了一份《鸿蒙 (Harmony OS)开发学习手册》我特意整理了PDF文档方式,展现给大家参考:《做鸿蒙应用开发到底学习些啥?》

《鸿蒙 (Harmony OS)开发学习手册》

入门必看

1. 应用开发导读(ArkTS)

2. 应用开发导读(Java)

3.......

  

HarmonyOS 概念

1. 系统定义

2. 技术架构

3. 技术特性

4. 系统安全

5......

  

如何快速入门?《鸿蒙开发学习指南》

1. 基本概念

2. 构建第一个ArkTS应用

3. 构建第一个JS应用

4. ……

  

开发基础知识

1. 应用基础知识

2. 配置文件

3. 应用数据管理

4. 应用安全管理

5. 应用隐私保护

6. 三方应用调用管控机制

7. 资源分类与访问

8. 学习ArkTS语言

9. ……

  

基于ArkTS 开发

1. Ability开发

2. UI开发

3. 公共事件与通知

4. 窗口管理

5. 媒体

6. 安全

7. 网络与链接

8. 电话服务

9. 数据管理

10. 后台任务(Background Task)管理

11. 设备管理

12. 设备使用信息统计

13. DFX

14. 国际化开发

15. 折叠屏系列

16. ……

  

更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙基础入门开发宝典!》

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“华为杯”杭州电子科技大学2023新生编程大赛---树

题目链接 Problem Description 给定一棵包含 n 个节点的带边权的树,树是一个无环的无向联通图。定义 xordist(u,v) 为节点 u 到 v 的简单路径上所有边权值的异或和。 有 q 次询问,每次给出 l r x,求 ∑rilxordist(i,x) 的值。 Input 测试…

vuepress2 打包后刷新页面侧边栏丢失问题

问题:打包后刷新页面时侧边栏丢失问题 原因:node版本问题 文档中写着依赖环境 Node.js v18.16.0 我当时的版本是 16.19.0 我应该算是遇到了两个问题 【刷新后侧边栏消失】【刷新后页面内容加载错误】 我看了控制台,侧边栏不出现的原因&a…

我的隐私计算学习——联邦学习(1)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成。 六、联邦学习 笔记分享 | 组队学习密码学 —— 密码学在联邦学习中的应用 ​ 根据前文已经知道,隐私计算与联邦学习的结合是当前的一个热点,联邦学习原本…

Spring——Spring IOC(2)

1.Spring中的工厂类 1.1 ApplicationContext ApplicationContext的实现类,如下图: ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件FileSystemXmlApplicationContext:加载本地磁盘下 Spring 的配置文件 1.2 B…

excel公式名称管理器

1.问题 在日常使用excel的时候,发布一个表格文件,需要限制表格的某列或某行只能从我们提供的选项中选择,自己随便填写视为无效,如下图所示,上午的行程安排只能从"在岗"、"出差"、"病假"…

【BIAI】Lecture2-Visual system

Lecture 2 - Visual System 专业术语 central nervous system(CNS) 中枢神经系统 pupil 瞳孔 iris 虹膜 cornea 角膜 retina 视网膜 fovea 中央凹 或 黄斑区 kens 晶状体 optic nerve 视神经 Bipolar cells 双极细胞 Ganglion cells 神经节细胞 rods 杆状细胞 cones 锥状细胞 …

计算机创新协会冬令营——暴力枚举题目04

说句实话,单纯的暴力枚举题目太难找了┭┮﹏┭┮,接招吧~~ 题目 2094. 找出 3 位偶数 - 力扣(LeetCode) 给你一个整数数组 digits ,其中每个元素是一个数字(0 - 9)。数组中可能存在重复元素。…

入行IC,该如何规划学习和成长路线?

不同学历背景的同学会有不同的道路选择。 微电子/集成电路专业的科班生,已经拥有了理论知识基础,不需要再额外学习这一部分。所以精力主要聚焦在流片项目和集创赛一类的赛事上,重点在于如何拿到更好的Offer。 而电子大类以及其他相关专业的…

【LeetCode-剑指offer】--19.验证回文串II

19.验证回文串II 方法:双指针 首先考虑如果不允许删除字符,如何判断一个字符串是否是回文串。常见的做法是使用双指针。定义左右指针,初始时分别指向字符串的第一个字符和最后一个字符,每次判断左右指针指向的字符是否相同&#…

机器学习原理到Python代码实现之LinearRegression

Linear Regression 线性回归模型 该文章作为机器学习的第一篇文章,主要介绍线性回归模型的原理和实现方法。 更多相关工作请参考:Github 算法介绍 线性回归模型是一种常见的机器学习模型,用于预测一个连续的目标变量(也称为响应变…

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品|极新&北京电子商务协会 直播电商在经过爆发式增长后,从业者不断涌入,竞争日趋激烈,行业发展必然将会进入到一个缓慢增长阶段。直播…

【PCB专题】Allegro封装更新焊盘

在PCB封装的绘制中,有时会出现需要更新焊盘的情况。比如在制作封装的过程中发现焊盘做的不对而使用PAD_Designer重新更新了焊盘。 那在PCB中如何更新已经修改过的焊盘呢? 打开封装,选择Tools->Padstack->Refresh... 选择Refresh all …