一文带你了解HarmonyOS

0 阅读8分钟

前言

这是一篇迟来的文章,起因是去年有个项目需要鸿蒙化,恰巧华为正好在我工作的区域进行鸿蒙推广,可以脱产公出学习。

本着但凡不是在办公室都是摸鱼的精神,我去学习了2天。

然后通过与伙伴们的努力,我们于去年写了两个鸿蒙的SDK。具体开发细节就不多说了,聊聊我对HarmonyOS的理解。

系统简介

Android与纯血HarmonyOS

  • AOSP:Android开源项目(Android Open Source Project) ,是由Google主导的的开源项目,通过它你可以编译出在智能设备上运行的纯净操作系统,就像一个毛坯房一样,一个房子的内在和结构都具备,你可以在它之上自由发挥,打造你自己的专属的操作系统。
  • Android:在首字母大写的时候为一种商用属性,代表的是Google的商标,Android操作系统是Google在AOSP之上打造的智能设备操作系统,概括来说就是:开源部分AOSP + 闭源部分(例如GMS[Google Mobile Service])
  • 当前的HarmonyOS:是基于OpenHarmonyAOSP打造的商用版本的操作系统,现在的搭载鸿蒙操作系统的手机之所以能够运行Android软件就是因为是因为HarmonyOS兼容了AOSP应用。 正是这个原图,目前的华为手机还是可以安装.apk安装包。
  • HarmonyOS Next:将去掉AOSP内核,不再兼容.apk安装包。

HarmonyOS与OpenHarmonyOS

小结

  • HarmonyOS的开源形式与Android的开源形式非常类似
  • 开放原子开源基金会的白金捐赠人很BYD(Be Your Dady)

www.openatom.cn/

gitee.com/openharmony

万物归一

苹果系统设计思路与华为系统的设计思路

  • 苹果的思路是从一个Core里面拉出不同的分支,进而演化成为不同的操作系统,适配和开发不同的设备
  • 华为的思路是只有一个HarmonyOS系统,它可以针对不同的设备进行适配与开发

1+8+N

  • 万物互联,自由流转
  • 统一OS,弹性部署,组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间,按需弹性部署,全面覆盖了ARM、RISC-V、x86等各种CPU,从百KiB到GiB级别的RAM。

小结

  • 架构没有所谓好坏之分,在合适的场景及合适的业务下,使用合适的架构即可
  • HarmonyOS从物联网出发设计的OS,一套SDK对应多设备,固然有好处,不过对于处理逻辑层代码的人,会增加适配工作量

ost.51cto.com/posts/2022

ArkTS/ArkUI

其他流行的UI框架与ArkUI

import SwiftUI

struct ContentView: View {
    var body: some View {
        Text("Hello, World!")
        .font(.title)
        .padding()
    }
}
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            HelloWorld()
        }
    }
}

@Composable
fun HelloWorld() {
    Text(text = "Hello, World!")
}
import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World Demo',
      home: Scaffold(
        body: Center(
          child: Text('Hello, World!'),
        ),
      ),
    );
  }
}
@Entry
@Component
struct Index {
  @State message: string = 'Hello World';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
  • 移动端开发的趋势是前端化,大厂不约而同的选择使用声明式UI,并不是相互抄袭,而是从开发体验、开发效率上发现这种范式更加合理
  • 状态管理成为了App顶层设计与UI转换设计的重要课题

ArkTS与TypeScript,为什么选型是TypeScript?

  • TypeScript是开源的,避免不必要的版权纷争
  • ArkTS是HarmonyOS应用开发语言。它在保持TypeScript(简称TS)基本语法风格的基础上,对TS的动态类型特性施加更严格的约束,引入静态类型。同时,提供了声明式UI、状态管理等相应的能力,让开发者可以以更简洁、更自然的方式开发高性能应用
  • TS生态可以说其实就是Web生态,那么在技术选型与第三方生态方面,有绝对的优势

另外,华为在24年10月还推出了仓颉编译语言。它是一款面向全场景智能的新一代编程语言,主打原生智能化、天生全场景、高性能、强安全。主要应用于鸿蒙原生应用及服务应用等场景中,为开发者提供良好的编程体验。面向未来的鸿蒙 AI 原生应用开发。

反正你们爱学就学,我是学不动了。

小结

  • 声明式UI+状态管理,是当前主流开发的首选
  • ArkTS是TypeScript的超集,甚至将其看做是一门新的编程语言也不为过

baike.baidu.com/item/ArkTS/…

元服务

微信小程序与元服务

应用级,依托于微信App系统级,依托于HarmonyOS
主要语言是JavaScript,WXML,WXSSArkTS
没有手机桌面安装Widget可以在手机桌面安装Widget
与App独立既可以独立于App,也可以App联合开发

编写元服务的注意事项

  • 编写元服务的API只是HarmonyOS的一个子集,所以编写功能上会收到限制
  • 一个元服务页面可以无缝接入到App中,但是App的页面要改造成为元服务可能有一定的成本

小结

  • 元服务实际上就是对微信小程序的模仿
  • 微信小程序的优点元服务都有,同时元服务是系统级别的应用,支持Widget,可以认为是一个mini app
  • HarmonyOS中,App开发与元服务都是使用ArkTS开发,保证了开发语言一致性,提高效率
  • App与元服务可分可合,灵活度高

baike.baidu.com/item/%E5%85…

系统能力

原生自带,AI下沉

  • HarmonyOS内置的SDK能力,实际上是与华为云的服务紧密相连的

我们举一个例子,比如OCR能力,再做iOS与Android端的时候,我们需要接入第三方服务,或者接入SDK,在这里HarmonyOS就自带了。再比如推送服务,HarmonyOS就自带推送SDK,这样一来就不用使用第三方服务了。

  • 原生智能,AI能力下沉OS,开发者「零成本」AI化

结合用户在使用华为终端经常遇到的场景和体验,和开发者关注的AI需求,鸿蒙构筑了15+系统级的AI能力,并开放了14+AI控件,覆盖图像、语音、智能推荐等领域。第三方应用开发者通过「低至一行代码」调用文本识别、视觉输入、多主体抠图等系统级原生AI能力,大大降低了开发者调用AI能力的门槛。基于此,用户也将获得系统级的跨应用一致交互体验和安全保障, 这就是原生智能所带来的应用创新体验

例如,在原生鸿蒙版本的小红书接入了Image控件后,用户只需要在图片文字区域单指长按,即可选取图片文字;单指长按图片主体,即可轻松完成抠图,获得与系统图库一致的交互体验;大部分新闻应用都有语音朗读的诉求,但不同应用的体验、位置、路径均有不同,新浪新闻通过接入鸿蒙原生智能的语音朗读控件,即可一键实现听新闻,和播控中心联动实现后台播放。

小结

  • 走友商的路,让友商无路可走,伴随着全家桶式的服务都集成于HarmonyOS,开发者在对于服务选型上可以直接使用其内置的服务能力。但是其实需要注意的是,如果之前已经做过Android与iOS端的开发,已经使用过其他第三方服务,仅在HarmonyOS中使用其内置的服务,可能也会有一定的适配问题,同时HarmonyOS中的内置的服务,仅仅只是当前不收费,但是天下没有免费的蛋糕,这些服务后期还是要收费的,所以需要慎重考虑。
  • 目前各家公司都在其手机上部署其AI产品与模型,不过大部分的AI应用都是针对的系统级的应用下放了权限,HarmonyOS的AI能力将其下放到应用级,让App也可以简单、快速的调用其能力。

www.iheima.com/article-369…

第三方库

  • 整体管理、分发、集成的方式与npm基本一致。
  • ohpm中库的扩充,主要通过以下几种方式:
    • 直接从npm的库中进行拿来主义,这种库多见于纯逻辑库,可能只需要遵循ohpm的规则即可
    • 从npm的库,进行胶水层的封装,比如ohos/axios,实际上就是做了适配层的封装
    • 从npm的库,进行改造,因为ArkTS的语法更加严格,可能会涉及核心代码的重写
    • 从零开始的ArkTS造轮子

ohpm.openharmony.cn/#/cn/home

上架

不能说和苹果很像,就是和苹果一模一样:

  • 鸿蒙开发、测试分发、上架基本与Apple Develop一样,这样就相当于强有力的审核机制在其中,能一定程度上保证App质量
  • 不允许侧载安装,这一点与安卓有所不同,基本与苹果一致
  • 考虑到国情,有一定的包容性,如遇紧急bug需要上架修复,拥有先上后审政策(一年的次数有限)

总结

看HarmonyOS,有一种这样的感觉:左手安卓,右手苹果,怀里还揣着前端。

我写此文的目的是让大家对鸿蒙系统有一个大致的了解,本人主职是iOS开发,写ArkTS与ArkUI的思路都是以SwiftUI为主,虽然我压根没好好学SwiftUI。

无意引战,大家随意。

参考文档

developer.huawei.com/consumer/cn…