鸿蒙
在鸿蒙系统中,应用服务主要以两种形式存在:鸿蒙App 和元服务。本文主要讲一下两者区别,以及开发环境的配置。
APP
App 是指运行在鸿蒙操作系统上的完整应用程序,类似于其他移动操作系统上的传统应用程序。鸿蒙App 需要用户通过应用商店下载并安装到设备上才能使用。它们通常提供了完整的功能集,能够满足用户更复杂的需求
DevEco Studio
https://developer.huawei.com/consumer/cn/deveco-studio/
DevEco Studio 是华为为开发者提供的一个集成开发环境(IDE),专门用于鸿蒙操作系统(HarmonyOS)应用和元服务的开发。与 Android Studio 一样,也是基于 IntelliJ IDEA 平台构建,简化鸿蒙应用的开发、调试、测试和发布过程,帮助开发者更高效地创建高质量的应用程序
创建项目
一路 Next 就行了,没有华为真机可以使用模拟器运行
找到 Device Manager,我的账号还走了一遍邮件申请流程,如果没有则忽略,直接点 create 创建模拟器,目前官方只提供了 Phone 手机端模拟器,平板、手表暂不支持。
夸一下鸿蒙模拟器,运行比隔壁的 Android 模拟器快多了!!!
项目结构概览
- AppScope/app.json5:App、元服务的全局配置信息(包名、应用名、版本、应用图标)。
- AppScope/resources:全局资源,级别高于 module/resources
- entry:主包,module.json5 中 type 为 entry,一个应用或元服务只能有一个主包
- module.json5:配置 abilities、pages、requestPermission
<!---->
{
"module": {
"name": "entry", // 模块名
"type": "entry", // 模块类型
"srcEntry": "./ets/myabilitystage/MyAbilityStage.ets", // 在ability启动之前,理解为 Android Application
"description": "$string:module_desc", // 说明
"mainElement": "EntryAbility", // 应用主入口 ability
"deviceTypes": [ // 支持的设备类型
"phone",
],
"requestPermissions": [ // 需要的权限
{
"name": "ohos.permission.INTERNET", // 网络请求需要加该权限
}
],
"pages": "$profile:main_pages", // 页面信息,路由
"abilities": [ // ability配置
{
"name": "EntryAbility",
"srcEntry": "./ets/entryability/EntryAbility.ets",
"description": "$string:EntryAbility_desc",
"icon": "$media:layered_image",
"label": "$string:EntryAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"exported": true,
"launchType": "specified",
"skills": [
{
"entities": [
"entity.system.home"
],
"actions": [
"action.system.home"
]
}
]
},
{
"name": "SecondAbility",
"srcEntry": "./ets/secondability/SecondAbility.ets",
"description": "$string:SecondAbility_desc",
"icon": "$media:layered_image",
"label": "$string:SecondAbility_label",
"startWindowIcon": "$media:startIcon",
"startWindowBackground": "$color:start_window_background",
"launchType": "specified"
}
],
"extensionAbilities": [ // 应用备份服务
{
"name": "EntryBackupAbility",
"srcEntry": "./ets/entrybackupability/EntryBackupAbility.ets",
"type": "backup",
"exported": false,
"metadata": [
{
"name": "ohos.extension.backup",
"resource": "$profile:backup_config"
}
]
}
]
}
}
hdc、ohpm的环境
hdc: 类似隔壁 Android 的 adb 命令行工具,对机器进行管理设备、文件管理、端口控制等,开发元服务,最好装上这个工具
ohpm: 这又和前端的 npm 包管理服务一样,进行包的安装、更新、发布等
- 去 https://developer.huawei.com/consumer/cn/download/ 下载 Command Line Tools
2. 找到 \~/.bash\_profile 文件配置下述环境变量
command-Line-tools-xxx 为你下载的文件名,自行更改 “OHPM\_HOME” ,指向自己解压的路径
export OHPM_HOME=$HOME/Downloads/command-Line-tools-xxx
export PATH=$OHPM_HOME/bin:$PATH
export PATH=$OHPM_HOME/sdk/default/openharmony/toolchains:$PATH
环境变量配置成功后,执行 source \~/.bash\_profile 生效配置信息
元服务
元服务是鸿蒙对标的微信小程序,其设计目的是让用户无需安装即可快速获取特定的服务或功能,集成在系统级别。华为会对微信放开口子,再做一套生态吗🐶🐶🐶
创建元服务
创建完后,去DevEco Studio 创建你的元服务项目,一直 Next 执行下去就好,过程中会让你绑定刚才创建的元服务id
开发方式
对标的微信小程序,那自然少不了一些工具来进行项目间的转换,下面介绍下主流的元服务开发方式
元服务原生
优点
- 性能最优: 直接使用 ArkUI 开发,性能最优,实时预览开发效率也最快
- 深度集成:可以直接访问底层系统功能,如传感器、蓝牙、Wi-Fi等,实现与设备的深度集成。
- 最新特性支持:能够第一时间支持鸿蒙操作系统的最新特性和API更新。
缺点:需要学习 ArkUI 的开发语言,当然也可以用 Js 开发,那为啥不去选择跨端框架
ASCF 微信小程序转成元服务
优点
- 无需重复开发: 直接转译微信小程序,wxml转译成hxml,逻辑层还是js语言处理
- 生态兼容性:可以利用部分现有的 JavaScript 生态工具和库
- 快速上手:对于已经熟悉 JavaScript 的开发者来说,减少了开发元服务入门门槛。
缺点:
- 转译工具成熟度:转译框架通常都只能保证大部分逻辑正常,少部分问题还是需要自己调试处理
- 调试受限:只能真机进行调试,不能使用预览,开发效率非常低;并且逻辑层与界面分离,调试问题更难定位,只能多打印日志信息辅助。
- Api使用受限: 只能使用该文档 Api,有些鸿蒙系统能力无法支持,对标微信小程序开发文档,https://developer.huawei.com/consumer/cn/doc/atomic-ascf-V5/a...
1, 鸿蒙提供了ASCF工具,可以帮助开发者把微信小程序,直接转成鸿蒙元服务
开发之前,先要去安装一个 ASCF 插件,在这里我反而更推荐 beta 版,因为有些转译问题你有可能当天发现了,第二天就被官方修复掉了
选择创建“Atomic Service”,选择ASCF Ability模板,然后单击Next。
按这个流程继续操作https://developer.huawei.com/consumer/cn/doc/atomic-ascf-V5/c...
- 使用命令行进行转译(推荐)
https://developer.huawei.com/consumer/cn/doc/atomic-ascf-V5/r...
我更推荐使用命令行的方式,对微信小程序进行转译,你可以更直观的找到转译错误,以及编译的 debug 信息
转译小程序后的产物在 xxx/ascf/ascf\_src 下,对标 ASCF demo 项目的 ascf\_src 目录,直接替换掉
uniapp-鸿蒙元服务
https://uniapp.dcloud.net.cn/tutorial/mp-harmony/intro.html
可以看到也是使用到 ASCF 工具,如果之前就用 uniapp 开发的小程序,转鸿蒙也会更顺手一点
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。