0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于凌羽派的OpenHarmony北向应用开发:Hello World 示例应用

福州市凌睿智捷电子有限公司 2026-02-25 10:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本示例是基于 OpenHarmony 开发的第一个简单应用,用于展示如何创建、构建和部署一个基本的应用程序。

环境配置如下所示:

API:18

SDK:OpenHarmony-v5.1.0-Release

代码仓:https://gitee.com/Lockzhiner-Electronics/lingyu-rk3566-openharmony/tree/master/samples/C01_HelloWorld

一、目录结构

helloword/├── entry/ # 主模块目录│ ├── src/main/ # 源代码目录│ │ ├── ets/ # ArkTS 代码目录│ │ │ ├── entryability/# 应用 Ability 入口│ │ │ └── pages/ # 页面组件│ │ └── resources/ # 资源文件目录│ └──build-profile.json5 # 模块构建配置文件├── AppScope/ # 应用全局配置目录├── build/ # 构建输出目录├── oh_modules/ # 依赖库目录└──build-profile.json5 # 应用构建配置文件

二、环境准备

在开始之前,请确保已完成以下准备工作:

安装 DevEco Studio 开发工具

配置 OpenHarmony SDK 环境

准备好 OpenHarmony 设备或模拟

如未完成环境搭建,请参考:开发环境搭建指南

三、快速开始

1. 打开项目

使用DevEco Studio打开项目中的helloword目录:

f503bc00-11f0-11f1-96ea-92fbcf53809c.png系统可能会提示您同步项目,点击 "Trust Project" 信任项目:f5136f4c-11f0-11f1-96ea-92fbcf53809c.png

2. 配置构建文件

检查并更新build-profile.json5文件中的 SDK 版本信息:

{ "app":{ "products":[ { "name":"default", "signingConfig":"default", "compileSdkVersion":18, "compatibleSdkVersion":18, "targetSdkVersion":18, "runtimeOS":"OpenHarmony", "buildOption":{ "strictMode":{ "caseSensitiveCheck":true, "useNormalizedOHMUrl":false } } } ] }}

3. 同步项目配置

修改配置文件后,点击右上角的 "Sync Now" 提示来同步项目:

f526aac6-11f0-11f1-96ea-92fbcf53809c.png确认同步操作:f539fba8-11f0-11f1-96ea-92fbcf53809c.png等待同步完成,并确保没有错误:f54ed4ce-11f0-11f1-96ea-92fbcf53809c.png

4. 编译项目

点击菜单栏中的 "Build" > "Build Project" 或使用快捷键进行项目构建:

f55bcc6a-11f0-11f1-96ea-92fbcf53809c.png

构建成功后,可以在build/default/outputs/default目录下找到生成的 HAP(HarmonyOS Ability Package)文件:

f56f1b12-11f0-11f1-96ea-92fbcf53809c.png

5. 安装到设备

连接设备并通过命令行进入 HDC 工具所在目录

使用以下命令安装应用:

hdc install [hap文件路径]

例如:

hdc install ./entry/default/entry-default-unsigned.hap

安装过程示例:

f57bc04c-11f0-11f1-96ea-92fbcf53809c.pngf58e485c-11f0-11f1-96ea-92fbcf53809c.pngf59b3ac6-11f0-11f1-96ea-92fbcf53809c.pngf5a5f9ac-11f0-11f1-96ea-92fbcf53809c.png

6. 运行应用

在设备上找到已安装的应用图标,点击运行:

f5b3440e-11f0-11f1-96ea-92fbcf53809c.jpg

打开应用后,可以看到显示 "Hello World" 的界面:

f5be3b7a-11f0-11f1-96ea-92fbcf53809c.png

四、核心代码解析

应用入口文件 (EntryAbility.ets)

应用的入口文件是EntryAbility.ets,它继承自 UIAbility 类,是应用的主入口点。其中最重要的方法是onWindowStageCreate,它负责加载应用的主页面:

onWindowStageCreate(windowStage:window.WindowStage):void{ // Main window is created, set main page for this ability hilog.info(DOMAIN,'testTag','%{public}s','Ability onWindowStageCreate'); windowStage.loadContent('pages/Index',(err) =>{ if(err.code) { hilog.error(DOMAIN,'testTag','Failed to load the content. Cause: %{public}s',JSON.stringify(err)); return; } hilog.info(DOMAIN,'testTag','Succeeded in loading the content.'); });}

windowStage.loadContent('pages/Index', ...)这一行代码加载了 Index 页面,即我们应用的主界面。

主界面代码 (Index.ets)

Index.ets是应用的主界面,它实现了动态文本显示和点击切换功能。

数据定义

// 存储多段文本privatemessages:Array = ['Hello World','Welcome to OpenHarmony','Enjoy Coding','Lockzhiner Electronics'];// 当前显示文本的索引@StatecurrentIndex:number=0;// 控制动画状态的辅助状态@StateisFadingOut:boolean=false;

messages数组存储了要显示的文本内容

currentIndex用于跟踪当前显示的文本索引

isFadingOut控制文本的淡入淡出动画效果

UI 结构

RelativeContainer() { Image($r('app.media.logo')) .width(250) .height(75) .alignRules({ center: {anchor:'__container__',align: VerticalAlign.Center }, middle: {anchor:'__container__',align: HorizontalAlign.Center } }) .offset({x:0,y:this.imageOffsetY-200}) Text(this.messages[this.currentIndex]) .fontSize($r('app.float.page_text_font_size')) .fontWeight(FontWeight.Bold) .alignRules({ center: {anchor:'__container__',align: VerticalAlign.Center }, middle: {anchor:'__container__',align: HorizontalAlign.Center } }) .opacity(this.isFadingOut ?0:1) .animation({ duration:300, curve: Curve.EaseInOut }) .onClick(() => { // 点击事件处理逻辑 })}

界面使用RelativeContainer布局,包含一个图片和一个文本组件:

Logo 图片:使用$r('app.media.logo')引用资源文件中的 logo.png 图片

动态文本:从messages数组中根据currentIndex显示当前文本

字体大小:使用$r('app.float.page_text_font_size')从资源配置中获取字体大小

动画效果:通过opacity和animation实现淡入淡出效果

交互逻辑

.onClick(() => { // 触发淡出动画 this.isFadingOut =true; // 在淡出动画结束后更新文本索引并触发淡入 setTimeout(() => { // 更新文本索引 (循环) this.currentIndex = (this.currentIndex +1) %this.messages.length; // 触发淡入动画 this.isFadingOut =false; },300);})

户点击文本时:

触发淡出动画 (isFadingOut设置为 true)

300ms 后更新文本索引 (currentIndex)

触发淡入动画 (isFadingOut设置为 false)

五、项目配置说明

应用签名配置

项目中的签名配置位于build-profile.json5文件中,示例如下:

{ "signingConfigs":[ { "name":"default", "material":{ "certpath":"证书路径", "keyAlias":"密钥别名", "keyPassword":"密钥密码", "profile":"配置文件路径", "signAlg":"签名算法", "storeFile":"密钥存储文件路径", "storePassword":"存储密码" } } ]}

SDK 版本配置

{ "compileSdkVersion":18, // 编译时使用的 SDK 版本 "compatibleSdkVersion":18, // 兼容的最低 SDK 版本 "targetSdkVersion":18 // 目标 SDK 版本}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 开发
    +关注

    关注

    0

    文章

    382

    浏览量

    42263
  • 应用程序
    +关注

    关注

    38

    文章

    3347

    浏览量

    60502
  • OpenHarmony
    +关注

    关注

    33

    文章

    3984

    浏览量

    21458
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HarmonyOS开发:运行hello world

    很多伙伴对于 Openharmony 开发和南向开发感到困惑。南向开发就是硬件开发,这里我就
    发表于 06-12 09:45 996次阅读
    HarmonyOS<b class='flag-5'>开发</b>:运行<b class='flag-5'>hello</b> <b class='flag-5'>world</b>

    [OpenHarmony向应开发] 做一个 loading加载动画

    /from-north-to-north/open-armony-north/tree/master/loading_animation - 作为一个OpenHarmony南向开发者,接触
    的头像 发表于 04-20 11:29 3356次阅读
    [<b class='flag-5'>OpenHarmony</b><b class='flag-5'>北</b><b class='flag-5'>向应</b>用<b class='flag-5'>开发</b>] 做一个 loading加载动画

    鸿蒙OpenHarmony【标准系统编写“Hello World”程序】 (基于RK3568开发板)

    源码],创建RK3568开发板的源码工程。 示例目录 拉取openharmony项目代码,在代码根目录创建sample子系统文件夹,在子系统目录下创建hello部件文件夹,
    的头像 发表于 04-24 17:32 2384次阅读
    鸿蒙<b class='flag-5'>OpenHarmony</b>【标准系统编写“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于RK3568<b class='flag-5'>开发</b>板)

    基于OpenHarmony向应开发Hello World 示例应用

    示例是基于 OpenHarmony 开发的第一个简单应用,用于展示如何创建、构建和部署一个基本的应用程序。 环境配置如下所示: API:18 SDK
    发表于 02-25 11:25

    基于OpenHarmony向应开发:ArkTS语法-数据类型和变量声明

    包含初始值,开发者无需显式指定类型,因为ArkTS规范已列举了所有允许自动推断类型的场景。 以下示例中,两条声明语句都是有效的,两个变量都是string类型: let hi1: string
    发表于 02-26 14:24

    【小RK2206开发板试用体验】2、开箱及hello

    、LZ_E53人体感应模块7、智电子简介:8、小OHOS.NANO 产品参数:【开箱第一印象】:开发板做工用材料以衣丝印都很好。感谢电子发烧友、
    发表于 05-02 14:54

    【小RK2206开发板试用体验】hello world编译与说明

    芯片的flash太大了吧。在hello_world.c中,Hello OpenHarmony!睡眠2秒, Hello World!睡眠1秒,
    发表于 05-07 16:55

    【小RK2206开发板试用体验】OLED显示hello world

    使用小-OLED输出英文“Hello Word!”(详细流程图见附件)参考教程OpenHarmony基础外设开发-oledhttps:/
    发表于 05-12 20:52

    -开源鸿蒙向App控制南向设备应用示例-RGB灯控制

    OpenHarmony标准系统,rgb三色灯APP控制,hdf➕napi➕UI框架,一个开源鸿蒙向应开发,控制南向设备应用。
    发表于 03-22 10:56

    HELLO WORLD!

    HELLO WORLD
    发表于 12-03 16:21 8次下载
    <b class='flag-5'>HELLO</b> <b class='flag-5'>WORLD</b>!

    STM32开发入门(二)——Hello World

    STM32开发入门(二)——Hello World
    发表于 12-07 18:51 12次下载
    STM32<b class='flag-5'>开发</b>入门(二)——<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    开鸿智谷Niobe向应用实验箱通过OpenHarmony兼容性测评

    OpenHarmony向应用实验箱(以下简称“Niobe向应用实验箱”)通过了OpenAtom O
    的头像 发表于 11-30 21:10 1858次阅读

    如何在鸿蒙开发板上输出Hello World

    HarmonyOS 开发快速入门:鸿蒙开发板上输出 Hello World
    的头像 发表于 01-15 16:03 2517次阅读

    OpenHarmony开源项目荣获本期Gitee官方推荐

    近日,我司OpenHarmony开源项目荣获本期Gitee官方推荐。本期Gitee官方推荐不仅是对
    的头像 发表于 11-20 01:04 1528次阅读
    <b class='flag-5'>凌</b>蒙<b class='flag-5'>派</b><b class='flag-5'>OpenHarmony</b>开源项目荣获本期Gitee官方推荐

    基于OpenHarmony向应开发:ArkTS语法-数据类型和变量声明

    一、简介ArkTS是一种设计用于构建高性能应用的编程语言。它在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。环境配置如下所示:API:18SDK:OpenHarmony-v5.1.0-Release
    的头像 发表于 02-26 13:55 491次阅读
    基于<b class='flag-5'>凌</b><b class='flag-5'>羽</b><b class='flag-5'>派</b>的<b class='flag-5'>OpenHarmony</b><b class='flag-5'>北</b><b class='flag-5'>向应</b>用<b class='flag-5'>开发</b>:ArkTS语法-数据类型和变量声明