不吹不黑,辩证看待开发者是否需要入坑鸿蒙

2024-01-02 05:44

本文主要是介绍不吹不黑,辩证看待开发者是否需要入坑鸿蒙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

自打华为2019年发布鸿蒙操作系统以来,网上各种声音百家争鸣。尤其是2023年发布会公布的鸿蒙4.0宣称不再支持Android,更激烈的讨论随之而来。
本文没有宏大的叙事,只有基于现实的考量。
通过本文,你将了解到:

  1. HarmonyOS与OpenHarmony区别
  2. 华为手机的市场占有率
  3. HarmonyOS的市场占有率
  4. 移动开发现状
  5. 鸿蒙开发优劣势
  6. 到底需不需要入坑?

1. HarmonyOS与OpenHarmony区别

HarmonyOS

移动操作系统历史

当下移动端两大巨无霸操作系统瓜分了绝大部分市场:
image.png
iOS是闭源的,只有唯一的一家厂商:Apple。
Google开放了Android基础的能力,这些能力集构成了:Android Open Source Project(简称AOSP),这块是开源免费的,任何人/公司都可以基于此进行二次开发改动。
国内各大手机厂商基于此开发出自己的系统,大浪淘沙,目前主流市场上主要手机厂商及其操作系统如下:
image.png

以上系统均衍生自AOSP,在国内使用没什么问题,若要在国外使用则需要使用Google提供的一些基础服务:统称GMS,这是需要授权的。

HarmonyOS历史与现状

华为在2019年发布了HarmonyOS 1.0 ,彼时的该系统主要应用于智慧屏、手表等设备,在2021年发布的HarmonyOS 2.0 全面应用于Android手机。
也就是这个时候华为/荣耀(未分家前)手机设备都搭载了HarmonyOS,而我们知道换了手机系统但手机上的App并没有换,照样能够正常运行。
依照华为的说法,HarmonyOS兼容Android,而部分网友认为该兼容其实就是Android套壳。
这个时候开发者无需关心鸿蒙开发,因为即使开发了Android app也能够在搭载鸿蒙系统的设备上运行。
2023年华为宣布HarmonyOS Next不再支持Android,也就是说想要在HarmonyOS Next上安装Android app是不可能的事了。
那问题就来了,作为一名Android开发者,以前只需要一套代码就可以在华为/小米/荣耀/OPPO/VIVO上运行,现在不行了,需要单独针对搭载了HarmonyOS Next的华为手机开发一个App。
若当前的App是跨端开发,如使用RN、Flutter等,那么HarmonyOS的支持力度更不可知。

OpenHarmony

从上面的描述可知,只有华为一家主推HarmonyOS,相比整个市场还是太单薄,它需要更多的厂商共同使用、共同促进新系统的发展。
因此华为将HarmonyOS的基础能力剥离出来形成了:OpenAtom OpenHarmony(简称:OpenHarmony)。
OpenHarmony是开放原子开源基金会孵化及运营的开源项目。OpenHarmony由华为公司贡献主要代码、由多家单位共建,具备面向全场景、分布式等特点,是一款全领域、新一代、开源开放的智能终端操作系统。
OpenHarmony类似于Android领域的AOSP,而HarmonyOS则是华为基于OpenHarmony开发的商业版OS。
同样的,其它厂商也可以基于OpenHarmony做改动,发布属于自己的鸿蒙商业版。
通常说的鸿蒙生态是指OpenHarmony及其衍生的商业版鸿蒙系统。
OpenHarmony源码

2. 华为手机的市场占有率

全球手机出货量

image.png
可以看出Android(80%)和iOS(20%)瓜分了天下。
图上没有华为,它被归入了Others里。
点击查看数据来源

再看另一家的统计:
image.png
华为占用约为5%。
点击查看数据来源

第三家的统计:
image.png
点击查看数据来源

虽然各家统计的数据有差异,但可以看出华为在全球手机市场份额并不高。

国内手机市场占有率

image.png
点击查看数据来源

这么看,华为在国内的占有率达到了1/4。

3. HarmonyOS的市场占有率

全球市场系统占有率

手机市场占有率并不代表都搭载了鸿蒙操作系统。
来看看各大操作系统的占有率。
image.png
点击查看数据来源

可以看出,Android和iOS设备量很多,遥遥领先。

再细分移动端的市场占有:
image.png
image.png

点击查看数据来源
同样的Android遥遥领先,此时HarmonyOS占据了3%的份额。

美国市场占有率

image.png
image.png
可以看出,在美国,Android、iOS势均力敌,唯二的存在。

印度市场占有率

再看神秘的东方大国数据:
image.png

image.png
由此可见,在印度,Android才是和咖喱最配的存在,iOS还是太耗家底了。
怪不得小米等一众国内厂商去卷印度了,市场大大滴有,就看能不能躲过印度的罚款。。。

国内鸿蒙市场占有率

image.png
image.png
国内市场里,HarmonyOS占据高达13%,毕竟国内使用华为(荣耀)手机的存量还是蛮多的。

结论:

国内才是使用鸿蒙系统的大头市场

华为官方宣称的占有率

image.png
点击查看数据来源

这里说的设备不止是智能手机,还有平板、座舱、手表等嵌入式设备。

4. 移动开发现状

iOS开发现状

iOS最先火起来的,遥想十年前,随便一个iOS开发者都能找到工作。而现在存留的iOS开发者自嘲:“Dog都不学iOS”。
以前的开发者要么转行,要么继续用"最好"的编译器(xcode)写"最优秀"的语言(OC),当然也可以用Swift,但限于系统要求,SwiftUI也没有大规模普及。
现在很少见有新鲜的血液学习iOS(也有可能iOS装备比较贵吧)了,再加上各种跨平台的框架的投入使用,原生iOS开发者的生存空间越来越小了。

Android开发现状

无独有偶,移动端的难兄难弟怎么会缺少Android呢?
一开始Android使用Java,后面全面拥抱Kotlin。
一开始画画UI,写写逻辑就能找到一份糊口的工作,现在需要去卷各种框架的底层原理,为了KPI需要去研究各种奇淫技巧的性能优化。
跨平台的框架需要去卷,KMP(已稳定)+Compose你学会了吗?RN、Flutter、Uni-app你又懂了多少?
与iOS相比Android可选择的多一些,可以选择车载等其它嵌入式设备,但多不了多少,原生Android开发者的生存空间亦不容乐观。

跨平台的开发框架移动端原生开发者可以学,前端的同学也会过来学,比如RN,Uni-app优势在前端。

行业萎缩,通常不是技术的错,技术一直在,可惜市场需求变少了

5. 鸿蒙开发优劣势

是机会还是坑?

从国内各种新闻来看:
image.png
image.png
看起来是如火如荼。

从国际的新闻看:
image.png
翻看了前几页的新闻,讨论的热度并不高,大多是搬自国内的新闻。

再说说薪资:
image.png
一看就是有夸大的成分,可能真有人达到了,但人数可能是万里挑一,只讲个例不讲普遍性没有意义。

某Boss搜一下北京的岗位:
img_v3_026m_8d70f837-9ff5-4c81-a250-6b5cf7b3198g.jpg

北京的岗位也不多,而且招的都是比较资深的,北京如此,其它城市更不用说。

鸿蒙的基建

image.png

鸿蒙目前提供提供了方舟编译器,方舟语言、IDE、模拟器等一站式开发工具,开发者可以照着官方文档编写。

根据实操的结论:

  1. 各项更新比较快,导致官方的视频/ppt和实际的有些差异
  2. 模拟器有些卡顿,有点当时Android模拟器刚出来的既视感,真机买不起
  3. 排坑的文档不多,属于摸着官方教程过河

鸿蒙官网

鸿蒙入门的简易程度

  1. 基于TS,前端开发方式,语言并不难入手
  2. IDE和Android Studio同出一源,入手比较快
  3. 声明式UI,画UI快,没接触过的同学需要熟悉一下(现在无论是Swift还是Kotlin都支持声明式UI,前端老早就用得飞起了)
  4. 不用再被graddle各种莫名错误折磨了
  5. 中文文档,对英语不好的同学体验比较好

6. 到底需不需要入坑?

对于任何一个操作系统来说,生态是第一位,鸿蒙也不例外。
横亘于鸿蒙面前的难关:

  1. 主流App是否愿意适配鸿蒙系统?
  2. 其它Android厂商是否愿意接入鸿蒙系统?
  3. 鸿蒙对开发者的支持完善与否?
  4. 鸿蒙是否真如宣传般的优秀?

不论鸿蒙是否成功,它对开发者最大的意义在于:

开辟了新的领域,开发者有机会吃到可能的"红利"

而是否入坑,取决于个人的考量,以下仅供参考:

  1. 如果贵司需要适配鸿蒙,那么只能入坑
  2. 如果对鸿蒙兴趣不足,只是觉得最近的热点有点高,未雨绸缪,想试试水,那么可以照着官方文档试试Demo
  3. 如果押宝鸿蒙,则需要深入鸿蒙的各项开发,而不仅仅只是流于表面,当然此种方式下需要花费更多的时间、精力、头发去探索、排坑
  4. 如果认为鸿蒙没有前途,那么也没必要对此冷嘲热讽,静观其变即可

那么,2024年了,你如何选择呢?

这篇关于不吹不黑,辩证看待开发者是否需要入坑鸿蒙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/561486

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

easyui同时验证账户格式和ajax是否存在

accountName: {validator: function (value, param) {if (!/^[a-zA-Z][a-zA-Z0-9_]{3,15}$/i.test(value)) {$.fn.validatebox.defaults.rules.accountName.message = '账户名称不合法(字母开头,允许4-16字节,允许字母数字下划线)';return fal

【408DS算法题】039进阶-判断图中路径是否存在

Index 题目分析实现总结 题目 对于给定的图G,设计函数实现判断G中是否含有从start结点到stop结点的路径。 分析实现 对于图的路径的存在性判断,有两种做法:(本文的实现均基于邻接矩阵存储方式的图) 1.图的BFS BFS的思路相对比较直观——从起始结点出发进行层次遍历,遍历过程中遇到结点i就表示存在路径start->i,故只需判断每个结点i是否就是stop

linux 判断某个命令是否安装

linux 判断某个命令是否安装 if ! [ -x "$(command -v git)" ]; thenecho 'Error: git is not installed.' >&2exit 1fi

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

鸿蒙开发中实现自定义弹窗 (CustomDialog)

效果图 #思路 创建带有 @CustomDialog 修饰的组件 ,并且在组件内部定义controller: CustomDialogController 实例化CustomDialogController,加载组件,open()-> 打开对话框 , close() -> 关闭对话框 #定义弹窗 (CustomDialog)是什么? CustomDialog是自定义弹窗,可用于广告、中

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl