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.niftyadmin.cn/n/5304825.html

相关文章

大数据领域相关术语总结

目录 01、PGC02、UGC03、CTR04、CVR05、留存率06、UV07、PV08、DAU09、ROI10、KPI11、RFM12、SLA13、DQC 01、PGC PGC 是 Professionally Generated Content 的缩写,意为专业生产的内容。PGC 的内容通常由专业的内容创作者、媒体机构或者公司进行创作和生产&#x…

Centos 7虚拟机ip地址配好后经常丢失

原因是Centos7有Networkmanager和network.service两种网络管理工具 运行 systemctl stop Networkmanager systemctl disable Networkmanager 然后重启服务 systemctl restart network systemctl status network在这里插入代码片

MySQL如何从数据中截取所需要的字符串

MySQL如何从数据中截取所需要的字符串 背景 有这样的一个场景,我想从我的表里面进行数据截取,我的数据内容大致如下: 张三-建外SOHO-2-16 POA 20210518.pdf 我想获取数据中的:20210518这一日期部分,需要如何实现? 解…

Java+springboot+vue智慧校园源码,数据云平台Web端+小程序教师端+小程序家长端

技术架构: Javaspringbootvue element-ui小程序电子班牌:Java Android演示自主版权。 智慧校园电子班牌人脸识别系统全套源码,包含:数据云平台Web端小程序教师端小程序家长端电子班牌 学生端。 电子班牌系统又称之为智慧班牌&am…

分布式【zookeeper面试题23连问】

1. ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终&#x…

netty使用http和webSocket

1&#xff1a;pom.xml配置 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.73.Final</version></dependency>2&#xff1a;Netty作为HTTP服务器 import io.netty.bootstrap.Server…

python毕设选题 - flink大数据淘宝用户行为数据实时分析与可视化

文章目录 0 前言1、环境准备1.1 flink 下载相关 jar 包1.2 生成 kafka 数据1.3 开发前的三个小 tip 2、flink-sql 客户端编写运行 sql2.1 创建 kafka 数据源表2.2 指标统计&#xff1a;每小时成交量2.2.1 创建 es 结果表&#xff0c; 存放每小时的成交量2.2.2 执行 sql &#x…

深情回忆VB编程之路

深情回忆VB编程之路 在上世纪90年代末&#xff0c;我与编程世界的初次邂逅始于QBasic这一古老而亲切的语言。那时的编程环境虽然简陋&#xff0c;但却蕴藏着无穷的可能性&#xff0c;每个字符仿佛跳跃着生命&#xff0c;在黑色屏幕中编织出我对编程世界最初的憧憬和梦想。 时光…