文章目录
- 一、前言叨叨
- 二、创建应用
- 三、项目初始化及代码分析
- 1. 应用启动入口
- 2. 解读Demo代码并Copy
- 3、常量数据及静态资源文件
- AppStore下的resources
- entry下的resources
- 四、效果展示
一、前言叨叨
在考试内容看完之后,并且获取到了高级认证,但是在真正动手写应用的时候。尴尬的是不知如何下手,只好从第一篇文章的例子开始再来一遍,选择性的进行部分demo分析,并且同时构建我们的道易清单的开发,这篇文章讲开始进行第一步,熟悉并搭建待办列表页面。
二、创建应用
- 本次创建的应用时一个空应用(Empty Ability),选择后进入下一步
2. 设置项目名称,并且设置Bundle name;
Bundle name 是项目的唯一标识,默认的命名是:com.example.myapplication
,其中myapplication
会根据Project name进行更换,我们需要确认并调整的内容是example。
作为后端开发者,可以将这个理解为是后端的包名命名规范,下面是HarmonyOS的命名规范:
- 命名空间反转:通常采用反向域名命名方式,以避免命名冲突。例如,如果您的公司域名为
example.com
,则包名可以是com.example.*
。 - 小写字母:包名应该全部使用小写字母。
- 点分隔:使用点(
.
)来分隔不同级别的命名空间。 - 有意义的名称:每个部分的名字都应具有意义,能够表明应用或组件的功能。
- 避免特殊字符:不要在包名中使用特殊字符,如空格、斜杠、下划线等。
- 唯一性:确保您的包名在全局范围内是唯一的,特别是当您计划在华为应用市场上发布应用时。
以下是一个符合HarmonyOS命名规范的Bundle name示例:
com.example.myharmonyapp
在这个例子中,com
是顶级域名,example
是公司或组织的名称,myharmonyapp
是应用的具体名称。
遵循这些命名规范可以帮助确保应用包名的清晰、一致和唯一性,有助于应用在HarmonyOS生态系统中正确识别和分发。
三、项目初始化及代码分析
具体的文件路径及配置文件参数,可参考官方网站:
构建第一个ArkTS应用(Stage模型)
1. 应用启动入口
新建项目的应用启动入口是在entry\src\main\ets\entryability\EntryAbility.ets
文件中。
在onWindowStageCreate()回调中通过loadContent()方法设置应用要加载的页面,并根据需要调用on(‘windowStageEvent’)方法订阅WindowStage的事件(获焦/失焦、可见/不可见)。
新建的项目中默认带着日志hilog
HiLog日志系统,提供给系统框架、服务、以及应用,用于打印日志,记录用户操作、系统运行状态等。开发者可以通过hilog命令行查询相关日志信息。
关于HiLog的相关内容请查阅官方文档:《HarmonyOS NEXT 调测调优之调试命令》
并且将页面的整个生命周期方法都初始化出来,对于新手来说,可以根据日志输出很快的理解整个页面的生命周期:
启动项目后可以在日志处看到启动顺序:
2. 解读Demo代码并Copy
ToDoList的Demo中,项目启动文件是第一个ToDoListPage,我们接下来建立ArkTsFile:ToDoListPage.ets
。
ToDoListPage代码解读:
-
- 在Demo中的ToDoListPage.ets文件中,用的注解分别是@Entity和@Component。
-
- 在DataModel中初始化了getData()的方法,这个方法直接从CommonConstants获取定义的常量TODO_DATA.
- 在DataModel中初始化了getData()的方法,这个方法直接从CommonConstants获取定义的常量TODO_DATA.
3、常量数据及静态资源文件
AppStore下的resources
在上一段内容中,我们可以看到代码中常用到的常量数据都存储在ets/common/constant/CommonConstant.ts中,但是我们在代码中还发现部分常量数据是存储在App Store的resources目录中,比如string.json文件。
这样做的优点是:
- 本地化(Localization):string.json文件可以包含多语言版本的文本,这使得应用可以支持多种语言,满足不同地区用户的需求。
- 可维护性:将常量数据集中存储在一个文件中,方便开发者管理和维护。如果需要更新或添加新的文本,只需修改string.json文件即可。
- 版本控制:在版本控制系统中,string.json文件可以与其他资源一起被版本控制,确保资源的完整性。
- 资源隔离:将资源文件与代码分离,可以减少代码体积,提高应用的启动速度和运行效率。
- 安全性:通过将敏感数据(如用户名、密码等)存储在资源文件中,可以减少代码中的硬编码,提高应用的安全性。
- 跨平台一致性:在多平台开发中,使用资源文件可以确保不同平台上的应用表现一致。
在HarmonyOS中,资源文件通常位于resources目录下,该目录位于应用的根目录。在构建过程中,资源文件会被编译成二进制资源,并打包到应用的APK或HAP文件中。当应用运行时,资源文件会被加载到内存中,供应用使用。
总结来说,将常量数据存储在string.json等资源文件中,是为了提高应用的可维护性、安全性,以及支持多语言等需求。
entry下的resources
根据代码的查看,我们还可以看到代码中,引用的部分常量还来自于entry下的resources。
entry下的resources资源跟AppStore下的resources的区别如下:
- 存储位置:
entry/resources
:位于应用的entry
目录下,它是应用的入口点,包含应用的启动入口和一些必要的资源。resources
:位于应用的根目录下,它包含应用的通用资源,如图标、图片、音频、视频等。
- 资源类型:
entry/resources
:通常包含应用的启动界面(如Launcher)和其他启动时所需的资源。resources
:包含应用运行过程中所需的各种资源,如界面资源、本地化字符串、图标、媒体文件等。
- 构建过程:
- 在构建过程中,
entry/resources
中的资源会被优先加载,因为它们是应用启动时必须的。 resources
中的资源在应用启动后会根据需要被加载。
- 在构建过程中,
- 可访问性:
entry/resources
中的资源可以直接在entry
目录下的Java/Kotlin/JS等源文件中直接引用。resources
中的资源需要通过资源访问路径进行引用,如@res/drawable/icon.png
。
- 资源打包:
- 在构建过程中,
entry/resources
中的资源会直接包含在应用的APK/HAP文件中。
- 在构建过程中,
resources
中的资源会被编译成二进制资源,并打包到应用的APK/HAP文件中。
总的来说,entry/resources
和resources
目录都是用于存储应用的资源文件,但它们存储的位置和包含的资源类型不同。entry/resources
存储的是应用启动时所需的资源,而resources
存储的是应用运行过程中所需的通用资源。正确地使用这两个目录可以提高应用的构建效率和运行性能。