从零开始开发纯血鸿蒙应用
- 背景
- 一、选定应用类型
- 1、自身需要与生态欠缺
- 2、搭建工程
背景
目前,由于纯血鸿蒙切换到单框架的结构,很多还没来得及鸿蒙化的各种app,都无法在纯血鸿蒙系统上进行运行,或者功能还不完善。为了让大家能够自行根据需要,进行工具开发并部署到自己的手机上,因此纂写本系列博文,供大家进行参考,也希望因此能够为纯血鸿蒙生态添砖加瓦。
一、选定应用类型
1、自身需要与生态欠缺
作为一个开发者,我经常会在手机和电脑之间,通过聊天软件如微信登,进行代码文件的传递。每种语言对应的代码文件,都有着专门的文件后缀,而这些后缀通常不被手机上的大多数应用所识别,比如Java文件发到手机上,是无法进行浏览和查看的,而手机上也不能像电脑那样,强制将一种文件以后缀名不同的方式打开,因此,会经常出现这种界面:
如果,恰巧我身边就没有电脑可以用,那将对此无可奈何。
据我了解,当前纯血鸿蒙的应用市场上,也没有一款针对通用纯文本文件的编辑器应用,大多数是docx等富文本类型的编辑器。
既然没有现成的可用,于是我就决定自己开发一个给自己用,当然了,也考虑过上架,但是上架流程稍显麻烦我便放弃了。
2、搭建工程
到目前为止,DevEco Studio 是纯血鸿蒙应用的唯一开发平台,因此,工程创建也理所当然的在该 IDE 中进行:
工程目录结构整体如上,为了形成组件或功能的高可复用性,我使用 static Library
创建了多个lib模块,供作为app启动模块的 Entry 模块进行使用,这些lib模块的职能如下:
- lib_comps:UI 组件模块,用于归纳会多处使用的自定义组件和自定义样式
- lib_constant:用于收录工程里使用到的各种常量
- lib_log:顾名思义,是日志模块,本工程不直接使用 hilog,而是基于官网提供的日志Demo进行二次改造,以便能够轻松地在app内导出日志
- lib_util:收录纯逻辑的工具类或工具方法
- lib_resources:资源模块,用于收录本工程用到的各种资源,如string资源、icon资源等
Entry 模块下的目录结构如上,需要关注的是 src/main/ets 和 src/main/resources/base/profile。profile 目录下的main_page.josn
,会记录所有的app页面的路由:
{
"src": [
"pages/Index",
"pages/EditPage",
"pages/ViewFilePage",
"pages/ViewOutsideFile",
"pages/ImportFilePage",
"pages/AboutAppPage"
......
]
}
而 ets 目录下的各个子目录的职能如下:
- content:用于收录各个页面对应的内容组件,比如 index 页面的 MainPageContent
- entryability:这是工程创建时自动创建的目录,里面存放了 Entryability 类的源码,该 Entryability 类是启动app时最先调用的。
- entrybackupability:这是进行数据备份用的,暂时可以忽略不管
- model:用于存放工程里用到的各种数据模型,比如用于在路由跳转动作中进行数据传递的模型
- util:存放只在 entry 模块中进行使用的工具类或工具方法
其他文件或目录,会在项目实现过程中由IDE自动维护。为了避免代码丢失,我已经将对应工程源码托管到了 gitee
上,对应的仓库地址为:TxtEdit仓库