初识 Harmony OS Next 开发【起航篇】

鸿蒙

在鸿蒙系统中,应用服务主要以两种形式存在:鸿蒙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/apis-V5

1, 鸿蒙提供了ASCF工具,可以帮助开发者把微信小程序,直接转成鸿蒙元服务
开发之前,先要去安装一个 ASCF 插件,在这里我反而更推荐 beta 版,因为有些转译问题你有可能当天发现了,第二天就被官方修复掉了

image.png

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

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

https://developer.huawei.com/consumer/cn/doc/atomic-ascf-V5/run-ascf-cli-V5
我更推荐使用命令行的方式,对微信小程序进行转译,你可以更直观的找到转译错误,以及编译的 debug 信息

转译小程序后的产物在 xxx/ascf/ascf_src 下,对标 ASCF demo 项目的 ascf_src 目录,直接替换掉

uniapp-鸿蒙元服务

https://uniapp.dcloud.net.cn/tutorial/mp-harmony/intro.html

可以看到也是使用到 ASCF 工具,如果之前就用 uniapp 开发的小程序,转鸿蒙也会更顺手一点

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容