草庐IT

到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统

yuanlulu 2024-04-19 原文

为什么写本文

最近看到两个跟鸿蒙操作系统相关的新闻,说的是龙芯适配了鸿蒙操作系统,还有一款使用紫光cpu的平板也支持了鸿蒙操作系统。具体见:
历史性一刻!最强国产强强联合:龙芯支持开放鸿蒙的意义是什么?
全球首款开源鸿蒙平板来了,但我劝你先别买

很多人觉得有啥了不起呀,华为不是老早就宣布鸿蒙os的设备不是过亿了嘛。但是注意这里说的都是开源鸿蒙(OpenHarmony),和华为手机上的那个不是一回事。

而且网上一直有各种骂战,有人说华为是国产希望,必须支持,也有人说华为鸿蒙就是安卓套壳,消费国人热情。最主要的是鸿蒙的各种讨论隔一阵就来一次,每一次华为发布新设备或者鸿蒙版本,都带起一阵对喷。
那华为的鸿蒙os是不是真的?还是华为在用安卓骗消费者呢?
我个人是一个程序员,工作内容和鸿蒙有些关系,我就从自己的视角讲一下这个问题。纯粹的个人看法,如果你觉得不对,一定是我错了,不要怀疑,不要争论。

到底有几个鸿蒙OS

普通人对于技术细节不了解,加上华为的宣传上做了一定的小聪明,导致公众认知错位,有争论就在所难免了。在任何争论前,先要定义争论的对象是什么,有些争论存在是因为讨论的不是一个东西,所谓驴唇不对马嘴。

我们先来看看到底有几种鸿蒙OS。

一. 理想鸿蒙

这个也可以叫做“PPT鸿蒙”。 余承东在HDC2019大会上的PPT是鸿蒙对外的一次全面描述。但是注意,这次大会上发布的更像是一个IP,从此大家都知道华为有个牛逼的操作系统叫鸿蒙。但是PPT里写的微内核等愿景还没实现,还需要很长的路要走。很多不做开发的人觉得鸿蒙几年前就发布了,应该很成熟了吧,国产之光,为之骄傲。其实目前华为的要的就是这个目的,在被制裁的节骨眼上,为了稳住市场信心所做的一次营销。
虽然是营销,但也不全是吹牛,华为也在做一些实事,就是后面的两个鸿蒙。

二. AOSP鸿蒙

也可叫做“套壳鸿蒙”,就是大家在华为手机上能看到的那个鸿蒙操作系统 。关于鸿蒙是不是安装套壳的争论就来自这里。华为短时间内无法开发出媲美安卓的操作系统,消费者也不可能接受体验倒退10年的手机,所以华为在发布了“理想鸿蒙”之后,在安卓代码基础上做了修改,加入了“PPT鸿蒙”里的一些特性,推出了这个争论最大的操作系统。
对于手机鸿蒙操作系统有很多讨论,这种讨论的结果就是很多人对华为路转黑,觉得华为消费爱国情怀:
如何看待鸿蒙 OS 3.0 切换到英语由HarmonyOS 变成了 Android System?
为什么鸿蒙系统里已经找不到Android字样了,部分网友依然认为鸿蒙是安卓套壳?
鸿蒙 3.0 公布兼容安卓 12,它的主系统内核是什么?

我理解,华为的这个“AOSP鸿蒙”就像“米UI”,算是一个深度定制的安卓操作系统,但是因为营销宣传的原因,华为一直有意无意误导消费者,一些人觉得华为做的鸿蒙已经可以跟安卓抗衡了,有些却觉得被骗了,因此有了较多争论。但是华为自己短时间内拿不出一个可以完全替代安卓的操作系统,只能回避这些争论。

三. 开源鸿蒙(OpenHarmony)

这个鸿蒙操作系统和手机上那个不是一回事,开头新闻里说的龙芯支持的就是这个操作系统。这个操作系统底层内核有两种内核(linux和liteos),开发应用使用的是js,而不是安卓的java。这个不是套壳安卓,算是真正的自研。但是内部很多思想都借鉴了安卓,很多地方就是把安卓的机制重新实现了一遍。同时“理想鸿蒙”里宣称的一些分布式思想在这个操作系统里也有实现,但其充其量只是一个基于linux的嵌入式操作系统,还达不到“理想鸿蒙”的标准。

目前这个操作系统是完全开源的,普通人也可以下载代码,地址在:OpenHarmony开源地址
但是这个操作系统还不成熟,支持的硬件还比较少,开源社区也只维护了几个开发板:OpenHarmony开发板列表

之所以龙芯适配OpenHarmony还能出个新闻,根本原因还是OpenHarmony支持的硬件少,多出一个都是大新闻。整体来说还不成熟,需要很长时间的打磨。

总结

目前鸿蒙是华为的一个大IP,其长远规划就是“理想鸿蒙”的样子。但是普通消费者拿着华为手机用着“AOSP鸿蒙”,却以为自己用的是“理想鸿蒙”。华为在营销上也混淆了“理想鸿蒙”和“AOSP鸿蒙”,导致招来很多人的反感。但是华为作为被美国精准狙击的公司,必须找退路,而且这个退路不是一朝一夕能建好的,所以推出了“AOSP鸿蒙”作为暂时的应敌之策,并对外宣称退路已经建好了,不怕美国制裁,保持消费者对华为的信心。但是私底下也在推进OpenHarmony,将来成熟后就能成为不惧制裁的底牌。

结论就是:华为宣传上有误导,但是鸿蒙也不是空气

我个人希望华为能加大OpenHarmony的投入,不要因为有“AOSP鸿蒙”这个挡箭牌就止步于此。

题外话

多少公司想开发自己的手机操作系统,结果只有安卓和苹果做成了,大如三星都搞不定。所以华为短期内还是会一边用“AOSP鸿蒙”来冒充“理想鸿蒙”,一边推进OpenHarmony。

加班期间所写,本文写完无校对,错字什么的请多包涵。

参考资料

历史性一刻!最强国产强强联合:龙芯支持开放鸿蒙的意义是什么?

全球首款开源鸿蒙平板来了,但我劝你先别买

余承东回应鸿蒙OS十大疑云:人都是被逼出来的

华为余承东正式宣布!鸿蒙OS设备数突破2.2亿,明年还有大动作

为什么鸿蒙系统里已经找不到Android字样了,部分网友依然认为鸿蒙是安卓套壳?

鸿蒙 3.0 公布兼容安卓 12,它的主系统内核是什么?

OpenHarmony开源地址

OpenHarmony开发板列表

如何看待鸿蒙 OS 3.0 切换到英语由HarmonyOS 变成了 Android System?

有关到底有几个鸿蒙OS? 谈谈我眼里的鸿蒙操作系统的更多相关文章

  1. ruby-on-rails - 如何在 mac os snow leopard 中升级 ruby​​ 和 rails - 2

    我想将我的MacSnowLeopardruby​​从1.8.7升级到1.9.1版本,有人知道轻松且最好的升级方法吗?因为我读了一些论坛/帖子/博客/讨论说覆盖苹果发布的ruby不好将Rails从版本2.2.2升级到2.3.8的最佳方法是什么?因为我找到的所有信息都仅适用于豹/老虎,而且很少有关于雪豹的复杂文章。他们还说覆盖apple提供的rails不好吗。谁能帮帮我?谢谢。 最佳答案 DanBenjamin有一些greatinstructionsforcompilingandinstallingRuby,RubyGemsandRai

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  4. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  5. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  6. ruby - 在 Ruby 中是否有一种惯用的方法来操作 2 个数组? - 2

    a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],

  7. ruby-on-rails - OS X Mavericks 破坏了 rbenv? - 2

    最近,我安装了OSXMavericks,它似乎弄乱了我的开发环境。我在运行“railsnewfirst_app”后收到此消息:Youruseraccountisn'tallowedtoinstalltothesystemRubygems.Youcancancelthisinstallationandrun:bundleinstall--pathvendor/bundletoinstallthegemsinto./vendor/bundle/,oryoucanenteryourpasswordandinstallthebundledgemstoRubygemsusingsudo.Pass

  8. ruby-on-rails - 如何让 Rails View 返回其关联的操作名称? - 2

    我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam

  9. ruby-on-rails - 无法在 OS X Mavericks 中安装 gem 'therubyracer' - 2

    我是mac的新手,尝试bundleinstall一个克隆的railsrepo。我在安装libv8gem时遇到错误,google并找到了解决方案并做了brewinstalllibv8geminstalllibv8----with-system-v8接下来我中了thyreracergem,完整trace如下Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./Users/anand/.rvm/rubies/

  10. ruby-on-rails - gem install rmagick -v 2.13.1 错误 Failed to build gem native extension on Mac OS 10.9.1 - 2

    我已经通过提供MagickWand.h的路径尝试了一切,我安装了命令工具。谁能帮帮我?$geminstallrmagick-v2.13.1Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingrmagick:ERROR:Failedtobuildgemnativeextension./Users/ghazanfarali/.rvm/rubies/ruby-1.8.7-p357/bin/rubyextconf.rbcheckingforRubyversion>=1.8.5...yescheckingfor/

随机推荐