基于HarmonyOS Next(5.0.0) 简单demo app实现
简介
OpenHarmony:(开源)
鸿蒙底层内核系统,集成Linux内核+LiteOS,具备底层通信能力,属于鸿蒙底层的架构层。
HarmonyOS:(闭源)
基于OpenHarmony和安卓(AOSP)打造的手机系统,包含UI界面,应用生态绑定安卓,这是目前鸿蒙的主形态。
Harmony OS NEXT:(闭源)
在HarmonyOS基础上剔除安卓(AOSP)后的产品,属于全新的手机系统,是鸿蒙系统的未来形态。
Harmony OS NEXT,也被称为纯血鸿蒙。这个系统就不再兼容安卓生态。
开发简述
!!!部分网站需登录华为开发者账号查看!!!
IDE 下载链接
1 | https://developer.huawei.com/consumer/cn/deveco-studio/ |
ArkTS学习文档
1 | https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-commonlibrary-overview-V5 |
HarmonyOS NEXT 开发文档
1 | ARKUI |
基础概念
应用模型
应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。有了应用模型,开发者可以基于一套统一的模型进行应用开发,使应用开发更简单、高效。
随着系统的演进发展,HarmonyOS先后提供了两种应用模型:
FA(Feature Ability)模型: HarmonyOS API 7开始支持的模型,已经不再主推。
Stage模型: HarmonyOS API 9开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。Stage模型开发可见Stage模型开发概述。快速入门以此为例提供开发指导。
项目基本框架如下
入门指导链接
1 | https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/start-with-ets-stage-V5 |
hdc工具(类别adb)
通过HarmonyOS SDK获取,在SDK的toolchains目录, 直接使用hdc安装、更新HAP。
1 | // 安装、更新,多HAP可以指定多个文件路径 |
开发流程
- 注册成为开发者
在华为开发者联盟网站(https://developer.huawei.com/consumer/cn/)上,注册成为开发者,并完成实名认证,从而享受联盟开放的各类能力和服务。
创建应用
在AppGallery Connect(简称AGC)上,参考创建项目和创建应用完成HarmonyOS应用的创建,从而使用各类服务。
配置安装DevEco Studio
安装最新版DevEco Studio。https://developer.huawei.com/consumer/cn/deveco-studio/
使用DevEco Studio创建应用工程
配置签名信息
使用模拟器和预览器调试无需配置签名信息,使用真机设备调试则需要对HAP进行签名。
实现功能
基本功能
基础页面展示
基础组件使用
网络请求与处理
log处理
使用技术
axio
log4a(https://ericple.atomgit.net/log4a-docs/guide/getting-started)
ArkUI
ArkTs
PreferencesManager
实现过程
page 页面代码编写
main page.ets
以下页面定义了文本显示、文本输入、单选框、按钮等组件;用户输入指定信息,通过PreferencesManager保存数据,待需要时重新读取;定义按钮跳转至下一个页面。
1 | import { PageClass } from '../model/PageModel'; |
PixivImage.ets
本页面通过PreferencesManager获取上个页面用户输入数据通过axio(或系统网络API)发起http请求并获取结果,最终将结果渲染至页面,展示为轮播图中Image。
1 | import { hilog } from '@kit.PerformanceAnalysisKit'; |
http请求发起
以下方法使用系统@kit.NetworkKit发起http get 请求
1 | import { http } from "@kit.NetworkKit"; |
log处理
log初始化
在EntryAbility中onCreate()周期函数编写以下代码
1 | onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { |
log 基础定义
以下代码定义了log基础信息:文件名,多线程日志记录,单个log最大大小,log缓存数目,log上报信息
1 | import { AbstractAppender, FileAppender, Level, TCPSocketAppender } from "@pie/log4a"; |
log 使用
在page页面使用如下
1 | logger: Logger = LogManager.getLogger(this) |
log 输出示例
1 | 10-25 21:41:55.491 2317-2317 A03d00/JSAPP com.examp...lication I [INFO ] 2024-10-25 21:41:55,488 [PixivImage:2] current page config info is {"name":"PixivImage","pageSourceFile":"src/main/ets/pages/PixivImage.ets","data":{"description":"this is PixivImage"}} |
数据存储
- 工具类定义
使用PreferencesManager保存读取数据,示例如下
1 | // 导入包 |
- 工具类使用
1 | // 写入数据 |
轮播图数据处理
基础数据类的定义
1 | // Basic implementation of IDataSource to handle data listener |
数据模型类
1 | import { BasicDataSource } from "./BasicDataSource"; |
通过以下方法使用
1 | // 数据初始化 |
其他
toast
1 | promptAction.showToast({ |
页面跳转
配置问价module.json5更改
1 | { |
在entry/src/main/resources/base/profile处新建route_map.json并写入以下代码
1 | { |
跳转代码
1 | this.pageInfos.pushPathByName('PixivImage', "this.tmp") |
测试效果
安装后效果如下:
log生成路径如下:
1 | /data/app/el2/100/base/com.example.myapplication/haps/entry/files |
See
demo 地址
1 | https://gitee.com/caozhaoqi/ohos_-pixiv_-image |
参考网址
1 | https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5 |
blog
1 | https://caozhaoqi.github.io/ |