HarmonyOS开发实例:【数字管家app】

一.概述

本应用是基于RK3399开发板,使用OpenHarmony3.1-Release开发的应用。通过OpenHarmony的分布式技术,使多人能够一起画画。

1.应用运行效果图:

输入图片说明

2.分布式画板使用示意图

输入图片说明

如上图所示,用户1、用户2在各自本地端进行绘制,将当前的图形保存到分布式文件中。远程端当接到分布式数据库发生改变时,获取分布式数据库存储的文件名,然后进行加载图形文件,显示本地端绘制的图形。

3.涉及OpenHarmony技术特性

eTS UI 分布式流转
鸿蒙参考文档:qr23.cn/AKFP8k

4.基础信息

开发平台 系统类型 系统版本

软通“扬帆”富设备开发板 标准系统 3.1Release

二.快速上手

1.应用安装包

1.1 硬件环境准备
  • 预装windows系统的PC机
  • 扬帆RK3399开发板
  • 开发板专用12V电源适配器
  • USB公对公数据连接线
  • USB外接摄像头
  • HDMI显示器
2.1 开发环境准备
  • 下载DevEco Studio 3.0 Beta1及以上版本
  • 配置OpenHarmonySDK
  • 创建OpenHarmony工程
  • 配置OpenHarmony应用签名信息
  • 安装运行OpenHarmony应用
3.1 功能开发
3.1.1 目录

在src/main/resources/目录下,根据不同的资源类型,定义资源文件。

{ "name":  "brush_width","value":  "画笔宽度"
}
3.1.2 引用资源

在有对应page的ets文件中,可直接通过$r()引用。 关键代码

Text($r('app.string.brush_width'))

主界面,设备流转:index.ets

图层管理:view/layer.ets

设置:view/setting.ets

画板界面:view/canvas.ets

3.1.3 系统镜像编译及烧录
3.1.3.1 Linux编译服务器基础环境准备

开发基础环境由windows 工作台和Linux 编译服务器组成。windows 工作台可以通过samba 服务或ssh 方式访问Linux编译服务器。其中windows 工作台用来烧录和代码编辑,Linux编译服务器用来编译OpenHarmony代码,为了简化步骤,Linux编译服务器推荐安装Ubuntu20.04。

3.1.3.2 安装和配置Python

搜狗高速浏览器截图20240326151344.png

打开Linux终端,输入如下命令,查看python版本号,需要使用python3.7以上版本,否则参考 系统基础环境搭建。

鸿蒙文档+mau123789可以直接拿取python3 --version;

安装并升级Python包管理工具。

     sudo apt-get install python3-setuptools python3-pip -ysudo pip3 install --upgrade pip
3.1.3.3 安装LLVM

下载LLVM工具。

 解压LLVM安装包至~/llvm路径下。

tar -zxvf llvm.tar -C ~/

设置环境变量。

   vim ~/.bashrc将以下命令拷贝到.bashrc文件的最后一行,保存并退出。export PATH=~/llvm/bin:$PATH

使环境变量生效。

    source ~/.bashrc
3.1.3.4 安装hc-gen

打开Linux编译服务器终端。

下载hc-gen工具。点击下载地址下载。

解压hc-gen安装包到Linux服务器~/hc-gen路径下。

tar -xvf hc-gen-0.65-linux.tar –C 

设置环境变量。

vim ~/.bashrc

将以下命令拷贝到.bashrc文件的最后一行,保存并退出。

export PATH=~/hc-gen:$PATH

使环境变量生效。

   source ~/.bashrc
  • 安装编译依赖基础软件(仅Ubuntu 20+需要)
  sudo apt-get install build-essentialsudo apt-get install gccsudo apt-get install g++sudo apt-get install make sudo apt-get install zlibsudo apt-get install libffi-dev
.1.3.5 源码下载&&编译准备

环境搭完后,就该准备代码了。

下载repo

curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repochmod a+x /usr/local/bin/repopip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
3.1.3.6 下载OpenHarmony源码和编译
  • 代码下载

ssh方式:

repo init -u ssh://git@gitee.com/openharmony-is/manifest.git -b master -m devboard_rk3399.xml --no-repo-verify

http方式:

repo init -u  https://gitee.com/openharmony-is/manifest.git -b master -m devboard_rk3399.xml --no-repo-verify
repo sync -crepo forall -c 'git lfs pull'bash build/prebuilts_download.sh
  • 打patch
bash device/rockchip/product/patch.sh
  • 编译
./build.sh --product-name rk3399 –ccache
  • 编译结果

编译产生boot.img在目录out/KERNEL_OBJ/kernel/src_tmp/linux-4.19 中。

编译产生vender.img、system.img 和userdata.img 在目录

out/rk3399/packages/phone/images 中。

3.1.3.7 烧录
  • 系统环境

window7/windows10。

  • 驱动安装包

瑞芯微软件助手安装包,需解压安装。

  • 烧录工具

瑞芯微开发工具。

  • 烧录镜像

debian_update.img。

  • 烧录前准备
  1. 拿到开发板后,第一次烧录OpenHarmony系统前,要先进行整体擦除后,对系统分区,再烧录镜像。
  2. 擦除flash
  3. 点击升级固件按钮。
  4. 选择固件。
  5. 打开并选择烧录镜像。
  • 进入烧录模式

    擦除flash前,要先使板子进入烧录模式,方法如下:

  1. 板子上电。
  2. 板子在烧录OpenHarmony系统前,如果有其他系统,上电后会显示发现一个ADB设备。
  3. 先长按uboot按钮,再按一次reset按钮后松开,等待板子显示“发现一个LOADER设备”,板子进入烧录模式。
  4. 点击擦除flash按钮,开始擦除。

擦除完成后,显示如下:

  • 第一次烧录

    第一次烧录OpenHarmony系统,要先加载全部镜像。

    进入下载镜像页面。

    在空白处点击右键,选择导入配置,选择ohos.cfg。

    导入配置表后如下图所示

  • 烧录OpenHarmony镜像

​ 烧录OpenHarmony镜像,只需选中boot、vendor、system、userdata,其他分区不选中。

​ boot、vendor、system和userdata对应的是编译出的img

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

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

相关文章

Stack_经典例题_最小栈

题目: 题目分析: 在满足栈的特点的同时,还需要设计一个接口,就是获取栈内的最小元素! 解题思路: 因为是栈,所以不好遍历的!所以这题的方式不能采用遍历的方式,如果采取…

分布式锁-redission可重入锁原理

5.3 分布式锁-redission可重入锁原理 在Lock锁中,他是借助于底层的一个voaltile的一个state变量来记录重入的状态的,比如当前没有人持有这把锁,那么state0,假如有人持有这把锁,那么state1,如果持有这把锁的…

DELL VMWare R730 R740 R750 iDRAC配置与ESXI安装部署

VMware vCenter Server与ESXI版本兼容对照表 ESXI下载 VMware vcenter7.0许可证 Esxi7.0许可证 VSAN 7.0许可证 DELL VMWare R730 R740 R750 iDRAC配置与ESXI安装部署 vmware vcenter server 7.0 安装教程 1. 进入BIOS界面配置iDRAC网络 开机按F10,开机点击F10选择…

国家统计局行政区划获取及入库ES实践

我们先看下最终效果: 1. ES索引新建 PUT administrative_division {"mappings": {"properties": {"province": {"type": "keyword"},"province_code": {"type": "keyword"},&q…

docker安装oracle

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&…

C++从入门到精通——类和对象(中篇)

1. 类的6个默认成员函数 如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。 class Date {}; 2. 构造函数 2.1 概念 对于以下的日期类&am…

Linux下使用C语言实现高并发服务器

高并发服务器 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 使用多进程并发服务器时要考虑以下几点: 父进程最大文件描述个数(父进程中需要close关闭accept返回的新文件描述符)系统内创建进程个数(与内存大小相关)进程创建过多是否降低整体…

AI电商图制作解决方案助力企业高效营销

电商行业蓬勃发展,一张吸睛的电商海报或宣传视频往往能够成为企业吸引顾客、提升品牌形象的利器。然而,传统电商图制作流程繁琐,需要投入大量时间和人力资源,成为众多企业面临的难题。为了解决这一问题,美摄科技凭借其…

前端学习之路-项目实战(1)

每日吐槽:有一个奇怪的问题,怎么一眼看出一个求职者是否是培训班出来的,有的求职上写着,希望大家坦诚一点,but,你这艘诚实的泰坦尼克号终究还是撞上了社会阴暗面的冰山,OMG,不让包装…

Leetcode 239. 滑动窗口最大值和Leetcode 347. 前 K 个高频元素

目录标题 Leetcode 239. 滑动窗口最大值题目描述C语言代码和题解解题思路 Leetcode 347. 前 K 个高频元素题目描述C语言题解和思路解题思路 Leetcode 239. 滑动窗口最大值 题目描述 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最…

Tensorflow(GPU版本配置)一步到位!!!

Tensorflow(GPU版本配置)一步到位!!! CUDA安装CUDA配置Tensorflow配置常见的包 CUDA安装 配置了N次的Tensorflow–Gpu版本,完成了踩坑,这里以配置Tensorflow_gpu 2.6.0为例子进行安装 以下为ten…

数学之光照亮AI之路:探究数学背景在人工智能学习中的优势

在科技日新月异的今天,人工智能(AI)已成为引领未来发展的重要力量。然而,对于许多初涉此领域的学习者来说,AI的复杂性和深度常常让他们望而却步。有趣的是,那些数学基础扎实的人在学习AI时,往往…

【canvas】canvas基础使用(六):图形阴影

简言 学习使用canvas的阴影属性。 阴影 shadowBlur 阴影模糊 CanvasRenderingContext2D.shadowBlur 是 Canvas 2D API 描述模糊效果程度的属性;它既不对应像素值也不受当前转换矩阵的影响。默认值是 0。 语法: ctx.shadowBlur level; 选项值&#x…

Python中的错误处理 - 使用try、except、else和finally进行解释,并附带代码示例

最近,我的经理委派我创建一个自动报告。我设计的报告非常简单。它包括一些来自数据库的数字和一些基本的数学运算。我很兴奋最终可以向公司展示我的惊人的Python技能。 我完成并交付了产品。一切都很顺利。至少,直到大约两周后。我的报告由于除以零错误…

Linux使用C语言实现Socket编程

Socket编程 这一个课程的笔记 相关文章 协议 Socket编程 高并发服务器实现 线程池 网络套接字 socket: (电源)插座(电器上的)插口,插孔,管座 在通信过程中, 套接字是成对存在的, 一个客户端的套接字, 一个…

PUBG绝地求生更新后无法启动/更新后卡顿?3个解决方法分享

在绝地求生中,团队协作也是非常重要的一点。咱们可以运用strong标签来着重“团队协作”。与队友紧密配合、彼此援助,一起拟定战术和战略,将会大大提高在游戏中获得成功的几率。在绝地求生中获得成功并不简单,但只需咱们把握了一些…

linux的io的知识大全

C语言的io操作 写文件 #include<stdio.h> #include<string.h>#define FILE_NAME "log.txt" int main() {FILE * fp fopen(FILE_NAME, "w");if(fpNULL){printf("fopen error!\n");}const char* msg "hello zk\n";int c…

北邮通报学生联名举报导师事件,导师PUA学生,学生只有压榨它

诸葛亮为激司马懿出战&#xff0c;派使者送给他女人的衣服&#xff0c;司马懿欣然接受后问使者&#xff1a;“你们家丞相都管些什么呀&#xff1f;” 使者回答道&#xff1a;“我们丞相从行军布阵到饮食起居&#xff0c;无一不亲自过问。” 司马懿听到心中大喜&#xff0c;心想…

【ARM Coresight SOC-600 -- ETF Flushin无法接收到 CTI 发出 triggerout 信号问题分析】

请阅读【嵌入式开发必备专栏 】 文章目录 问题背景波形分析问题背景 在做验证的时候,准备通过 CTI2 给 SOC 上的 ETF 触发一个 flushin 动作,然后stop住 formatter,结果一致发现没有成功,接下来就是分析的过程了。 首先检查了代码,没有发现代码有什么问题(一般自己写的代…

学习大数据,所需要的java(Maven)基础(1)

文章目录 使用Maven的优势第三方jar包添加第三方jar包获取jar包之间的依赖关系jar包之间的冲突处理将项目拆分成多个工程模块 实现项目的分布式部署Maven是什么自动化构建工具构建的概念构建环节自动化构建 Maven如何使用安装Maven核心程序maven联网问题Maven中的settings配置在…