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.rhkb.cn/news/235838.html

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

相关文章

【软件测试】学习笔记-从0到1:API测试怎么做

这篇文章是API测试的基础,先从0到1设计一个API测试用例,通过这个测试用例,体会到最基本的API测试是如何进行的,并介绍几款常用的API测试工具。 API测试的基本步骤 通常来讲,无论采用什么API测试工具,API测…

用于生成信息提取的大型语言模型综述

论文地址:https://arxiv.org/pdf/2312.17617.pdf 代码仓库:https://github.com/quqxui/Awesome-LLM4IE-Papers 信息抽取(IE)旨在从纯自然语言文本中提取结构化知识(如实体、关系和事件)。最近&#xff0c…

第十一章 Cookie

第十一章 Cookie 1.什么是Cookie2.Cookie的创建3.Cookie的获取4.Cookie值的修改5.谷歌浏览器和火狐浏览器如何查看Cookie6.Cookie的存活设置7.Cookie的path属性8.Cookie练习之免用户名登入 1.什么是Cookie 2.Cookie的创建 下面我看看如何创建Cookie,如何让客户端保…

视频监控设备通过onvif协议接入到视频监控平台

目 录 一、什么是onvif规范 1、onvif的定义 2、onvif的优势 二、AS-V1000监控平台对onvif的支持程度 二、通过onvif接入视频监控设备 1、onvif维护主页面 2、设备发现 3、设备验证 4、设备录入系统 5、通道配置 6、权限分配 三、对onvif设备进行…

AD软件与其他EDA软件工程的问题汇总

1:如何在AD中使用eagle工程 在ad中打不开原理图,要使用导入功能,转化为ad的文件后,就可以打开了 2:打开旧版本的Protel文件 有时候新版本的AD打不开以前Protel的PCB文件,可以在DXP菜单下的Extension下进行配置(Configure&…

回归预测 | Matlab基于SMA+WOA+SFO-LSSVM多输入单输出回归预测

回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测 目录 回归预测 | Matlab基于SMAWOASFO-LSSVM多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 SMAWOASFO-LSSVM回归预测 基于黏菌算法鲸鱼算法向日葵算法优化LSSVM回归预测 其中包含三种改进…

国产系统-银河麒麟桌面版安装wps

0安装版本 系统版本 版本名称:银河麒麟桌面版操作系统V10(SP1) 软件版本 wps个人版2019 1双击安装 1.1卸载自带wps 为什么要卸载没有序列号,授权过期,不是免费的,通过先安装/在升级个人版跳过输入序列号问题等等原因 1.1.1当前自带的wps版本 1.1.2卸载 不卸载无法安装在…

[Kubernetes]9. K8s ingress讲解借助ingress配置http,https访问k8s集群应用

前面讲解了使用Helm部署mysql集群,这里来看看使用Ingress搭建负载均衡功能 1.介绍 功能类似 Nginx ,可以根据域名、路径把请求转发到不同的 Service , Ingress 为外部访问集群提供了一个 统一 入口, 避免 了 对外暴露集群端口 ,可以配置 https,http访问集群应用,接下来看看如…

React.Children.map 和 js 的 map 有什么区别?

JavaScript 中的 map 不会对为 null 或者 undefined 的数据进行处理,而 React.Children.map 中的 map 可以处理 React.Children 为 null 或者 undefined 的情况。 React 空节点:可以由null、undefined、false、true创建 import React from reactexport …

参数小,性能强!开源多模态模型—TinyGPT-V

安徽工程大学、南洋理工大学和理海大学的研究人员开源了多模态大模型——TinyGPT-V。 TinyGPT-V以微软开源的Phi-2作为基础大语言模型,同时使用了视觉模型EVA实现多模态能力。尽管TinyGPT-V只有28亿参数,但其性能可以媲美上百亿参数的模型。 此外&…

【Docker基础二】Docker安装Mysql8

下载镜像 安装mysql(版本:8.0.35) # 拉取镜像 docker pull mysql:8.0.35 # 查看镜像是否已经下载 docker images 创建挂载目录 # 宿主机上创建挂载目录 (可以不创建,docker run -v配置了挂载目录,docker会自动…

Nginx配置反向代理实例二

Mac 安装Nginx教程 Nginx配置反向代理实例一 提醒一下:下面实例讲解是在Mac系统演示的; 反向代理实例二实现的效果 使用nginx 反向代理,根据访问的地址跳转到不同端口的服务中 nginx 监听端口为81; 访问地址1:http:/…

2022-ECCV-Explaining Deepfake Detection by Analysing Image Matching

一、研究背景 1.大量工作将深度伪造检测作为一个二分类任务并取得了良好的性能。 2.理解模型如何在二分类标签的监督下学习伪造相关特征仍难是个艰巨的任务。 3.视觉概念:具有语义的人脸区域,如嘴、鼻子、眼睛。 二、研究目标 1.验证假设,并…

你了解计算机网络的发展历史吗?

1.什么是计算机网络 计算机网络是指将一群具有独立功能的计算机通过通信设备以及传输媒体被互联起来的,在通信软件的支持下,实现计算机间资源共享、信息交换或协同工作的系统。计算机网络是计算机技术与通信技术紧密结合的产物,两者的迅速发展…

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析

Flink Window 常见需求背景 需求描述 每隔 5 秒,计算最近 10 秒单词出现的次数 —— 滑动窗口 每隔 5 秒,计算最近 5 秒单词出现的次数 —— 滚动窗口 关于 Flink time 种类 TimeCharacteristic ProcessingTimeIngestionTimeEventTime WindowAssign…

Django(六)

员工管理系统(用户管理&#xff09; {% extends layout.html %}{% block content %}<div class"container"><div style"margin-bottom: 10px"><a class"btn btn-success" href"#"><span class"glyphicon gl…

ADOV路由和DSR路由matlab对比仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 ADOV路由&#xff08;Ad hoc On-demand Distance Vector Routing&#xff09; 4.2 DSR路由&#xff08;Dynamic Source Routing&#xff09; 5.完整程序 1.程序功能描述 ADOV路由和DSR…

Vue3-44-Pinia- 安装步骤

介绍 本文介绍 在 vue3 中 安装 Pinia 的步骤 安装步骤 1、npm 安装 npm install pinia》 安装完成后可以看到 package.json 中添加了 pinia 的依赖信息 2、main.ts 中配置 // 引入 vue实例创建方法 import { createApp } from vue// 引入pinia import { createPinia } fro…

【AIGC】一组精美动物AI智能画法秘诀

如何使用AI绘画&#xff0c;从以下角度&#xff0c;依据表格内容梳理&#xff0c;表格如下&#xff1a; 外貌特征物种姿势特征描述场景风格技术描述小巧可爱幼小浣熊倚在桌子上具有人形特征中世纪酒馆电影风格照明8k分辨率细节精致毛茸茸手持咖啡杯Jean-Baptiste Monge的风格蓝…

C++ n皇后问题 || 深度优先搜索模版题

n− 皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n &#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n 。 …