分享

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

 菜籽爱编程 2022-04-27

    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./cn/develop/deveco-studio

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

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

点击Next进入下一步。

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

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

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

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

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

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

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

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

选择同意,继续下一步。

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

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

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

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

开始创建项目

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

选择Empty Ability(Java),

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

工程目录结构

.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条评论

    发表

    请遵守用户 评论公约

    类似文章 更多