写在前面:
DevEco Studio下载:https://developer.harmonyos.com/cn/develop/deveco-studio#download
版本更新说明:https://developer.harmonyos.com/cn/docs/documentation/doc-releases/release_notes-0000001057597449
软件入门教程:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/start-overview-0000000000029602
简介
博主目前是做安卓开发的,对于js也有一些了解,简单看了下DS,总结一下相对关注的点
- DS结合了idea和webstorm,同时支持java c c++ js xml hml css
- 软件是英文的,毋庸置疑,全球推广的终极目标嘛
- 集成了git等版本管理工具
- Windows和Mac双端支持的客户端
- 目前只支持远程仿真模拟,没有本地模拟器,当然有鸿蒙系统设备除外
话不多说,上界面,先看SDK Manager,里面有三种开发语言支持包,分别是java js c/c++
新建项目:可以选择JS项目或者java项目或者其他模板项目
全部可用的模板以及说明如下:
模板名称 | 支持的设备 | 模板说明 |
---|---|---|
跨设备模板 | ||
Empty Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、TV、Tablet、Wearable设备的Feature Ability模板,展示了基础的Hello World功能。 |
Empty Ability(Java) | Phone、Tablet、TV、Wearable、Car | 使用Java语言开发,用于Phone、TV、Tablet、Wearable设备的Feature Ability模板,展示基础的Hello World功能。 |
Native C++ | Phone、Car | 使用Java和C++语言开发,用于Car设备的Feature Ability模板,作为HarmonyOS应用调用C++代码的示例工程,界面显示“Hello from JNI C ++ codes”。 |
[Lite]Empty Ability(JS) | Lite Wearable、Smart Vision | 使用JavaScript语言开发,用于Lite Wearable、Smart Vision设备的Feature Ability模板,包含一个简单的Hello World文本。该模板包含两个组件:div和text,同时演示了数据绑定的使用方式。 |
About Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。展示了一个应用关于页模板,提供了应用关于信息的实现方式。 |
Full Screen Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。用于在全屏模式下沉浸式展示图片等内容,支持开发者在此模板基础上进行二次开发,支持手机和平板横竖屏切换显示。 |
Grid Ability(JS) | Phone、Tablet、TV | 使用JavaScript语言开发,用于Phone、Tablet、TV设备的Feature Ability模板。展示了一个网格页模板,用于网格应用和状态栏的展示。 |
List Tab Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、Wearable设备的卡片模板。展示了一个列表页,提供了列表展示和多tab切换功能。 |
Settings Ability(JS) | Phone、Tablet、TV、Wearable | 使用JavaScript语言开发,用于Phone、Tablet、TV、Wearable设备的Feature Ability模板。展示了一个设置页模板,一般用于App设置页面的实现。 |
Splash Screen Ability(JS) | Phone、Tablet、TV | 使用JavaScript语言开发,用于Phone、Tablet、TV设备的Feature Ability模板。展示了一个应用启动页模板,提供了页面跳转以及倒计时器的实现。 |
Video Player Ability(Java) | Phone、TV | 使用Java语言开发,用于Phone和TV设备的视频播放应用模板。提供给开发者视频播放的基础能力以及视频在手机和大屏之间流转的能力。支持开发者在此模板基础上进行快速二次开发,构建视频应用。 |
单设备模板 | ||
About Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板。为开发者提供应用关于页的示例工程,提供了ScrollView布局以及RichText的使用方法。 |
Business Card Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局。展示了一个名片详情页的样例工程,主要由一个ScrollView嵌套的两个ListContainer组成。 |
Category Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,显示分类页效果。 |
Category List Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,该模板由标题栏和单行列表组成,其中单行列表被分为多个分组,单行列表中的每一项由左侧文本和右侧文本组成。该模板还提供了ListContainer和RecycleItemProvider的接口使用方法示例。 |
Device Configure Ability(JS) | Phone | 使用JS语言开发,用于Phone设备的Feature Ability模板,使用hml构建界面布局,使用css描述界面样式,使用js进行界面交互,此模板提供了对设备快速配网的能力。 |
Device Control Ability(JS) | Phone | 使用JavaScript语言开发,用于Phone设备的Feature Ability模板。支持由开发者编写JavaScription配置文件来生成对应的设备控制界面,支持HiLink和三方云两种设备控制方式,示例配置文件中提供了牙刷、台灯、豆浆机三种样例。 |
Financial Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示金融类应用的常用布局,支持轮播卡片、网格展示、列表资讯以及网络图片加载。 |
Full Screen Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的FeatureAbility模板,使用XML布局。为开发者提供全屏页的示例工程,使用了Image组件,并实现了横竖屏切换,并保持全屏显示。 |
Grid Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,显示内容为两部分网格表,网格每行显示4个项目,网格内元素可进行拖动排序。 |
Image Editor Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,提供裁剪以及调节两种基础图片编辑功能。 说明 图片编辑需要添加“允许应用读取用户外部存储中的媒体文件信息权限“,请在config.json文件中手动添加。
|
Login Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML来写布局,显示登录页效果。 |
Navigation Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,用来引导用户和呈现信息。采用上图下文的布局,上面为多图滑动布局,下面为文字列表。 |
News Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示了标准的设备发现迁移的功能,实现了新闻可以跨设备分享的场景 |
Picture Browser Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,用于全屏展示图片,支持手势缩放和左右滑动翻页。 |
Privacy Statement Ability(Java) | Phone | 用Java语言开发,用于Phone设备的Feature Ability模板,用来呈现多样式的隐私协议文本以及详情跳转。 |
Profile Picture List Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,由标题栏、双行列表和底部选项栏构成。该头像列表模板包括两个布局文件,一个是用于提供整体Feature Ability布局,另一个用于提供页面内列表Item布局。该模板演示了标题栏、复杂列表及底部选项栏的使用及数据绑定方式。 |
Settings Ability(Java) | Phone | 使用Java开发,用于Phone设备的Feature Ability模板,使用XML布局,由标题栏和一个列表组成。列表部分可设置单行和双行,并分别提供对应的XML布局文件。单行列表由左侧文本和右侧文本组成;双行列表由左侧图标以及双行描述文本和右侧开关组成,并提供开关状态持久化示例。 |
Shopping Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局,展示了标准的设备发现迁移的功能,实现了商品可以跨设备分享的场景。 |
Splash Screen Ability(Java) | Phone | 使用Java语言开发,用于Phone设备的Feature Ability模板,使用XML布局。展示了一个应用启动页模板,实现了页面跳转。 |
OneHop Device Ability(JS) | Phone | 使用JavaScript语言开发,用于Phone设备的Feature Ability模板,支持由开发者编写JavaScription配置文件来生成对应的设备控制界面,示例配置文件中以风扇作为样例,支持碰一碰拉起设备然后进行控制。 |
[Lite]Empty Particle Ability(JS) | Router | 使用JavaScript语言开发,用于Router设备的Feature Ability模板,展示了基础的Hello World功能。 |
点击Next,进入到工程配置阶段:
- Project Name:工程的名称,可以自定义。
- Project Type:工程的类型,标识该模块是可以安装的应用还是一个原子化服务项目(AS中的依赖库项目),注意,如果是创建的原子化服务,则:
- 原子化服务是免安装的,config.json中自动添加installationFree字段,取值为“true”。
- 如果entry模块的installationFree字段为true,则其相关的所有hap模块的installationFree字段都默认为true;如果entry模块的installationFree字段为false,则其相关的所有hap模块可以配置为true或false。
- 编译构建App时,每个hap包大小不能超过10MB。
- Package Name:软件包名称,默认情况下应用ID也会使用该名称,发布时应用ID需要唯一
- Save Location:工程文件本地存储路径。
- Compatible API Version:兼容的SDK最低版本。
- Device Type:该工程模板支持的设备类型,支持多选。如果勾选多个设备,表示该原子化服务或需要安装的应用支持部署在多个设备上。
- Show in Service Center:是否在服务中心露出。如果Project Type为Service,则会同步创建一个2*2的服务卡片模板,同时还会创建入口卡片;如果Project Type为Application,则只会创建一个2*2的服务卡片模板。
点击Finish,工具会自动生成示例代码和相关资源,等待工程创建完成。
创建完成后看看项目,结构上大体和AS相同,简单列举一下各文件夹在AS中类似的文件夹
- java:存放java类的地方,Ability类似Activity,Slice类似Fragment
- resource:base为默认属性,element中类似于values文件夹,graphc类似drawable,layout保持一致,media类似mipmap,rawfile类似raw,其他参考官方文档
- config.json:存在hap(就是app)各种信息的核心文件,类似Manifest.xml
再看看JS的demo,不熟悉,就不多介绍了,小伙伴自己琢磨吧(手动滑稽)
最后贴一些图,Ability项目里的java代码,对比Activity,可以发现大同小异,但是很舒服的是没有了support和androdix的问题(目前国内大厂开始小部分升级androidx了,道路还很长)
AbilitySlice:
MainAbility:
ability_main:
background_ability_main:
string.json:
config.json:
SecondSlice:java代码添加布局
鸿蒙OS的发展前景尚未可知,先学着不会有啥坏处的哈,我是码农,学习使我快乐,GO ! ! ! .