总结一下,什么是鸿蒙?

本文来源于公众号刘润,已获授权白名单转载

如何帮助鸿蒙?

在讨论如何帮助鸿蒙之前,我们首先还是非常有必要搞清楚,到底什么是鸿蒙。


鸿蒙这个名字下,有两个东西:万物鸿蒙,和手机鸿蒙。他们彼此独立,又相互协同。 

万物鸿蒙,是基于LiteOS的。微内核。这是很早之前,华为就开始储备的一套AIoT(万物互联操作系统)。因为要用在体温计里,摄像头里,门铃里,所以LiteOS核心是Lite(轻量),也就是代码体积小,省电。 

这个LiteOS对应的,是市场上谷歌的Fuchsia,小米的Vela,阿里的AliOS Things,腾讯的TencentOS Tiny。 

而手机鸿蒙,顾名思义,是用在手机里的。宏内核。代码可以重一些。追求体验。手机鸿蒙,是基于AOSP开发的。很多人都听说AOSP,不明觉厉。什么是AOSP?AOSP,就是Android Open Source Project。中文是:安卓开源项目。 

总有人说,这个AOSP不是安卓。我们就来讲讲AOSP和安卓之间的关系。

一个手机操作系统,简单来说,有三层东西: 

A)Linux。 

这是大量开源软件的最内核。PC上的红旗Linux操作系统,谷歌的Chrome OS,包括安卓,最最内核,都是Linux。 

B)AOSP 

AOSP,在Linux基础上,提供了手机场景的很多特定代码。你可以叫它安卓。你也可以叫它安卓的半成品。谷歌允许你给AOSP套壳,定制成你自己的样子。谷歌为AOSP提供了绝大部分代码(据说94%),但是这个AOSP是开源的,这意味着只要遵守开源协议,你可以在AOSP,开发出一个自己的分支来。 

C)安卓操作系统 

谷歌自己,在AOSP的基础上,开发了GMS增强包。所以,有人把AOSP+GMS,叫做安卓操作系统(Android)。 

但是,国内是不能用GMS的。华为,小米,魅族等等,就在AOSP的基础上,套了壳。华为套完壳叫EMUI,小米套完壳叫MIUI,魅族叫Flyme。

所以,从这个意义上,谷歌的安卓,华为的EMUI,小米的MIUI,魅族的Flyme,是一类东西。都是AOSP加了些自己的东西。 

大量的APP厂商,都是基于AOSP开发APP的。只要你们的操作系统是基于AOSP的,就能兼容绝大部分APP。 

但是AOSP也在不断修补Bug,不断升级。所以,上一层的操作系统,也要不断调整,把壳套在新的AOSP上。

现在的AOSP到11版了。小米的MIUI 12.5,就是基于AOSP 11的。

----

回到手机鸿蒙。 

手机鸿蒙,为了兼容现存的APP,必须基于AOSP。但是,手机鸿蒙相对于华为自己以前的EMUI,做了很多重大的升级。打个比方,以前套的是铁壳。现在套的是钛合金的壳了。 

有人问,这个铁壳和钛合金壳之间有什么区别? 

铁壳里,主要是AOSP。钛合金壳里,除了AOSP,至少还多了两样东西。一个是独立于AOSP的,华为自己的内核(openHMS)。所以,鸿蒙称自己双内核。一个是跨设备的集成开发环境(IDE),让APP开发商们一次写代码,可以部署在多设备,比如在手机,平板,电视上。

所以,钛合金壳,至少有三样东西:AOSP,openHMS,IDE。 

华为的战略是,1)用AOSP兼容现有的微信,微博,支付宝;2)吸引足够多的开发商使用IDE,从而产生大量基于openHMS的APP;3)最后抛弃AOSP。 

为此,很多大学已经开始开设了鸿蒙班。 

这件事,微软做过一次(Windows Phone)。失败了。败在开发商们不来。但是,华为有机会。

就看华为能不能说服微信,微博,支付宝,以及其它几百万个APP,在iOS,安卓之外,腾出开发力量为手机鸿蒙开发APP。

关键问题来了。手机鸿蒙,是不是安卓套壳? 

这个问题的关键,是看你说的安卓,指的是什么。 

如果你指的是谷歌的AOSP+GMS,那当然不是。因为华为没用GMS。

如果你指的是AOSP,那是的。但这也是必须。不在AOSP基础上开发,怎么能兼容现存的安卓APP。而且,基于AOSP套壳,不违法。只要遵守开源协议,谁也管不了。 

不过话说回来,如果基于AOSP套壳,可以被称为中国自主开发的操作系统的话,那么小米的MIUI,魅族的Flyme也算。不管你个人觉得哪个好用,喜欢哪个,但他们本质上是一种东西,没有根本的差别。

当然,你也可以说:我不是“基于AOSP套壳”,我只是为了用户体验,“过渡性地用了AOSP的代码”。我的壳里,还有第二颗心:openHMS。

这么说也行。你也可以把鸿蒙叫一个“容器”,而不是“壳”。

如果理解了这些事,就会明白,为什么很多人在网上要求小米,OPPO,VIVO,魅族用鸿蒙(手机鸿蒙),而这些厂商不表态了。因为他们大概率不会用。

如果要用手机鸿蒙,就意味着,小米要放弃自己的MIUI,魅族要放弃自己的Flyme。这几乎是不可能的。当然,华为也不会让他们用手机鸿蒙。这是各家手机厂家的核心差异所在。

所以,网民们的热情是可以理解的。但是,可能夺他人之情了。他们大概率一个不愿给,一个不愿用。

----

总结一下,什么是鸿蒙?

鸿蒙是:万物鸿蒙+手机鸿蒙。这是两个东西,放在了一个名字下。所以很容易让人迷惑。当然,他们之间也有很多协同。比如把手机上的音乐,在音箱上放。

但是,这些协同,大多是基于通信协议层面的。理论上,异构的系统也能实现。苹果的手机,加OPPO的耳机,也可以协同。只要都是蓝牙协议。

当然,两个系统都是华为开发的,协同效率会更好一些。

与华为的鸿蒙(万物鸿蒙+手机鸿蒙)对应的,是小米的Vela+MIUI。是谷歌的Fuchsia+Android。是阿里的AliOS Things+AliOS。

只是,大家没有起一个统一的名字。

支持鸿蒙。但前提是懂得什么是鸿蒙。只有这样,我们作为消费者,才知道在哪里能帮得上鸿蒙。

怎么帮鸿蒙?

帮助手机鸿蒙的办法,是多买华为的手机。

估计也只有华为会用手机鸿蒙。华为可能不会给别人用自己的手机鸿蒙。就算愿意给,别人也大概率不会用,因为他们有自己的。

甚至,荣耀都未必会用。因为荣耀分拆出去后,可能有机会重返美国市场。用了华为的手机鸿蒙,就会有变数。

所以,帮助手机鸿蒙的办法,是多买华为手机。

而帮助万物鸿蒙的办法,是多买装了万物鸿蒙的电饭煲,剃须刀,料理机。

有人说,万物鸿蒙的占有率,必须超过16%,才有机会活下来。这个16%,就是我说的“临界规模”。

多买万物鸿蒙的设备。多买。这个16%,必须尽快达到。不然,不进则退。

所以,帮助鸿蒙的办法,不是争吵鸿蒙是不是安卓套壳,不是劝其他手机厂商用鸿蒙。而是多买华为手机,多买鸿蒙电饭煲。

直到,突破16%的临界规模。

加油鸿蒙。祝福鸿蒙。

— 完 —点这里????关注我,记得标星呀~
长按进入小程序,进行打卡签到新一期打卡签到,奖品超多(更多精彩值得期待……)
鸿蒙最近热文:华为鸿蒙系统是安卓套壳?直接看代码
HarmonyOS完全升级攻略:消费者公测&内测&线下升级
给力!华为鸿蒙操作系统入门到精通
鸿蒙HarmonyOS,真的来了!
萌新第一次用鸿蒙跑hello world
华为鸿蒙系统深度研究 (PPT演示)
HarmonyOS到底是不是Android套皮?
2T技术资源大放送!包括但不限于:C/C++,Linux,Python,Java,人工智能,考研,软考,英语,等等。在公众号内回复「资源」,即可免费获取!回复「社群」,可以邀请你加入读者群!
❤️给个「在看」,是对我最大的支持❤️
<think> 我们正在总结鸿蒙开发人员初学安卓时,为什么在重写生命周期方法(如onCreate)时不使用private修饰符的原因。注意,鸿蒙开发人员可能熟悉HarmonyOS的开发模式,而Android有类似但也有差异的机制。 核心原因:在Java中,子类重写父类方法时,不能降低访问权限。具体来说: - 如果父类的方法是protected,子类重写时不能使用private(因为private比protected更严格,即权限更小)。 - Android的Activity类中,生命周期方法(如onCreate)被定义为protected,因此我们在自定义Activity中重写时,至少需要使用protected或更宽松的访问修饰符(如public),不能使用private。 详细解释: 1. **重写规则**:在面向对象编程中,子类重写父类方法时,访问修饰符必须不小于父类方法的访问修饰符。即: - 父类方法为public,子类必须为public。 - 父类方法为protected,子类可以为protected或public,但不能是private或默认(包访问权限,如果不在同一包)。 2. **Android框架设计**:Activity的生命周期方法(onCreate, onStart, onResume等)在Activity类中定义为protected。这是为了让子类可以重写它们,同时防止外部类直接调用(封装性)。因此,我们在自定义Activity中重写这些方法时,必须使用protected或public。 3. **鸿蒙开发者的疑问**:鸿蒙OS中可能有类似机制,但细节可能不同。鸿蒙开发者可能习惯在HarmonyOS中重写生命周期方法时使用private?实际上,在HarmonyOS中,生命周期方法在Ability或AbilitySlice中也是protected,因此同样不能重写为private。 4. **为什么不用private?** 因为如果使用private,则子类的方法实际上并没有重写父类的方法,而是定义了一个新的方法。这样,当系统调用父类(Activity)的生命周期方法时,子类的private方法不会被调用,导致生命周期回调失败。 5. **实际影响**:如果错误地将onCreate等生命周期方法声明为private,编译器不会报错(因为编译器认为这是一个新方法,而不是重写),但运行时系统调用的是父类的protected方法,而子类的private方法不会被调用。结果就是你的初始化代码不会执行,导致界面空白或功能异常。 6. **解决方案**:在Android开发中,正确做法是使用protected(或public,但不推荐,因为没必要扩大访问权限)来重写生命周期方法。同时,使用@Override注解,这样如果方法签名与父类不一致(包括访问修饰符问题),编译器会报错。例如: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须调用父类方法 // 初始化代码 } ``` 使用@Override注解可以避免因访问修饰符错误导致的问题。 总结:鸿蒙开发人员初学Android时,在重写生命周期方法时不用private的原因主要是Java语言的重写规则(不能降低访问权限)和Android框架的设计(父类方法为protected)。使用private会导致方法无法被正确重写,从而生命周期回调失效。 为了帮助理解,我们可以用公式表示访问权限的大小关系: $$ \text{public} > \text{protected} > \text{默认(包访问权限)} > \text{private} $$ 子类重写的方法访问权限必须 $\geq$ 父类方法的访问权限。 因此,当父类方法为protected时,子类重写的方法不能是private(因为private < protected),否则编译时(如果使用@Override会报错)或运行时无法正确重写。 相关问题: §§相关问题§§ 1. 在Java中,重写方法时访问修饰符的规则是什么? 2. Android中Activity的生命周期方法在父类中是如何声明的? 3. 如果错误地将生命周期方法声明为private,会发生什么情况? 4. 鸿蒙OS中生命周期方法的访问修饰符是如何定义的?与Android有何异同? </think>根据鸿蒙开发人员初学安卓时的常见疑问,总结在重写生命周期方法(如`onCreate`)时**不使用`private`修饰符**的核心原因如下: ### 一、语言规则限制:重写权限不能缩小(核心约束) 在 Java 继承体系中,子类重写父类方法时**访问权限不能低于父类**(Java 语言规范
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值