鸿蒙极速入门(二)-开发准备和HelloWorld
一、开发准备
本篇博客基于的系统版本:华为官方HarmonyOS版本3.1、OpenHarmony版本4.0Beta
开发语言
- ArkTS语言(推荐)
- JS语言(支持)
- Java语言(已放弃支持)
从Harmony4.0开始,官方主推ArkTS语言,且不再支持Java语言
UI框架-方舟开发框架(ArkUI框架)
个人理解:类似iOS的UIKit/SwiftUI,或者安卓的Jetpack的UI组件/Compose
开发范式
方舟开发框架(ArkUI框架)针对不同目的和技术背景的开发者提供了两种开发范式:
- 声明式开发范式:ArkTS的声明式开发范式
- 类Web开发范式:兼容JS的类Web开发范式
开发范式名称 | 语言生态 | UI更新方式 | 适用场景 | 适用人群 |
---|---|---|---|---|
声明式开发范式 | ArkTS语言 | 数据驱动更新 | 复杂度较大、团队合作度较高的程序 | 移动系统应用开发人员、系统应用开发人员 |
类Web开发范式 | JS语言 | 数据驱动更新 | 界面较为简单的程序应用和卡片 | Web前端开发人员 |
个人理解:类似iOS的SwiftUI(声明式)和UIKit,或者安卓的JetpackCompose(声明式)和JetpackUI
应用模型
概念
- 官方解释:应用模型是HarmonyOS为开发者提供的应用程序所需能力的抽象提炼,它提供了应用程序必备的组件和运行机制。
- 个人理解:开发脚手架+底层运行引擎,类似开发模板
模型
- Stage模型:HarmonyOS 3.1 Developer Preview版本开始新增的模型,是目前主推且会长期演进的模型。在该模型中,由于提供了AbilityStage、WindowStage等类作为应用组件和Window窗口的“舞台”,因此称这种应用模型为Stage模型。
- FA(Feature Ability)模型:HarmonyOS早期版本开始支持的模型,已经不再主推。
Stage和FA的区别
技术选型
根据官方文档中的介绍,目前合适的开发技术栈组合:
Stage模型 + 声明式开发范式 + ArkUI框架 + ArkTS语言
二、环境搭建
下载DevEcoStudio
HarmonyOS 3.1 Release (推荐)
目前华为官方HUAWEI DevEco Studio开放下载的版本为3.1 Release,支持到HarmonyOS4.0
下载地址:HUAWEI DevEco Studio 3.1 Release
OpenHarmony 4.0 Beta2
- 华为从HarmonyNext版本开始,也就是HarmonyOS4.0之后的版本,将删除AOSP代码,既纯净版鸿蒙;
- 如果想提前了解Next版本的内容,可以在OpenHarmony官网下载HUAWEI DevEco Studio 的4.0 Beta2版本进行开发
下载地址:HUAWEI DevEco Studio 4.0 Beta2
配置开发环境
配置开发环境官方文档,这里不再赘述,使用默认选项,一路Next即可。
三、HelloWorld
1.创建ArkTS工程
打开DevEco Studio,点击Create Project创建工程。或通过DevEco Studio的菜单File > New > Create Project来创建一个新工程。
选择Application应用开发,选择模板“Empty Ability”,点击Next进行下一步配置。
进入配置工程界面,Compile SDK选择“3.1.0(API 9)”,Model 选择“Stage”,其他参数保持默认设置即可。
点击Finish,等待十几秒MyApplication工程就创建完成了。
2.ArkTS工程目录结构(Stage模型)
目录说明:
| MyApplication
|__ entry: HarmonyOS工程模块,编译构建生成一个HAP包。
|__ src: 用于存放ArkTs源码
|__ main
|__ ets
|__ entryability: 应用/服务的入口
|__ pages: 应用/服务包含的页面
|__ resources: 存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件
文件说明:
- AppScope > app.json5:应用的全局配置信息。
- entry > src > main > module.json5:Stage模型模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。 module.json5配置文件
- entry > build-profile.json5:应用级配置信息,包括签名、产品配置等。
- entry > hvigorfile.ts:应用级编译构建任务脚本。
3.页面源码
打开entry > src > main > pages > Index.ets 文件,查看页面源码:
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
.height('100%')
}
}
4.启动模拟器
创建模拟器
点击DevEco Studio右上角的No Devices > Device Manager,或者点击菜单Tools > Device Manager
在Device Manager界面,选择Local Emulator(本地模拟器),点击 New Emulator
一路Next,等待模拟器文件(1G左右)下载完成后,模拟器既完成创建。
启动模拟器(重要)
注意创建完模拟器后,DevEco Studio右上角依然显示的是No Devices,需要我们先在Device Manager中手动启动模拟器
启动完成后:
运行程序
点击DevEco Studio右上角的Run按钮,运行程序
运行成功后:
恭喜完成了第一个HarmonyOS应用。
鸿蒙极速入门(二)-开发准备和HelloWorld的更多相关文章
- Netty入门二:开发第一个Netty应用程序
Netty入门二:开发第一个Netty应用程序 时间 2014-05-07 18:25:43 CSDN博客 原文 http://blog.csdn.net/suifeng3051/article/ ...
- 《Python黑客编程之极速入门》正式开课
玄魂 玄魂工作室 今天 之前开启了一个<Python黑客编程>的系列,后来中断了,内容当时设置的比较宽,不太适合入门.现在将其拆分成两个系列<Python黑客编程之极速入门>和 ...
- 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用
http://www.importnew.com/13246.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 - 首页 所有文章 资讯 ...
- 多本Python极速入门最佳书籍,不可错过的Python学习资料!
Python作为现在很热门的一门编程语言,介于Python的友好,许多的初学者都将其作为首选,为了帮助大家更好的学习Python,我筛选了2年内优秀的python书籍,个别经典的书籍扩展到5年内. ...
- Java入门程序开发
Java入门程序开发 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Java程序开发流程 Java程序开发流程如下: >.将Java代码编写到扩展名为".jav ...
- 【原创】NIO框架入门(二):服务端基于MINA2的UDP双向通信Demo演示
前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty ...
- Swift语法基础入门二(数组, 字典, 字符串)
Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...
- Django 入门案例开发(上)
Django 入门案例开发(中) http://www.cnblogs.com/focusBI/p/7858267.html Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供 ...
- 1 小时 SQL 极速入门(三)——分析函数
1 小时 SQL 极速入门 前面两篇我们从 SQL 的最基础语法讲起,到表联结多表查询. 大家可以点击链接查看 1 小时 SQL 极速入门(一) 1 小时 SQL 极速入门(二) 今天我们讲一些在做报 ...
- IM开发者的零基础通信技术入门(二):通信交换技术的百年发展史(下)
1.系列文章引言 1.1 适合谁来阅读? 本系列文章尽量使用最浅显易懂的文字.图片来组织内容,力求通信技术零基础的人群也能看懂.但个人建议,至少稍微了解过网络通信方面的知识后再看,会更有收获.如果您大 ...
随机推荐
- Kubernetes Pod配置:从基础到高级实战技巧
本文深入探讨了Kubernetes Pod配置的实战技巧和常见易错点. 关注[TechLeadCloud],分享互联网架构.云服务技术的全维度知识.作者拥有10+年互联网服务架构.AI产品研发经验.团 ...
- CentOS防火墙操作命令
CentOS防火墙操作命令 1.查看防火墙服务状态 systemctl status firewalld.service 或者查看防火墙的状态: 1 firewall-cmd --state 2.开启 ...
- mysql 必知必会整理—sql 排序与过滤[三]
前言 简单整理一下MySQL的排序与过滤. 正文 我们查询出来的结果有时候是希望进行排序的,比如说: select product_name from products order by prod_n ...
- 重新整理.net core 计1400篇[七] (.net core 中的依赖注入)
前言 请阅读第六篇,对于理解.net core 中的依赖注入很关键. 和我们上一篇不同的是,.net core服务注入保存在IServiceCollection 中,而将集合创建的依赖注入容器体现为I ...
- ActiveMQ c# 系列——进阶实例(三)
前言 前面介绍了基本的消费者和生产者,那么看下他们之间有什么其他的api. 正文 消费者设置等待时间 生产者生产了5条消息 改一下消费者. static void Main(string[] args ...
- 《c#高级编程》第4章C#4.0中的更改(六)——动态绑定
一.概念 下面是一些代码示例,说明C#动态绑定的上述特点: 1. 延迟确定类型 ```dynamic obj = GetDynamicObject(); // 获取动态对象obj.DoSomethin ...
- 技术解析:一文看懂 Anolis OS 国密生态 | 龙蜥专场
简介: Anolis OS国密是社区在Anolis OS上做的国密技术解决方案. 编者注:本文系两位演讲者整理,他们在2021年阿里云开发者大会的「开源操作系统社区和生态分论坛」上带了分享,演讲主 ...
- WPF 已知问题 InputEventArgs 的 Timestamp 属性是静态的导致事件之间相互影响
本文记录一个 WPF 已知的设计问题,当前此问题已经被大佬修复,这个设计问题刚好属于比较边缘的模块,我写了这么多年的代码还没有踩到这个坑一次,也没有听到有谁提到这个坑 远古时候,不知道大佬是故意还是失 ...
- WPF 双向绑定到非公开 set 方法属性在 NET 45 和 NET Core 行为的不同
本文记录 WPF 在 .NET Framework 4.5 和 .NET Core 3.0 或更高版本对使用 Binding 下的 TwoWay 双向绑定模式绑定到非公开的 set 属性上的行为变更 ...
- 解放双手!这个插件只要一张表就能生成CRUD代码
大家好,我是 Java陈序员. 问君能有几多愁,代码一行又一行! 作为码农,代码是写不完的,而偷懒又是人的天性,能少干一点就少干一点. 今天,给大家介绍一个 IDEA 插件,帮助你快速生成出 CRUD ...