头图

鸿蒙

在鸿蒙系统中,应用服务主要以两种形式存在:鸿蒙App 和元服务。本文主要讲一下两者区别,以及开发环境的配置。

APP

App 是指运行在鸿蒙操作系统上的完整应用程序,类似于其他移动操作系统上的传统应用程序。鸿蒙App 需要用户通过应用商店下载并安装到设备上才能使用。它们通常提供了完整的功能集,能够满足用户更复杂的需求

DevEco Studio

https://developer.huawei.com/consumer/cn/deveco-studio/

DevEco Studio 是华为为开发者提供的一个集成开发环境(IDE),专门用于鸿蒙操作系统(HarmonyOS)应用和元服务的开发。与 Android Studio 一样,也是基于 IntelliJ IDEA 平台构建,简化鸿蒙应用的开发、调试、测试和发布过程,帮助开发者更高效地创建高质量的应用程序

创建项目

一路 Next 就行了,没有华为真机可以使用模拟器运行
image.png

找到 Device Manager,我的账号还走了一遍邮件申请流程,如果没有则忽略,直接点 create 创建模拟器,目前官方只提供了 Phone 手机端模拟器,平板、手表暂不支持。

夸一下鸿蒙模拟器,运行比隔壁的 Android 模拟器快多了!!!
image.png

项目结构概览
  • 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 包管理服务一样,进行包的安装、更新、发布等

  1. https://developer.huawei.com/consumer/cn/download/ 下载 Command Line Tools

image.png
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 生效配置信息

元服务

元服务是鸿蒙对标的微信小程序,其设计目的是让用户无需安装即可快速获取特定的服务或功能,集成在系统级别。华为会对微信放开口子,再做一套生态吗🐶🐶🐶

创建元服务

开发前,需要注册华为开发者帐号创建您的元服务

image.png
创建完后,去DevEco Studio 创建你的元服务项目,一直 Next 执行下去就好,过程中会让你绑定刚才创建的元服务id

image.png

开发方式

对标的微信小程序,那自然少不了一些工具来进行项目间的转换,下面介绍下主流的元服务开发方式

元服务原生

优点

  • 性能最优: 直接使用 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 版,因为有些转译问题你有可能当天发现了,第二天就被官方修复掉了

image.png

选择创建“Atomic Service”,选择ASCF Ability模板,然后单击Next
按这个流程继续操作https://developer.huawei.com/consumer/cn/doc/atomic-ascf-V5/c...

  1. 使用命令行进行转译(推荐)

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 开发的小程序,转鸿蒙也会更顺手一点


抠键盘养你
2 声望0 粉丝