前言
这是一篇迟来的文章,起因是去年有个项目需要鸿蒙化,恰巧华为正好在我工作的区域进行鸿蒙推广,可以脱产公出学习。
本着但凡不是在办公室都是摸鱼的精神,我去学习了2天。
然后通过与伙伴们的努力,我们于去年写了两个鸿蒙的SDK。具体开发细节就不多说了,聊聊我对HarmonyOS的理解。
系统简介
Android与纯血HarmonyOS
- AOSP:Android开源项目(Android Open Source Project) ,是由Google主导的的开源项目,通过它你可以编译出在智能设备上运行的纯净操作系统,就像一个毛坯房一样,一个房子的内在和结构都具备,你可以在它之上自由发挥,打造你自己的专属的操作系统。
- Android:在首字母大写的时候为一种商用属性,代表的是Google的商标,Android操作系统是Google在AOSP之上打造的智能设备操作系统,概括来说就是:开源部分AOSP + 闭源部分(例如GMS[Google Mobile Service]) 。
- 当前的HarmonyOS:是基于OpenHarmony和AOSP打造的商用版本的操作系统,现在的搭载鸿蒙操作系统的手机之所以能够运行Android软件就是因为是因为HarmonyOS兼容了AOSP应用。 正是这个原图,目前的华为手机还是可以安装.apk安装包。
- HarmonyOS Next:将去掉AOSP内核,不再兼容.apk安装包。
HarmonyOS与OpenHarmonyOS
小结
- HarmonyOS的开源形式与Android的开源形式非常类似
- 开放原子开源基金会的白金捐赠人很BYD(Be Your Dady)
万物归一
苹果系统设计思路与华为系统的设计思路
- 苹果的思路是从一个Core里面拉出不同的分支,进而演化成为不同的操作系统,适配和开发不同的设备
- 华为的思路是只有一个HarmonyOS系统,它可以针对不同的设备进行适配与开发
1+8+N
- 万物互联,自由流转
- 统一OS,弹性部署,组件化和组件弹性化等设计方法,做到硬件资源的可大可小,在多种终端设备间,按需弹性部署,全面覆盖了ARM、RISC-V、x86等各种CPU,从百KiB到GiB级别的RAM。
小结
- 架构没有所谓好坏之分,在合适的场景及合适的业务下,使用合适的架构即可
- HarmonyOS从物联网出发设计的OS,一套SDK对应多设备,固然有好处,不过对于处理逻辑层代码的人,会增加适配工作量
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的超集,甚至将其看做是一门新的编程语言也不为过
元服务
微信小程序与元服务
应用级,依托于微信App | 系统级,依托于HarmonyOS |
主要语言是JavaScript,WXML,WXSS | ArkTS |
没有手机桌面安装Widget | 可以在手机桌面安装Widget |
与App独立 | 既可以独立于App,也可以App联合开发 |
编写元服务的注意事项
- 编写元服务的API只是HarmonyOS的一个子集,所以编写功能上会收到限制
- 一个元服务页面可以无缝接入到App中,但是App的页面要改造成为元服务可能有一定的成本
小结
- 元服务实际上就是对微信小程序的模仿
- 微信小程序的优点元服务都有,同时元服务是系统级别的应用,支持Widget,可以认为是一个mini app
- HarmonyOS中,App开发与元服务都是使用ArkTS开发,保证了开发语言一致性,提高效率
- App与元服务可分可合,灵活度高
系统能力
原生自带,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也可以简单、快速的调用其能力。
第三方库
- 整体管理、分发、集成的方式与npm基本一致。
- ohpm中库的扩充,主要通过以下几种方式:
-
- 直接从npm的库中进行拿来主义,这种库多见于纯逻辑库,可能只需要遵循ohpm的规则即可
- 从npm的库,进行胶水层的封装,比如ohos/axios,实际上就是做了适配层的封装
- 从npm的库,进行改造,因为ArkTS的语法更加严格,可能会涉及核心代码的重写
- 从零开始的ArkTS造轮子
上架
不能说和苹果很像,就是和苹果一模一样:
- 鸿蒙开发、测试分发、上架基本与Apple Develop一样,这样就相当于强有力的审核机制在其中,能一定程度上保证App质量
- 不允许侧载安装,这一点与安卓有所不同,基本与苹果一致
- 考虑到国情,有一定的包容性,如遇紧急bug需要上架修复,拥有先上后审政策(一年的次数有限)
总结
看HarmonyOS,有一种这样的感觉:左手安卓,右手苹果,怀里还揣着前端。
我写此文的目的是让大家对鸿蒙系统有一个大致的了解,本人主职是iOS开发,写ArkTS与ArkUI的思路都是以SwiftUI为主,虽然我压根没好好学SwiftUI。
无意引战,大家随意。