初试鸿蒙—构建第一个鸿蒙应用

yundejia

关注

阅读 148

2022-12-01

    2021年6月2日晚,华为正式发布HarmonyOS 2及多款搭载HarmonyOS 2的新产品。这也意味着“搭载HarmonyOS(鸿蒙)的手机”已经变成面向市场的正式产品。6月9日,“HarmonyOS Sans”公开上线,可以免费商用。

那么,鸿蒙系统究竟是什么呢?


鸿蒙系统(HarmonyOS)定位

    鸿蒙系统(HarmonyOS)是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,鸿蒙系统(HarmonyOS)提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。


    对消费者而言,HarmonyOS能够将生活场景中的各类终端进行能力整合,可以实现不同的终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。

    对应用开发者而言,HarmonyOS采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关。这能够让开发者聚焦上层业务逻辑,更加便捷、高效地开发应用。

    对设备开发者而言,HarmonyOS采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。


鸿蒙系统代码开发支持的语言

    HarmonyOS代码开发支持多语言,包括Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和HML(HarmonyOS Markup Language)。


搭建鸿蒙应用开发环境

    开发一款鸿蒙应用,首先就需要开发鸿蒙应用的IDE。开发HarmonyOS应用使用的IDE是DevEco Studio,目前支持Windows(64-bit)和Mac平台。

DevEco Studio下载链接:

​​https://developer.harmonyos.com/cn/develop/deveco-studio​​


我的电脑系统是Windows,所以下面以Windows版本为例,讲解安装DevEco Studio的操作。


下载完成后,双击下载的"deveco-studio-x.x.x.xxx.exe",运行DevEco Studio安装向导。

初试鸿蒙—构建第一个鸿蒙应用_开发者

点击Next进入下一步。


初试鸿蒙—构建第一个鸿蒙应用_android_02

在此页面选择安装的位置,一般选择在非系统盘安装。


初试鸿蒙—构建第一个鸿蒙应用_开发者_03

在这个页面选择是否需要创建桌面快捷方式,是否需要把“Open Folder as Project”添加到右键快捷方式,是否需要把启动器目录添加到环境变量PATH里面。不知道就全选或者选择第一个即可。继续下一步。


初试鸿蒙—构建第一个鸿蒙应用_ide_04

等待安装,可能需要几分钟。


初试鸿蒙—构建第一个鸿蒙应用_android_05

安装完成后,可以选择重启(主要让添加到环境变量里面的值生效)。如果你之前没有选择把启动器目录添加到环境变量PATH里面,也就不用重启。对我来说重不重启无所谓,所以我就没有重启。


初试鸿蒙—构建第一个鸿蒙应用_开发者_06

启动DevEco Studio,问你同不同意,一定得同意的啦。


初试鸿蒙—构建第一个鸿蒙应用_android_07

接下来说运行需要npm配置信息,默认就行了。继续下一步。


初试鸿蒙—构建第一个鸿蒙应用_android_08

接下来是sdk安装,默认就行了。


初试鸿蒙—构建第一个鸿蒙应用_开发者_09

接下来是提示设置信息,下一步。


初试鸿蒙—构建第一个鸿蒙应用_ide_10

选择同意,继续下一步。


初试鸿蒙—构建第一个鸿蒙应用_android_11

等待下载,可能需要几分钟。


初试鸿蒙—构建第一个鸿蒙应用_ide_12

下载完成,开启DevEco Studio欢迎界面。


初试鸿蒙—构建第一个鸿蒙应用_ide_13

个人喜好界面风格为黑色,可以在欢迎界面左下角,选择Configure,选择Settings,在APPearance选项卡中,把Theme改为黑色主题,点击OK立即生效。


接下来我们就可以新建项目了,选择Android,如果提示需要下载Android SDK,按步骤点击下载即可,这里不再细讲。


开始创建项目

初试鸿蒙—构建第一个鸿蒙应用_android_14

在欢迎界面选择Create HamonyOS Project,新建项目。


初试鸿蒙—构建第一个鸿蒙应用_android_15

选择Empty Ability(Java),


初试鸿蒙—构建第一个鸿蒙应用_开发者_16

接下来是项目的配置信息,填写项目名称,选择项目类型,设置项目包名,设置项目存储位置,SDK版本等信息。最后我打算写个手机应用,所以设备类型选择了Phone。


初试鸿蒙—构建第一个鸿蒙应用_ide_17

可以看到项目打开后DevEco Studio的开发界面跟Android Studio界面类似。因为DevEco Studio和Android Studio都是基于IntelliJ IDEA社区版二次开发,所以对用过 Android Studio 或者 IntelliJ IDEA 的开发者来说使用 DevEco Studio 比较容易上手。


初试鸿蒙—构建第一个鸿蒙应用_开发者_18

接下来对模拟器进行管理。点击菜单栏Tools,在菜单中选择Device Manager,打开虚拟器设备管理器。


初试鸿蒙—构建第一个鸿蒙应用_ide_19

接下来会弹出登录华为账号的网页,需要你登录已实名的账号才能运行虚拟设备。没有华为账号的话要注册一个。


初试鸿蒙—构建第一个鸿蒙应用_开发者_20

接下来是开发者实名认证,一般自己开发都选择个人开发者。


初试鸿蒙—构建第一个鸿蒙应用_ide_21

提示是否会将下面类型的应用上传到应用市场,反正以后可以修改,先点否以后有事再说。


初试鸿蒙—构建第一个鸿蒙应用_开发者_22

接下来选择认证方式,有个人银行卡认证和身份证人工审核认证,要快和方便的话,选择个人银行卡认证是种不错的选择。


初试鸿蒙—构建第一个鸿蒙应用_开发者_23

上面是个人银行卡认证的界面。


初试鸿蒙—构建第一个鸿蒙应用_开发者_24

上面是身份证人工审核认证的界面。


初试鸿蒙—构建第一个鸿蒙应用_开发者_25

终于实名认证成功了(真没想到这么麻烦)。


初试鸿蒙—构建第一个鸿蒙应用_ide_26

重新进入DevEco Studio,登录华为账号,因为项目刚刚选择的设备是手机,于是我选择了P40虚拟设备进行模拟运行。


初试鸿蒙—构建第一个鸿蒙应用_开发者_27

点击右上方运行按钮,运行测试“你好,世界”程序。


初试鸿蒙—构建第一个鸿蒙应用_开发者_28

上面是将鸿蒙应用安装在虚拟机上运行的结果。


初试鸿蒙—构建第一个鸿蒙应用_android_29

对代码进行简单修改,在修改过程中发现了一些问题,例如修改.xml文件时,预览界面不会像在Android Studio写.xml一样实时更新,要手动刷新。


初试鸿蒙—构建第一个鸿蒙应用_android_30

最后运行结果如上图。我完成了一个简单的鸿蒙应用。


工程目录结构

初试鸿蒙—构建第一个鸿蒙应用_开发者_31

.gradle:Gradle配置文件,由系统自动生成,一般情况下不需要进行修改。

entry:默认启动模块(主模块),开发者用于编写源码文件以及开发资源文件的目录。

entry>libs:用于存放entry模块的依赖文件。

entry>.gitgnore:标识git版本管理需要忽略的文件。

entry>build.gradle:entry模块的编译配置文件。

entry>src>main>Java:用于存放Java源码。

entry>src>main>resources:用于存放资源文件。

entry>src>main>config.json:HAP清单文件。

entry>src>test:编写测试文件的目录。


我的第一个鸿蒙应用代码

MainAbilitySlice.java

package com.example.firstapplication.slice;




import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.DirectionalLayout;
import ohos.agp.components.DirectionalLayout.LayoutConfig;
import ohos.agp.components.Text;
import ohos.agp.colors.RgbColor;
import ohos.agp.components.element.ShapeElement;
import ohos.agp.utils.Color;
import ohos.agp.utils.TextAlignment;




public class MainAbilitySlice extends AbilitySlice {




private DirectionalLayout myLayout = new DirectionalLayout(this);




@Override


public void onStart(Intent intent) {
super.onStart(intent);
LayoutConfig config = new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
myLayout.setLayoutConfig(config);
ShapeElement element = new ShapeElement();
element.setRgbColor(new RgbColor(255, 255, 255));
myLayout.setBackground(element);




Text text = new Text(this);
text.setLayoutConfig(config);
text.setText("菜籽的第一个鸿蒙应用程序");
text.setTextColor(new Color(Color.rgb(57, 129, 248)));
text.setTextSize(70);
text.setTextAlignment(TextAlignment.CENTER);
myLayout.addComponent(text);
super.setUIContent(myLayout);
}




@Override


public void onActive() {
super.onActive();
}




@Override


public void onForeground(Intent intent) {
super.onForeground(intent);
}
}



MainAbility.java

package com.example.firstapplication;




import com.example.firstapplication.slice.MainAbilitySlice;
import ohos.aafwk.ability.Ability;
import ohos.aafwk.content.Intent;




public class MainAbility extends Ability {
@Override


public void onStart(Intent intent) {
super.onStart(intent);
super.setMainRoute(MainAbilitySlice.class.getName());
}
}



MyApplication.java

package com.example.firstapplication;




import ohos.aafwk.ability.AbilityPackage;




public class MyApplication extends AbilityPackage {
@Override


public void onInitialize() {
super.onInitialize();
}
}


resources>config.json

"label"属性改为"$string:app_name"


resources>base>element>string.json新增

{
"name": "app_name",
"value": "菜籽鸿蒙应用"
}


总体感觉

    这一番体验下来感觉还行,在开发工具的某些方面还有待改进。让我们开发者一起拥抱鸿蒙,为鸿蒙应用生态做贡献。


希望大家能点击下方的公众号投票链接,投出你最想在本公众号看到的内容,我会根据大家的投票结果选出接下来一段时间的推文内容。距离投票截止还有2天,还没投票的小伙伴快来投票吧!

​​​​



精彩评论(0)

0 0 举报