文章基于Harmony Next Preview2 进行学习,其他版本可能会稍有不同
准备工作
由于目前Harmony Next仅有Preview版本,想要进行Harmony Next开发需要向华为申请权限,具体操作参考: https://developer.huawei.com/consumer/cn/forum/topic/0208140368442297004?fid=0101587866109860105
权限通过后就可以下载DevEco Studio NEXT Developer Preview的鸿蒙编译器
项目创建
-
打开IDE, 点击Create Project
-
选择模版,做常规应用开发选择第一个Empty Ability就可以了,然后点击Next
-
配置项目信息
在这里可以设置项目名称(Project name)、包名(Bundle name)、保存位置(Save location)、模块名称(Module name)等要注意的是
- 由于是基于Next开发,因此Compile SDK和Compatible SDK要在4.1.0(11)及以上
- Device type 是配置运行应用的设备类型,可以根据应用需求进行选择,其中2in1是指平板电脑二合一的设备
配置好之后点击Finish,到此完成了项目的创建。
目录解析
第一级目录
-
AppScope
应用级别的相关配置及资源。 -
build-profile.json5
-
app标签
应用的打包配置,包含签名、sdk版本等,和Android工程中app目录下gradle文件的android标签作用一致 -
modules标签
配置项目中包含哪些modules,与Android工程中setting.gradle的作用一致
-
-
entry
一个module目录,目录名是创建项目时指定的名字,代码就是在这个目录中写的 -
hvigor
Harmony就是使用hvigor构建的,作用和android中的gradle文件夹一致 -
hvigorfile.ts
项目级别的打包脚本,里面可以配置自定义插件 -
local.properties
本地路径配置,默认里面只有hwsdk.dir(Harmony的SDK目录) -
oh-package.json5
配置所需要的依赖库 -
oh-package-lock.json5
根据oh-package.json5自动生成,里面的依赖库会绑定具体版本 -
oh_modules
在这里会关联到依赖库的具体目录,可以通过这里查看依赖库的代码
AppScope
-
resources
存储资源,这里的资源可以被项目中所有的module引用 -
app.json5
应用的配置信息,包含:包名、版本名、版本号、图标、应用名等
entry
-
src/main/ets
这是源码目录,是我们编写Harmony代码的地方, 同Android中的src/main/java -
src/main/resources
资源目录,可以添加颜色、字符串、图片等资源,同Android中的src/main/res-
base/element
配置字符串、颜色等常量 -
base/media
配置图片等多媒体资源 -
base/profile/main_pages.json
配置该module中有哪些页面(Page),非常重要的文件,类似于在manifest.xml中配置与Activity
-
-
src/main/module.json5
该module的配置文件 -
build-profile.json5
module构建的配置文件 -
hvigorfile.ts
module构建脚本 -
oh-package.json5
配置module所需要的依赖库 -
oh-package-lock.json5
根据oh-package.json5自动生成,里面的依赖库会绑定具体版本
项目配置
应用名和图标配置
当我们在模拟器上运行项目后发现。app的名称是label,但AppScope/app.json5明明已经配置了是HM_demo,这是怎么回事呢
Harmony应用名称(文档上称为标签)分为应用名和入口名,在AppScope/app.json5中配置的是应用名,在手机的的设置——>应用和元服务中可以看到
而桌面上显示的叫入口名
入口名 实在entry中 src/main/module.json5设置的。同样,图标也分为应用图标和入口图标,设置方式与应用名称一样。
启动页配置
在我们启动应用时候会先看到一个中间为应用默认图标(四叶草)的空白页面,即便我们将应用图标和入口图标都替换了,启动时依旧显示一个四叶草。这个设置是在entry中 src/main/module.json5中的startWindowIcon属性。讨厌的是这个属性不能去除、不能为空,只能设置一个图片。如果不需要系统的启动图可以将startWindowIcon设置为一个的像素颜色和startWindowBackground相同的图片。