先歪个楼?说不定以后王者荣耀/和平精英三个区?iOS区/安卓区/鸿蒙区?(划掉
其实开发者文档写的蛮清楚的,既然大家都没耐心看完,我带大家简单看一些亮点。
HOS 是一款 “面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。
在传统的单设备系统能力的基础上,HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
1,对消费者而言,HOS 能够将生活场景中的各类终端进行能力整合,形成一个 “超级虚拟终端”(也就是说你的手机摄像头可以是电脑的摄像头、智慧屏的屏幕可以是手机的大屏、类似于一个硬件池的概念)
2,对应用开发者而言,HarmonyOS 采用了多种分布式技术,使得应用程序的开发实现与不同终端设备的形态差异无关,降低了开发难度和成本。一次开发,多端部署。
3,对设备开发者而言,HarmonyOS 采用了组件化的设计方案,可以根据设备的资源能力和业务特征进行灵活裁剪,满足不同形态的终端设备对于操作系统的要求。
HarmonyOS 整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照 “系统> 子系统 > 功能 / 模块” 逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的子系统或功能 / 模块。
(等开源代码出来以后继续更新)
需要使用HUAWEI DevEco Studio完成。
多设备统一开发环境:支持多种 HarmonyOS 设备的应用开发,包括智慧屏、智能穿戴,轻量级智能穿戴设备。
支持多语言的代码开发和调试:包括 Java、XML(Extensible Markup Language)、C/C++ 、 JS(JavaScript)、CSS(Cascading Style Sheets)和 HML(HarmonyOS Markup Language)。
支持 FA(Feature Ability)和 PA(Particle Ability)快速开发:通过工程向导快速创建 FA/PA 工程模板,一键式打包成 HAP(HarmonyOS Ability Package)。
支持多设备模拟器:提供多设备的模拟器资源,包括智慧屏、智能穿戴等设备的模拟器,方便开发者高效调试。
可能,或许,也许,我是知乎数码圈第一个用HUAWEI DevEco Studio跑出hello world的人?
对,这个和微软的很像,甚至连操作逻辑都类似。但这不能否认,这次的HOS不再只是PPT了,而是从sdk到开发环境再到源码,一个完整的项目。
如果说去年的HDC大会上手0.1的HOS,那么我今天大胆说一句,HOS已经正儿八经的迈出了构建系统开发的第一步。
HarmonyOS 的应用软件包以 APP Pack(Application Package)形式发布,它是由一个或多个 HAP(HarmonyOS Ability Package)以及描述每个 HAP 属性的 http://pack.info 组成。HAP 是 Ability 的部署包,HarmonyOS 应用代码围绕 Ability 组件展开。
还有一些Ability/库文件/资源文件/配置文件/http://pack.info就先放下,关于配置文件部分,我看看如何把代码传上来,没找到如何上传代码。
附连接吧:配置文件示例
这得看怎么理解了,从目前仓库放出来的源码来看,很像是把几个系统级的package放在了一起,用自己的通信协议重新让这几个系统包进行了沟通,而且还得在同一个局域网下。
所以,从这个角度来看,hos仍然不能被定义为我们理解的OS。也不知道后期如何解决后期不在同一局域网下的通信问题。
但从积极的角度考虑,华为这次的开源代码,确实完成了去年PPT上面说的,统一语言编译、多终端开发IDE、应用框架自研。
HOS开发工作正在稳步前进,个人挺期待12月的手机sdk,如何解决兼容性问题,是否会利用安卓的生态 到时候我会看看。
软总线部分的源码看完了,确实是在几个轻量化的“liteOS”上面更新了一些通信协议。这就更让我好奇,12月份的时候手机版本的sdk要怎么发布了。
(看的我脑袋疼,先睡了,明天继续看)
本来是不想回答这个问题的,但是看到华为被黑成这样子,不得不站出来替华为说几句话。
有人说,鸿蒙是换皮安卓。技术上的东西我就不说了,我只是想说,就算华为卖换皮安卓,又如何?
你知道美国人对中国人恶意多大,有多歧视吗?普通美国人只要看到是中国公司的产品,他们就拒绝购买。于是在欧美产生了一门巨大的生意,就是给中国的优秀产品换皮。
给中国产品换白皮的生意实在是太大了,例子遍地都是。在这里我只举两个例子。第一个例子是收音机。现在全世界做收音机技术最好的公司,是广东东莞的德生(Tecsun)。他们最好的机子是 S-2000,定价1600元人民币。
而在美国,贴德生的牌子是卖不出去的。就算我想买也买不到。所以一摸一样的机子,德生贴了美国一家快倒闭的收音机公司伊顿(Eton)的牌子才能在美国出售,身价立刻翻番,达到了450美元。
第二个例子是在广东福建随处可见的藤椅。这种藤椅耐用、透气、有弹性。十分舒服,深受普通人喜爱。在汕头路边摊买这种藤椅只要几十块人民币。但是那些卖藤椅的汕头人是不可能把藤椅卖给美国人的,因为美国人拒绝买中国人的东西。于是宜家给这种藤椅贴了个牌子,定价翻了六七番,变成了80美元。
不知道有多少欧美商家,靠着美国人的种族歧视,靠给中国的优秀产品贴白皮,赚得盆满钵满,成为寄生在中国人身上吸血的无数寄生虫。跟美国几乎全民种族歧视排华相比,我们中国人实在是毫无民族主义了。知乎上那么多人骂华为,为安卓鸣不平。为什么你们不为德生收音机这种优秀的中国民族企业鸣不平?为什么不为那些辛苦制作手工藤椅的农民工们鸣不平?
所以说,即使鸿蒙是换皮安卓,我们也要无条件支持华为这个站起来反抗美国无理打压的公司。白人可以靠给中国产品换白皮赚差价,华为连差价都不赚,凭什么不能给安卓贴黄皮?只要美国歧视中国人中国产品一天,我们中国也要逼迫美国产品贴黄皮才能在中国销售。美国好莱坞电影也要用AI换脸成中国人才能上映。
证明一下在现场
作为比较早期跟鸿蒙团队有接触的开发者。
(此段避免误解,有修改)18年那会是真的一行代码也不给看的,能给看的只有负责人手里的20页ppt,讲鸿蒙概念,都非常宽泛。负责人也很虚心的听了我们开发者的一些想法和诉求。
19年再交流就好了不少,看的出来有成型的思路了。当时讲的一些开发理念,在今天的大会上又再次确认。
到了今年前段时间,突然有了60多Mb的鸿蒙文档,事无巨细的讲每个鸿蒙概念,每个API出入参,用法,只能感慨这个团队是真的能做事的。
今天开源的应该是面向iot那部分,真正给手机用的部分要明年,所以我们跟鸿蒙合作的部分,还是不知道能不能细讲。
只能说手机鸿蒙已经有了,在存量设备上就能跑。但api还不完善,很多android有的特性,鸿蒙还没有,所以应用迁移起来还有点阻碍。到明年应该就还好了。
另外鸿蒙团队也很清楚存量app迁移的问题,跑android虚拟机的方案是不存在的。但他们有一个更折衷的方案去绕。暂不细讲。
最后,来东莞的路上遇到了暴雨,但从会场出来,看到了很漂亮的彩虹。祝福鸿蒙系统,祝福鸿蒙团队。
坚持就是胜利。
在当下如临深渊之局面,将已经计划好的事情一步一步坚持做出来,将雪球坚持滚起来是我对华为最认可的一面。
重复造轮子无所谓,华为这个巨大的商业集团依旧在蓄势,就像那正在积蓄的水库,你看到河床的石头摆放的与隔壁水库一致,但等积蓄到滔天之势看不到石头了,自然所有人就会感慨这片人造奇观的伟力。这种大公司积蓄力量出拳,除非是用全球霸主之力一下打折他的拳头,否则不可能停下来。
我和别的华为黑不一样,我一直说,鸿蒙虽然是ppt但还是有希望的。
因为要搞操作系统,真正的难题压根不是有没有操作系统。
拿个linux内核过来抄一抄改一改加点魔术,新的os内核就来了,再整点驱动和UI,新的os就来了。
你要说他容易吧,肯定不容易,但你要说这技术有多深奥,恐怕也是痴人说梦。
那么,为什么没有好的国产os?为什么没有人去做os?
你不是说不难吗?你不是说不稀奇吗?为什么只有鸿蒙去做了呢?
因为操作系统真正的难题是一个鸡生蛋蛋生鸡的问题。
那就是:如果没人用你的操作系统,程序员为什么要花时间和精力给你开发app,卖给谁?
以及:如果没有程序员花时间和精力给你开发app,用户为什么要用操作系统?
然后就死循环了。
很多人说,鸿蒙刚出来,不要拿去和windows比。
我倒是要反问了,不拿去和windows比,拿去和什么比?
野心那么大,当然要对标windows才对。
那么,windows最早是个什么情况呢?
现在知乎的主要用户群体那个时候应该还没来到地球上,我解释一下。
windows刚出来的时候呢,是非常有冲击力的系统。
就是它把计算机的主流操作方式从命令行变成了鼠标视窗文件夹。
但哪怕是这么牛逼的一个独到的,领先业界的操作系统,刚出来的时候也没多少专用app。
90年代那个时候,绝大多数app都是dos下面的。
仙剑知道吧?dos下面的。
windows是怎么做的呢?兼容dos。
然后,用户面临的选择就变成了:
选windows等于付钱得到dos的应用的体验+视窗鼠标操作逻辑的体验。
不选windows等于dos的应用体验+命令行操作逻辑的体验。
以及不付钱用盗版windows得到dos的应用的体验+视窗鼠标操作逻辑的体验。
用户会选啥,我觉得这几乎不会成为一个难题。
然后windows的用户量就这么爆炸了。
windows的用户量爆炸以后,鸡生蛋还是蛋生鸡的问题也就消失了。
这说明什么?
说明了,哪怕是windows这样经典的操作系统,
要想做大,也必须得有办法突破鸡生蛋蛋生鸡的生态问题。
微软在这个问题上不是每次都成功的,windowsmobile的尸骨还在那里没有凉呢。
它就是因为没有成功突破鸡生蛋蛋生鸡问题。
没人用手机,开发app赚不到钱,自然没人开发app,没人开发app更没人用手机……
于是winphone就这么没了。
回到鸿蒙os,鸿蒙os面临的问题和windows又有不同。
触屏操作逻辑是iphone做的,ios和android已经霸占市场了,鸿蒙没优势。
那么,问题就来了,用户为什么要选择鸿蒙?
因为国产?
别开玩笑了,你看今年牛市才牛了几天就知道这届韭菜不行了……
那么,用户为什么要选择鸿蒙?
哪怕鸿蒙可以兼容android的app,用户为什么要选择呢?
华为需要给出这个理由。
如果华为给不出鸡生蛋的理由,那么他应当要给一个蛋生鸡的理由:
程序员为什么要为鸿蒙os开发app?
谁来让程序员们或者说软件公司认为给鸿蒙os开发app有利可图?
为什么我说,鸿蒙os哪怕是ppt都有希望?
因为操作系统技术真的不是问题,问题就在后面的蛋生鸡鸡生蛋上,
而鸿蒙还年轻,华为还有时间解决鸡生蛋和蛋生鸡的问题。
可惜的是,除了在他们自家产品上硬塞鸿蒙以外,我现在还是没看到华为有什么动作。
请海军是解决不了蛋生鸡鸡生蛋问题的……
首先要先明白,操作系统是什么?
操作系统是一组主管并控制计算机操作、运作和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序,同时也是计算机系统的内核与基石。——维基百科
然后,再阅读 @赵俊民 大大的一些文章:
以及去年鸿蒙刚发布时我写的回答(不要脸一下哈哈哈):
然后你大致就能明白,什么“鸿蒙是Android换皮”、“鸿蒙不就是垃圾LiteOS改的嘛”、“鸿蒙还不如YunOS”,等等,完全黑不到点子上,因为鸿蒙OS之所以称为“分布式操作系统”,是因为它的愿景是成为一个可以整合、管理多个设备的硬件、软件资源的系统。有兴趣的人可以多看一些前几年的OS顶会论文(为啥不是最近呢?因为最近基本都是AI相关的/捂脸/捂脸/捂脸)。
举个例子,上面的我去年的回答里提到的论文,里面有个概念叫split kernel,方便理解中文我就直接翻译为分布式内核吧(对不起英语老师!)。在实现时,作者是基于Linux修改的,兼容POSIX接口。那么,它到底是split kernel,还是linux kernel?从底层看,它每一个资源组件都是跑着linux kernel,但作为一个整体的操作系统,它是split kernel。也就是多个linux kernel组成了split kernel。
更新:对于SplitKernel,知乎上也有挺多文章解读,对于体系结构、OS感兴趣的可以去查阅一下。国内大厂例如阿里云、腾讯云对于这类系统的研究还是非常强的。
同理,在我个人的理解里,鸿蒙整体也是类似的这种架构。所以,它包含了LiteOS、安卓系统、Linux以及华为所说的微内核。另外,这些东西,在官网的文档里说得很清楚了。
关于它所展现的愿景,大家从华为现在已经很成熟的多屏协同能体会到一些。
更新:M2的论文(MobiSys 2019)演示视频,鸿蒙不一定可以做到下面那样,但是我觉得有助于理解。
M2:Multi-Mobile Computing https://www.zhihu.com/video/1289143780449193984
看了一晚上的文档和代码,我不想讲细节,而且我本来不打算回答这个问题的,但是,看完很多回答,总有一种很奇怪的感觉,那就是:完全没有黑在点子上。
不谈立场(这个我也没必要谈,先入为主的思维已经没有意义了)的话,对于鸿蒙的开源,只取决于你是结果导向还是过程导向的人。
而且,就算再怎么黑,舆论导向早已形成,鸿蒙现在也已经有了很多厂家在对接、完善,虽然前途依然模糊,但是对于乐观主义的我,已经够了。
对于现在的大家提到的问题,我大致说一下我的理解。
首先是最受争议的那个导入了Android SDK的问题:
首先,这个图片里的东西,是鸿蒙APP的SDK,不是OS代码,OS代码在gitee上的一百三十多个repo里,基本都是C语言写的;其次,鸿蒙需要兼容Android应用,那就会有一个应用间的交互,可以看到图中class叫AbilityShellProvider,继承Android的四大组件之一ContentProvider,这明显就是一个为了兼容Android而写的兼容层代码,没有任何问题。如果直接发这个图,还开始嘲讽,我觉得没有必要去理会这种人了,没有相关的知识积累就算了,独立思考的能力也没有。
然后是如下的图:
红框圈出来的地方,也出现了Android字样。但是,仔细看这个stack trace,你就会觉得不对。因为Android相关的调用只在中间,下面依然是libcore,而且图中调用链是Android->libcore,为了兼容Android,总要用libcore吧?所以这明显也是兼容层代码。
(libcore部分我的描述不准确,这个部分我也不修改了,我可以正视我的错误。但是“兼容层”的看法依旧不变,等我晚上回去补充完整。谢谢你们让我有动力来继续分析/微笑)
既要兼容Android,又要SDK里完全不出现Android的字样?
然后我大致都看了一下SDK的内容,里面引用了Android相关内容的包叫abilityshell_ide_java.jar,这个包的功能会在编译出来的.hap包中有所体现(以后细说)。
更新:对于引用了Android SDK的问题,我的分析结果和如下的回答基本一致,我就不细写了。我发现我被某些人带跑了,我不是来争论这个问题的。
算了,还是补充一下吧。
编译出来的.hap包中包含一个classes.dex和一个.apk文件,其中最外层的classes.dex不知道为啥不能直接反编译。
不过这个是小问题,说到底.dex文件只是一种应用格式。实际反编译出来的结果中,就是我们在项目中写的代码,而且没有任何Android相关的符号:
而那个.apk文件是一个正常的安卓程序格式,查看反编译后的结果可以知道,这是根据项目代码自动生成的,并且里面其实不含任何逻辑代码。它可以安装,但是因为缺少系统支持依赖所以无法运行:
如上,会自动生成两个类,和项目里的Ability类相对应。项目里的MainAbility对应MainAbilityShellActivity,继承自AbilityShellActivity;项目里的MyApplication对应ShellMyApplication,继承自HarmonyApplication。
AbilityShellActivity和HarmonyApplication来自SDK里的abilityshell_ide_java.jar这个依赖,但是编译出来的整个.hap文件中这些符号都没有另外出现了,所以实际上这个.jar包只在开发时会用到,实际跑起来需要系统的支持。类似的还有叫ace_ide_java.jar,名字里带个ide估计也是这个原因?
然后我们细细研究一下abilityshell_ide_java.jar里的东西:
可以看到,安卓中的四大组件,这里有三个(Activity、ContentProvider和Service,气抖冷,我们BroadcastReceiver什么时候可以站起来!),并且还有一个Application的子类HarmonyApplication。
AbilityShellActivity、AbilityShellProvider、AbilityShellService的实现都很简单,就是有一个叫XXXDelegate(SDK里找不到实现)的成员变量delegate,然后所有的方法都会被委托给这个delegate,代码实现太过规整,我都怀疑是Lombok的@Delegate自动生成的。如下图:
看到这里已经可以说明,鸿蒙不是另一套基于Android的UI库或者直接Android改名,因为没必要实现这么绕。
然后重点是HarmonyApplication这个类,和另一个大佬的分析一样,一眼能看到的就是会有一个IPC相关的动态库加载:
然后其他部分的代码反编译后加起来不到300行,也很简单。总的一句话就是,会创建一个加载鸿蒙Application的<del>进程</del>线程(另外加载多个Ability?),然后这个安卓Application实例会和这个鸿蒙Application实例绑定在了一起(同生共死)。
更新:根据与 @dontpanic 的交流,修改了鸿蒙“进程”相关的描述,鸿蒙程序目前是依赖于安卓进程来触发的。
更新:基本可以确定鸿蒙有自己的图形栈服务,不是用的安卓的SurfaceFlinger,名字叫AGP,SDK包里也有相关的东西,不过这个全称是啥不清楚,A(?) Graphics P(Processor?)?例如在ClickedListener里直接抛出异常,可以通过stack trace发现event最终交由AGPEngineAdapter来进行处理,最后通过native调用dispatch到我们写的事件处理函数;而在delegate里的convertTouchEventThenDispatch方法,将安卓的event转为了鸿蒙的event;delegate里估计还会有对于图像绘制的一些转换:
所以现在可以猜测的是:
以下截图可以佐证,第一张是调试时的UI线程:
然后是鸿蒙应用的加载线程栈:
因为这次开源的东西并不包括手机上的鸿蒙,对于Android SDK的问题,我就分析到这里了,我已经把我想说的说清楚了。
如果要黑,不管立场怎样,请有自己的主见,不要为黑而黑。例如我就很欣赏下面的文章,我也学到了很多东西:
另外,我也可以提供正确的思路:
SDK还有一个有趣的地方:
这估计是方舟编译器的支持,@Permanent等注解用于RC标记吗?以及真的有一个用于热更新的ClassLoader!
有空我再写写其它东西,顺便分析鸿蒙中安全相关的内容。
先偏个题,因为没有HMS的问题,最后再聊聊鸿蒙2.0。
早上聊过一个问题,听了一会主题演讲突然想通了一些,就在这里随便聊聊:
@学写作的丧失 说EMUI这几年广告开始多了。这里说的广告实际上是各种系统应用的PUSH,根据我的观察,实际带有商业性质的广告不算太多。
APP做PUSH是个明显的运营行为,如果不能或者很少获得直接的商业价值,其目的就只能是争夺用户使用时间。
不过,系统应用去跟正常的APP争夺用户使用时间是个事倍功半的事情。一般来说系统应用整体体验不如第三方,装机量那么大,用户还不愿意使用,问题出在产品而不是曝光。要知道PUSH是移动端最值钱的几个流量之一,天天推转化率还不行,反而会降低用户的点击意愿。
那为什么要这样做呢?
这次主题演讲的HMS部分有部分涉及。
这是演讲给出的应用MAU,实际上就是EMUI的系统内置应用的MAU。在开发者大会上放MAU,目的自然是为了展示HMS的生态活力,给HMS的开发者信心。
这是其他厂商不需要面对的问题。华为在海外被迫离开了GMS,需要自己重新建立一个生态,而这个生态有多少活力,是根据其生态下的APP而展示出来的。
这种情况下,系统自带的APP是维护这个生态最后的壁垒。为什么推送多,就是因为华为的系统APP试图通过争夺用户使用时间,养成用户习惯,把用户绑在HMS框架之下,以抵御更多不确定的风险。
这点上华为的工程师和运营应该很有压力。它必须像一个纯粹只做软件的互联网公司一样,尽力去提升内置应用的MAU,这是未来整个生态的生命线。
而在装机量已经固定的情况下,PUSH自然是最好的办法。回顾这一套流程,背后是有一套逻辑和战略支撑的。
当然,在这个过程中,一部分用户体验在某种程度上就成为了代价。
回到鸿蒙OS,说实话这次公布的90%用户升级鸿蒙2.0不是那么的让我惊讶。究竟好不好,最终还是要看升级之后到底带来了哪些变化,而我对这个持谨慎态度。
为什么有人说华为喜欢画大饼,就是因为华为喜欢讲战略,战略讲多了实现速度又不够,这不就是画饼嘛。
但是华为并不缺执行战略、并把战略细分为战术的能力。这在鸿蒙OS上正在逐步体现出来。
这个就和前面提到的PUSH背后的逻辑一样。在一年时间里鸿蒙OS迅速发展,从PPT到实物、公布开发者套件,到在本次大会上放出开源指标,公布升级计划。这正是大饼逐渐填充的过程。
而填充需要时间,我也不知道填充的结果会怎么样。
鸿蒙值得期待,但我的期待源于对华为战略执行能力的信任。切勿冷嘲热讽,切勿过分沸腾。
对了,这个本来是我打算放在HDC每日见闻里的内容,一不小心写长了就放在这里了,有兴趣的朋友可以看下我明天或者今天晚上将发布的文章。
另外我得承认鸿蒙的软件部分确实不是我专业领域,欢迎大佬指出问题。打脸并不是坏事。
作为一个被保密协议严重束缚的,一个全套我菊测试全家桶的,一个海外业务出海试点最前沿的人,请大家原谅我很多事情都不能说,很多朋友担心我们凉了,我只能说,我们才刚开始,很多朋友觉得我们没戏了,我只能说,混到人艺演过茶馆雷雨龙须沟你觉得我们上不了大银幕和电视剧我也不知道怎么解释,有人说潘多拉的盒子被关上里面留下的是希望,我只能说,然后潘多拉放下盒子解放了双手,然后...
对我们这个有愚公移山的寓言的民族来说,我愿做千千万万的愚公之一,至于智叟,他们现在可能都比较擅长用键盘。
对于有着伟大长征革命传统的中国人来说,重走长征路,再上井冈山,世上无难事,只要肯登攀。
对于我自己来说,做好每一件我们应该做好的事情,就是搬动一小块石头,添一小块砖。
更喜岷山千里雪,三军过后尽开颜!
我给大家show一张图吧:
我想说,这部纪念版手机我也有。
其实我一开始也不怎么看好鸿蒙生态,但是看见大伙都这么死磕的时候,我就觉得,会有希望的。
作为一名码农,我换个地方码代码依旧能谋生,而能继续留在菊厂的最主要的原因就是,任总腰杆比较硬,跪不下去,这一点我很佩服!
空谈误国,实干兴邦,加油!
===== 更新于911 =====
谢大家关注与支持,倍受鼓舞,唯有撸出更优秀的代码来回敬各位。
下面增加点花絮,讲讲痛并快乐着的激情燃烧的岁月。
2. 下面这张图是动员大会那天在溪村拍摄的,动员会现场图片我就不贴了。
3. 这是全球拓展培训现场,旁边屋子里的小姐姐是中英文同声传译人员,第一次现场感受到英语原来可以学这么牛逼。讲完之后中场休息时现场有外国人问我是否可英文交流一下,看在墙上标语的份上,我绝不认怂,当即回答对方说Yes!
4. 这是公司发的牌牌,不知道是不是镀金的。不过我并没有去现场领取,因为此时正在医院打点滴,悲催了。
5. 这个是公司发的纪念册,很荣幸与这么多优秀的同事一起奋斗过。
6. 这个就是大佬提到的纪念版手机啦,这是我用过的最奢侈的手机。
总结一下:
1. 虽世事艰难,但我们一直在努力,也一直在进步。
2. 对菊厂有意见很正常,我当年也是有很大的意见,HR的电话接了很多,但每次我都嫌弃菊厂,后来揭不开锅了才来的,原以为干个两年就得滚了,不过不知不觉就干了很多年了。所以合适与否一定要亲自来体验,不要被其它声音给带了节奏。
3. 菊厂正是用人之际,欢迎有志青年前来施展才华。水深还是水浅,别听旁边的松鼠叫渣渣,你是骏马,当然得驰骋天下!
不得不感叹,阿里缺少余承东这样的营销人才。
粗略的看了下公开的Harmony OS源代码,只能说这是穿了新马甲的Lite OS,所以脱离不了一个面向IoT设备的RTOS的局限性。
很多国外公司都在使用的国产开源系统RT-Thread明明比Lite OS做得好做得早,为什么非技术华为粉丝就不沸腾呢,面对同样的国产操作系统,支持国产难道有定向性?
华为也说了,现在只能支持128MB以下内存的设备,到明年4月才可以支持到4G内存设备,明年十月超过4G,这就更说明目前的harmony OS只是面向小内存低端嵌入式设备的RTOS。
这让我突然想到了比Lite OS更早的阿里巴巴Alios和前身Yun OS。
现在华为鸿蒙OS 2.0 充其量就是加强版的AliOS Things。
如果阿里2017年发布Alios Things的时候多一些悲情主义,今天要帮中国人点亮满天星光,每一位要去汇聚星星之火的就是阿里巴巴了。
这三年来AliOS Things的推广并不好,因为每一个物联网设备厂商都有自己的小九九。
比如海尔的空调怎么会去装阿里或华为的OS被加入生态呢,被绑上所谓的互联网生态然后沦为代工厂?
无论是Harmony/Lite OS还是AliOS,几乎每一行代码都充满了对自家产品的推广和生态的绑定。
这种IoT OS根本就没有任何开发难度,反倒是国产开源无大厂背景的RT-Thread更受设备厂商们欢迎。
所以不看好任何有大厂背景的物联网操作系统的前景。如果鸿蒙 OS还停留在128MB以下RAM,面向嵌入式设备的话,不看好未来前景。
HarmonyOS 2.0说基于微内核,分布式软总线,再结合之前说的会兼容安卓。
那么可以基本判断,HarmonyOS 手机版会直接使用Android,利用Linux的Adeos来实现。
什么是Adeos?
简而言之就是让多个操作系统(内核)同时运行在同一个设备上。
接下来Harmony OS 3.0 手机版的本质,就是让Android和自己(Lite OS)同时运行在同一个设备上。
那么Harmony OS的分布式也就是把与其他设备的数据通信由Lite OS内核来接管而已,这样也就给不同平台的内核之间创建了通道,平台之间的屏幕映射就实现了(实现这个真需要双内核?)。
市面上有没有类似的系统架构?
当然有,Linux+Xenomai双内核,完全开源,大二做机器人操作系统就是这么搞的。
Linux+Xenomai架构下,Xenomai的优先级要高于Linux,相信Harmony OS 3.0架构下Lite OS的优先级也一定会高于Android,现实中治不了Google,在自己手机上还不能压Android一头?
当时为什么用双内核,因为Linux的生态链太好,华为为什么也舍不得Android,还是因为做一个成熟的操作系统很难,撑起整个生态链更难。
Android虚拟机本来就是在Linux用户空间的应用程序,安卓桌面应用程序就是运行在在虚拟机之上,其实如果重新修改虚拟机的源代码,Android理论上可以运行在任何操作系统之上。
Harmony未来才会直接抛弃Android底层的Linux内核部分,我判断会在Harmony OS 5.0以后,不过到那时候谷歌可能也会换为Fuchsia。
华为要搞替代谷歌的生态链,最先围剿华为的会是国内的几家互联网巨头。
说阿里巴巴花了十年时间自主研发的OceanBase这是数据库的国产之光还有道理。
给PostgreSQL穿个马甲的华为GaussDB也能叫国产之光?
所以阿里真应该多学习下华为多占领非技术制高点。
人家用华为用CentOS改版一个EulerOS都能成国产操作系统。
要不了几年,比阿里云晚了好几年的华为云都要成为云服务的国货之光了。
其实在中国做生意,还是要多学腾讯,闷声发大财,反正大家进了售楼处都一样。
2.0发布后知乎里出现三大门派
1沸腾党,华为牛逼
2反向沸腾党,pptos有啥可说的,安卓底层加个ui
3冷静分析党,分析一大堆,其实啥也没说
我就和他们一样了,独成一派,吃瓜群众在这集合啦啦啦
我是来看打脸连续剧第一集的,这一集打的是“有没有”。
在对华为冷嘲热讽的梯队里,充斥着大量的IT界大牛,至少是口气牛,自以为牛。自己和自己背后的小母牛翻跟头公司做不出任何像样的OS,却习惯性嘲笑资本家血汗工厂的华为干不出来,只会忽悠。
我期待第二集第三集。。。
也想看看这群人的嘴脸,是不是跟圆圆方方们一样,屡次打脸,屡次不认。
在这一点上,华为还真是天朝的一个缩影。在公知的冷嘲热讽与仇恨中前行。
回答中, 华为人的两句话让我感动:
另外,去他mother的资本家996之恶。只要华为死磕,我就向它敬礼。包括用钱包敬礼。
没错,我特模滴就是华为的自干五。
继续怼冷嘲热讽队的IT“大牛”们。
华为以前主业是干半导体,干芯片的吗?不是。
华为干麒麟的时候,也是一批“专家”嘲讽吧?是“专家”们干出来了,还是雇佣专家们的小母牛公司做出来了?
华为以前是干应用级OS的吗(指用户是app和C端,而不像embedded OS主要是自用和有限的设备用)?不是。
这么多IT大牛和大牛背后的小母牛公司怎么不干出个OS让华为用?
队友但凡有那么半点儿用,也不至于逼着华为全产业链折腾。怎么不学学京东方,就算有这样那样的毛病也至少能搭把手儿。
作为IT界的,但凡要点儿脸,即使不羞愧,也该有点儿敬意吧?
这帮Grandson自己怂,自己废物,却因为华为提前吹了点儿牛逼就各种嘲讽,什么尿性还用说吗?
这帮货的唯一正面作用就是与Trump一样。转化为死磕派的动力。你封我堵我,嘲讽我?我干呗。
现在性能不行又如何?比光说不练只会批的叉子高尚万倍吧?
华为失败了,也比这帮grandson让人尊重。
嗯,华为ppt先发布,吹了点儿牛(就算吹了个超级牛)。一夜之间,it大牛们全成诚实不吹牛的老实人了?
你们自己怎么写的resume自己没点儿AC数儿吗?
你们背后的小母牛公司里面Project manager, product manager是怎么做presentation的自己没点儿AC数儿吗?你们的小母牛marketing是干嘛的,你们没点儿 AC数儿么?(嗯,你们那点儿nerd劲儿估计也真理解不了)。
当时华为放出Ppt时是什么环境,你们这帮nerd有点儿AC数儿吗?这点儿都理解不了,你们一辈子做血汗码农不是天生命注定的?
以华为的Tracking record,他们的PPT先行难道不是把自己逼到背水一战?你们以为华为跟你们和你们背后的小母牛公司一样经常性说出的话当fart?
还“不能说, 不能批评了”?
“我骂你, 是为了你好”, “爱之深才责之切”,这不就是他mother的方方们惯用的腔调吗?
你们这帮Grandson会怎么说,怎么做还用猜么?
不就是假装受害者,90度仰望星空“不许批评了?”。
不就是扣个帽子,小粉红,老粉红,爱国贼,海军,沸腾?
不就是先说没有,再说性能不行,再说性能还差得远,再说干不过Android, iOS, 再说靠耍流氓干的。。。
你们这帮打了左脸给右脸,自己躺平任日却撒着欢儿嘲笑反抗者的货,脸肿成个茄子不认的货,不就是嘲笑媚笑完美结合的二皮脸么?
禁你们这帮Grandson你们还真把自己当人物了?你们也配?
对于支持华为的,没必要跟着黑粉捧杀,我从90年代末最迟21世纪初就接触过华为,当时是参与与他们的技术谈判,接触过他们当时数通的总工。当时就觉得这是家执行力超强而又志存高远的公司。在全民包装卖货低级抄之中,还在真正搞研发。是唯一有希望在IT领域对美企造成威胁的。(对华为全面的理解,见我上面的第二个链接,完全是作为IT老兵从专业领域观察到的)。
但大家要明白,在成熟OS领域挑战老大是几乎不可能实现的事情(实际上任何成熟领域,更不要说高科技领域,更不要说OS)。这种高难度挑战失败率在99.9999%。
我之所以对华为有一定信心是华为干翻老大的事干成了2.5回(详情见我第二链接)。再加上中国的一些特殊性(比如市场容量,加集体精神,懂的自然懂,不懂的永远跪)。
即使如此,失败概率还是90%以上。要不是华为在干(因为它的过往历史记录),我是不抱什么期望的。
但这种死磕精神就值得我们全力支持。就算失败,就算最后真的不得不放弃。
不必在成为事实前过高“吹”其性能什么的。或性能不及预期就转黑。
我的认知是目前唯一能硬杠西方信息类高科技公司的只有华为一家。其余大多在国内称王。(真期待他们能顶上去并肩作战,不过以这帮货的反应,难)。华为一时失败了,也不必气馁。
中华民族就是靠类似精神一步步起来的。
为他们死磕加油。有能力有意愿的也可以捧个钱场。
其它的,交给专业人士(包括判断鸿蒙的系统性能,刚开始不要期望太高,这里面有技术的原因,更多是商业优先级的原因)。IT界有冷嘲热讽的,也有加入实干的(无论是加入华为,还是加入死磕不服军团),也有在边上敲边鼓加油助威的。
再差,特么能差过当年伪军百万,小学生算知识分子的年代?
自教员以降,中国自己不跪就倒不了了。
另外,说实在的,在米国耍流氓的空前打击下,华为能保住telecom, data com的地位(这个都难,而且近期比手机重要得多,所以降低优先级,收缩鸿蒙为原本的物联网OS,哪怕放弃鸿蒙都是可以理解的决策), 退而保住5G, 再退到底哪怕生存下去,我都觉得很不错。
OS本来就不该是华为该干的事儿。可有什么卵办法?小母牛公司们一个能打的都没有(我就不点它们的名了)。
评论里有些人问,这些“大牛”什么水准。告诉你们,两类:
几年前至少还有个Port过VXworks的跟我怼。目前这帮人里甚至连个实际干过OS (embedded,或者cloud也行)的都没有。
你看微软开发者大会,谷歌开发者大会,苹果开发者大会。同样这批人,乖得跟个grandson似的。为啥?因为他们的核心任务是学习怎么用,这直接影响到他们的饭碗。
约十几年前我曾经面对过这批人,你以为他们能提出什么有价值的反馈?那纯粹想多了。欧美的开发者还至少能提出些功能性需求。这边的全是怎么用,怎么更好用。。。
同样这批人一转脸对华为怎么就这么牛掰了呢?因为他们本身开始就瞧不起华为。
华为确实先吹了牛,类似的牛其它大厂又不是没吹过,无非是展望未来可能的路线图。
华为唯一做得不好的是,在1.0还没有的时候,就把4.0展望放出来了。但如果考虑到当时的“症痔”因素,有啥不可理解的?至少没那么罪大恶极。
支持华为的朋友其实可以放心,真正业内的人,只要不是半瓶醋,不可能小瞧华为。华为即使在创造力上有短板,在执行力上也可补回来。即使没有应用级OS的实操经验,在对硬件的理解,在嵌入式OS上的经验积累,对产业链的整合能力也足够弥补。何况华为招牛人是全球性的。
华为的阻力根本不在技术上。只要它想做。一定能做。只是在商业逻辑和优先级上有没有必要做的问题。
听几只半瓶醋咣当,听几只燕雀瞎BB? 听这帮Grandson的,中国在90多年前就跪了。
我为什么有信心?我10几年前在该领域干过(我承认现在长时间不在一线干有些落伍)。我在技术层面和商业层面接触过华为工程师和华为。
谁小瞧华为工程师,谁小瞧华为那才是脑袋进水了。
我非常恶心的是目前以BAT与粗粮工程师为核心营造的对华为的恶意。
BAT与粗粮加起来,我都没这个信心。因为华为的tracking record摆在那里。干,甚至干翻的世界级大厂一个又一个(见我上面提供的第二个链接)。BAT与粗粮又在中国之外,干翻谁了?怎么就这么牛掰呢?
至于Grandson们怎么想,鸿蒙干好了,他们会以grandson的态度去学习的。他们不学他们老板都得踹着他们的屁股学。鸿蒙撤销了,他们继续去舔他们该舔的。
平时,没时间,这次因为这个答题被热烈评论,去看了下鸿蒙去年到今年的一堆评论。
诚然,历史上许多打着国产化的旗号忽悠大众钱的人不少。但是,华为说要做,与贾跃亭说要做,是一回事吗?
往最大的善意说,是这些人对华为不了解。
在没有实现前持谨慎态度,甚至怀疑态度是可以理解的,比如马云没成首富前,大家不相信他能做这么大,比如许多VC就没投他。这个都可以理解。但在马云没成功前嘲笑他是个穷比瞎忽悠,不检讨检讨自己的人品或心态?
华为,遭遇了一群IT人士最恶意的冷嘲热讽,这个互联网会记住的。同样,一群IT人士在闷头苦干,这个也会被记住。
最后,粗略看了看harmony的路线图。感觉野心非常大,但也进可攻退可守。
说野心大,是历史上所有要做end to end系统的,到目前为止都没成功(或有限成功,只在自留地内实现)。微软没行,谷歌也没行。尽管大家目前都在布局万物互联(IoT) 。这实际上是拜微软之赐, PC被微软一统江湖大家都吃够了苦头。所以天然的,大家自然会分裂成几个圈子,各玩儿各的。
华为紧盯万物互联,并以OS发力,肯定没错,因为这个领域才刚刚开始,远不象手机领域已近成熟。看他们的节奏并没有因为手机而放弃这块儿。
进可挂上手机,退,还是万物互联。手机OS的道路实际未必确定。可以确定的是,华为手机OS上越做得好,谷歌米帝越可能让步。14亿人真用起了不同的OS,米帝绝B哭醒。。。
在OS领域,内存资源管理,进程线程管理,在UNIX阶段就研究得差不多了。分布式中心集中式也好,宏微也好,都有pro and cons.也研究得七七八八。
真正的难点或烦点在哪里?就是要伺候一群二逼开发者。代码的趋势是越来越趋近于傻瓜化,如何让广大人民群众上个北大青鸟三个月就能开发出app就能在知乎瞎bb自以为大牛,是业界趋势。你们让这帮bb货用c写,99%在用指针阶段就挂了。客户是上帝,怎么伺候好这群上帝的使者,让他们开发得容易,开发得爽是难点。既然Android的开发者最多,你就得照顾这群人的习惯。
看着象Android, 用着象Android, 能用的开源代码,库包尽量不换,如果是微软这么干,这帮唇货肯定能咂吧嘴各种舔。可华为这么干了,他们就会吐痰啐你一脸口水。本质上就这么回事。
可以去看看华为Team里有几个业界大牛,他们不是不会犯错,而是他们会低级到犯让唇货吐口水的错吗?
下面冒个险对鸿蒙做个大胆预测:
但是的但是,
在1之前还有个0,芯片配件全面断供,这特mother的可比鸿蒙或HMS严重得多的问题。可能比手机全完都严重。指望华为独扛?指望懂王下台一切岁月静好?
特别说明一下,
高赞里面一个答案是反串钓鱼的:
这Grandson本质是个高级黑,欺负老百姓不懂技术,筛了评论到现在还有人上钩。老百姓不懂他说啥不丢人。本身就是小众专业领域。老百姓支持华为也不是因为懂技术。这二货嘴脸就象孔乙己嘲笑大家不懂茴字几种写法。挖坑给专业人士还说得过去,挖坑给外行那就是一low怂变态。
再补几句给善意的业内批评者。
华为有没有毛病?有的。他们公司内部的流程管理似乎极其严格,好像是什么sigma 5的。这种流程管理属于IBM那个时代的软件工程。与现代互联网公司格格不入。
绝大多数互联网大厂用的是类似Agile的软件工程思路,讲究快讲究多变。或者说对工程师和项目经理,产品经理没有特别严格的约束。毕竟动脑的都偏自负,不愿意受太多约束。
以我在世界大厂的经验,agile那套实际效率也极低(适合小组小项目, 局部高效,整体一团),跳票重来是经常的,只不过大家都一个卵样时不时drop些code让你觉得在迭代前行。
为什么提这个,因为十几年前我们与华为合作的时候,他们极其抵触中间节点milestone的code drop. 每一次Drop涉及到发布都是对他们的干扰。他们觉得极其浪费他们时间。我们作为合作方就相当恼火了,在开发过程中完全不知道他们的进度和质量。
他们给我们的回答是“相信我们”,最高效的方式是相信他们,最后一定按时拿出一个合格产品与我们合。
当时因为时间紧,加上前面的对话与考察,大老板拍板决定相信他们赌一把(当然,那个项目对我们虽重要但不关乎生死,敢赌)。最后竟然成了。
10几年过去了,华为变没变我不确定。但看他们开源项目的操作又让我想起了当时的体验。
他们在开源项目上操作的人一定不是他们的核心团队。内部流程在加紧前行,code release对美的那些真正合作者一定是认真的。而开源这块儿不会超过半个大佬在里面,说白了就是找人从已有的codebase里选择些东西先放出来,让外部人可以玩儿就可以了,又不是真的项目合作。半个大佬+20个法务审核。加20个实习生写stub替代闭源的那部分,让50个前台打字抄文档。够了。
说重视呢,华为当然需要开源社区支持,说不重视呢我项目还没完成,懒得过多伺候你们。给你们玩儿,让你们有心里准备,知道我们大约要干什么就可以了。
在项目真正告一段落,核心团队腾出空来,才可能象当年与他们合作的我前公司一样得到一个真正满意的东西。
因为华为这个特征,黑子假行家可是拣着宝了。你以为他们真想建设?
拿着放大境找里面有“android"字样?瞬间高潮。
里面有Return 0这样的空壳程序?瞬间高潮。
配置文件用了HTML? 瞬间高潮。
Unsigned, signed不分?瞬间高潮。
拜托,华为再渣也算一大厂,有一些code犯了低级错误,说明什么?说明那段code实习生写的呗。
你一小母牛烤火熏AC的大佬,专挑人家code里面幼儿园级别的错儿,然后你还特高潮,我该怎么膜拜你这么个小母牛啊?
华为不擅长讨好开源社区是不是毛病?是。
于是就是Low AC货眼里的PPT骗子公司?
讲真,一个小公司如果这么对待开源社区恐怕早就凉了。但华为这么干,只要一发布还是有人乌央乌央往上扑。因为history count. 这是个大厂。只要最终他们发布quantity code, 就够了。Show me the code? 微软3年才秀你一把,你不是该舔还舔?
另外,以我的理解,华为并不是有意怠慢开源社区。他们只不过是不会讨好女人的直男而已。
关于华为吹牛。
说实在的,看着这两年华为在做什么,包括余大嘴各种吹“我们行,我们没问题,我们能干得比他们好”。我只感觉悲壮。(当然,逻辑上也可解释为华为就是在骗。十万为单位的员工一起在骗国人?)
华为纵轴上面临有史以来最大危机,横轴上比几乎所有其它企业加起来的危机都大。同在黑名单,执行力度都不一样。
华为人自己不知道吗?华为高层不知道么?结果被一群IT"大牛”各种嘲笑”就会PPT吹”。
"Show me the money, show me the code."
同行之仇得有多大?华为在各种大会上说“我们不行了”,他们才高兴。
对支持者再多说几句。
一定要理性支持。华为这样的企业未必能避免烂产品,烂服务。万一让你撞见了,你会不会觉得我一腔热血对你,你竟然坑我?
一腔热血遇阴暗面可能就立即转化为怒火狂喷。所以你得理性的明白为什么支持,支持什么,怎么支持。
举个例子:
我相信,天朝也一样。阴暗面随时都在。
而上图这些人,在村长那儿受了点儿气,转头就会给太君带路。别忘了,我们历史上曾经有几百万伪军。
另外,评论里有一批歪楼去讨论996的。因华为996而恨华为。
有些人还打着教员的旗号。你们也配?别的不说,教员在1937年外侮面前,尊委员长为老大。但凡你初中毕业,都知道教员的名篇里,有“主要矛盾。。。”。
敢打教员旗号,你们算个什么东西?
更新时间:2020.09.20
最开始原回答只看完了部分内核,主要讨论的是内核部分的LiteOS。
后面我基于这个回答会继续补充,如果有大的颠覆性打脸内容,会标出原文错漏之处。
前端部分,基本上就是快应用,类似于微信小程序。
基于开源的框架有一个IDE, 可以在上面直接做UI的开发。
但看了后面SDK的部分,以及打包应用,基本上这一部分确认是安卓魔改了。
在IDE里面,可以直接开发智慧屏的应用,只要是个有点经验的安卓开发,很容易就可以把安卓应用放进来。
毕竟里面就是基于安卓的SDK。
同理与可穿戴设备,前面的这两个都是走安卓应用的。
对于非技术人来说,可能你会觉得这是兼容。
从某种意义上来说,这是兼容,但实际上是一种饱受争议基于开源魔改的兼容。
TV 和 Wearable 这两个开发,接下来要做的就是拉拢开发者,把应用挪上来,另外再搞好自己的优质服务HMS来试图替代或兼容GMS。
Lite Wearable 开发其实反而是我未来期待有亮点的东西,目前仅支持JS语言,这个如果能在物联网设备上铺开,会非常有意思。
手上只有一台五年前的华为手机,近期还在找时间继续调试 Lite Wearable 的项目,后续有新感想回来继续更新。
另外这个 Dev Eco 的IDE,不知道为什么连接华为账号总是有点小问题,查了一下不是个例,希望未来可以更新IDE。
(当年微信小程序第一版的IDE曾经也是非常难用,现在优化了一些,期待华为这个也能鼓捣起来)
下文为 2020.09.11 原回答+补充
Huawei LiteOS是华为面向物联网领域开发的一个基于实时内核的轻量级操作系统。本项目属于华为物联网操作系统Huawei LiteOS源码,现有基础内核支持任务管理、内存管理、时间管理、通信机制、中断管理、队列管理、事件管理、定时器等操作系统基础组件,更好地支持低功耗场景,支持tickless机制,支持定时器对齐。
同时提供端云协同能力,集成了LwM2M、CoAP、mbedtls、LwIP全套IoT互联协议栈,且在LwM2M的基础上,提供了AgentTiny模块,用户只需关注自身的应用,而不必关注LwM2M实现细节,直接使用AgentTiny封装的接口即可简单快速实现与云平台安全可靠的连接。
Huawei LiteOS自开源社区发布以来,围绕NB-IoT物联网市场从技术、生态、解决方案、商用支持等多维度使能合作伙伴,构建开源的物联网生态,目前已经聚合了30+ MCU和解决方案合作伙伴,共同推出一批开源开发套件和行业解决方案,帮助众多行业客户快速的推出物联网终端和服务,客户涵盖抄表、停车、路灯、环保、共享单车、物流等众多行业,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期。
这个操作系统非常的轻量级
是放在物联网设备上的。
内核是自己写的 liteos-a,能在一些开发版或者单片机上跑,接个传感器什么的。
也就是基础版的 IoT 小设备系统
是的,那些歪歪扭扭的牌也是很真实的。
整个项目的代码有种赶工期的味道。
起码看到了是真的在用一张一张扑克牌
慢慢堆起来
试图从IoT物联网这个未知市场里
杀出一条血路
手机操作系统,三五年之内想要完全另起炉灶是很难的,基本不可能。
即使做出来,为了兼容安卓应用,
要么是做虚拟化极大损失性能
要么是拿来安卓开源部分魔改 + 编译器魔改,两条路都相当难走。
这次开出来的代码来看,模拟器和SDK是基于公版安卓10做了一层包装。
一方面,从小物件入手,写个基于自己硬件的操作系统,把 LiteOS 慢慢堆起来,试图从物联网开辟新战场杀出去。
另一方面,从公版安卓魔改出自己的东西来,先把手头现在的东西稳住,智慧屏,手环,手表,乃至未来的手机,起码不能倒下变成废铁。
三年五年,十年二十年,有这个开始,未必不可能。
个人推测,LiteOS部分,下步可能会类似 AliOS 和某些搞硬件的大厂做做合作。
同时慢慢推进开发者社区,召集各路大神帮忙添砖加瓦。
安卓魔改部分,技术上理亏会避开宣传,重心估计会放在鸿蒙营销上。
同时会砸钱,让更多APP进入华为应用市场,推自己的HMS,强化 华为笔记本/华为平板/华为手机 之间的协同和联动,促进更多人配齐华为全家桶,保住自己这块盈利。
前面两个,个人不多说了,怕被骂。
华为技术,确实是很有攻坚奋斗的精神。
另外建议重视一下 unit-test 和 code review
代码之前clone了三四十个主要的repo 整体看了一下
里面还有不少可能内存泄露的 CHAR*
希望十年后,看到这玩意完工,能变成一座小建筑。
开源的这份代码很多。内核部分并不是套皮安卓,但SDK部分是套皮。
内核 和 SDK 分开来两块了,并没有直接关联。
相当于开源开出来了一个儿童自行车 + 换壳小轿车,宣传内容是顶级跑车的美好愿景。
放在智慧屏设备里面的代码,从以往产品逆向解析来看,基本上是基于安卓。至于手环/手表,没做过逆向,暂不清楚。
未来会不会所有设备更新换成自己的 真·LiteOS·鸿蒙 系统?
从技术来说,不确定,但希望未来会有。
目前仅从这份开源部分的内核代码来看,替代不了。
做自己的手机系统,只有两条路走。
第一,完全自研,替代 Windows Phone 系统成为一个孤寡手机系统。
第二,以“某种技术”继续使用一种兼容安卓的系统。
从内核这块的代码,以及宣传的万物互联来看,先从小设备入手,未来有一部分小可能性往第一条路走,逐步支持大设备(手环/手表/智慧屏/手机)上搭载自己做的 LiteOS-a,LiteOS-Super,LiteOS-Mobile 之类的东西
从SDK这块的代码,以及打包应用的情况来看,从已有的现状入手,未来有相当大可能性往第二条路走,在自己的枪炮造好之前,洋枪包个黄皮纸也得先上着来用。
最直接能用的,其实还是拿公版开源参照着魔改,不过这个魔改工作量也非常巨大。
如果性能够好,不在意损失,孤寡系统也是可以做虚拟机或者容器来间接半兼容其他系统的。
但这2020年头,直接上来做自己的孤寡系统,就像新生儿跟大学生打架,没app应用没生态没市场,很难赢。
从技术的角度看,目前开源出来的这一小部分鸿蒙,代码实现有好的部分,也有不好的部分,作为参考学习的价值不是很大。
但是文档相当完备,未来很有可能能吸引足够强足够多的更优秀的工程师参与。
从战略的角度看,鸿蒙有很重要的积极作用。
至于安卓这块到底有何妙招,等明年开源新东西之后继续看看。
很多人是把 show me code 当成 “你没代码所以不行”来理解的。
当开源了代码,有些人会高举大旗,“你看有代码,快来道歉”。
当这玩意被各种人都用起来的时候,本意不本意的,很多人已经根本不关注了。
show me code 作为求证,本意就是指,你所表达的内容说服力不足,请补充代码实例来证明你的观点。
开学初,小明跟妈妈说,期末考试我能拿90分。母上大人说,光说不练不行喔,做套卷子看看吧。
小明靠自己做了一套第一单元的练习题,里面很多题目有些错漏,但是整体思路基本对了。
小明还拿出了一套开卷考试的模拟卷,因为课本写得好,照着课本内容,题目基本都全对了。
小明亲戚们看到了,高喊,你母亲被打脸了,你看这都会做练习题了,将来考了90分,道歉吗?
有亲戚说,你没看到这模拟卷子分数很高吗?开不开卷重要吗?他能考高分就行了啊!
还有亲戚说,你母亲这种人,就是阻碍你未来考90分的最大障碍啊。
有人感叹,这才是真正能考90分的人,不像你母亲,只会质疑,你是多优秀的孩子她心里没数?
有人追捧,说这才是未来之光的小明!
这次开源的鸿蒙OS 2.0 内核部分,真的就只是一套单元练习题。
SDK部分,开卷的,具体就不点评了,属于一个有争议的部分。
希望十年之后能看到自己闭卷考能考到90分的小明吧
更希望这十年内能有刚好的环境。
少一点狂热的信仰
也少一点寒人的冷水
多一些 更加纯粹 更加务实 的讨论空间
也多一些技术人的添砖搭瓦
所宣传的微内核万物互联系统,个人支持,但宣传确实有一些过分超前和夸张,技术上预估难度很大。
我个人近期更期待的,其实是现有的生态体验。
期待华为,能够用自己的方式,打通电脑,平板,手机的生态。
多屏协同,一碰传,这一类更加实用的内容,才是广大普通消费者能够受益的地方。
目前PC和手机协同这一小块,苹果和花家确实是做的非常好的。
宣传归宣传,市场最认可的终究是产品。
(一)2019年发布会上说随时可用,随时可以代替安卓,截至目前已经一年过去了,还没达到——下面这个链接是CCTV转播的鸿蒙发布会,大概在第34分钟18秒左右,余承东说“鸿蒙随时可用,如果谷歌不让使用安卓,鸿蒙随时可以用,比安卓有更强的性能、更高的安全性。”
在原子弹还没开始研制出来的时候,面对美苏的核讹诈,说“我们也要搞原子弹”,这是有志气,但这时候要是说“我们已经有原子弹,比美帝苏修的原子弹威力还要大60%”,你说美帝苏修会不会被吓到?你还敢笑话印度吗?
(二)还是按揭开源。这里抱怨一下,明明是开源项目,华为的开发者居然都签了保密协议。
(三)当前开源的是LiteOS改进版,可以参考华为几年前就已经开源的LiteOS:
从物联网设备到高性能PC和手机,变化还是很大的,后续还有很大的工作量,这可能是按揭开源的原因。
(四)还在看代码。刚刚看了内核驱动的代码,这个内核驱动代码可能还没完善,里面的hievent_driver.c、hiview_hievent.c、random.c、random_hw.c、mem.c 等源文件都用到了Linux的头文件。
比如 drivers_liteos/ mem / src / mem.c 这个文件,引用了Linux内核头文件。
#include <los_sys.h> #include <fcntl.h> #include "linux/kernel.h" #include "los_vm_map.h" #include "los_arch_mmu.h" static int mem_open(struct file *filep) { return 0; } static int mem_close(struct file *filep) { return 0; } static ssize_t mem_read(FAR struct file *filep, FAR char *buffer, size_t buflen) { return 0; } static ssize_t mem_write(FAR struct file *filep, FAR const char *buffer, size_t buflen) { return 0; }
里面的几个函数还是空的,可能是没用到吧。
大概的看了一下“图形模块框架及对外接口”:
这个图形模块是传统的2D绘制系统,纯CPU渲染,没有用到显卡,毕竟是给物联网设备用的。屏幕显示只支持16位色,底层很多地方(比如ui_screenshot.cpp)里面默认就按照这个格式处理了。未来如果移植到手机或者PC上,这部分也要修改。
上层的绘制器给出的绘制函数有:
DrawArc //绘制弧线: DrawCurve //绘制贝塞尔曲线 DrawImage //绘制图像 DrawLabel //绘制文本 DrawLine //绘制直线 DrawRect //绘制矩形 DrawTriangle //绘制三角形
中层给出的有:
void DrawColorArea(const Rect& area, const Rect& mask, const ColorType& color, OpacityType opa) const; void DrawColorAreaBySides(const Rect& mask, const ColorType& color, OpacityType opa, const EdgeSides& sides) const; void DrawPixel(int16_t x, int16_t y, const Rect& mask, const ColorType& color, OpacityType opa) const; void DrawLetter(const LabelLetterInfo& letterInfo) const;//绘制文字的 void DrawImage(const Rect& area, const Rect& mask, const uint8_t* image, OpacityType opa, uint8_t pxByteSize) const; void DrawTransform(const Rect& mask, const Point& position, const ColorType& color, const TransformMap& transMap, const TransformDataInfo& dataInfo) const; void DrawTranspantArea(const Rect& rect, const Rect& mask); void DrawWithBuffer(const Rect& rect, const Rect& mask, const ColorType* colorBuf);
底层的图形引擎只需要两个函数:
bool GfxFillArea(const LiteSurfaceData& dstSurfaceData, const Rect& fillArea,const ColorType& color, const OpacityType& opa); bool GfxBlit(const LiteSurfaceData& srcSurfaceData,const Rect& srcRect, const LiteSurfaceData& dstSurfaceData,int16_t x, int16_t y);
UI框架方面,实现了一些基本控件,比如按钮、标签、列表跨、勾选框、滚动条之类的。字体渲染用的是FreeType,内置的字体是思源黑体。
整个系统功能比较简单,未来如果需要移植到PC或者手机上,肯定是需要大改的。
媒体服务程序就一个main函数,找不到头文件"hal_media.h"。媒体播放模块只有一个头文件,没有源文件。音频模块只有一个与录音相关的头文件,没有其它源代码。看起来多媒体这块的功能应该是没有写完。媒体子系统通用组件里面也找不到缺少的文件。
媒体服务程序:OpenHarmony/multimedia_services_media_lite
播放模块:OpenHarmony/multimedia_interfaces_kits_player_lite
音频模块:OpenHarmony/multimedia_interfaces_kits_audio_lite
媒体子系统通用组件:OpenHarmony/multimedia_utils_lite
刚刚看到了音频框架的部分:OpenHarmony/multimedia_frameworks_audio_lite,里面实现音源和编码器等功能。最近的提交日期是今晚9点多,华为的程序员果然辛苦。
wifi模块只定义了接口,没有实现,还是空的。不过华为是通讯起家的,这个做起来应该很快吧。
轻量级wifi接口定义:OpenHarmony/communication_interfaces_kits_wifi_lite
轻量级wifi实现:OpenHarmony/communication_frameworks_wifi_lite
数据加解密接口是空的:OpenHarmony/security_interfaces_innerkits_crypto_lite
相机模块已经定义了接口,但是没有实现,但是录像框架已经实现了,估计还是跟物联网的需求有关,很多物联网设备都有摄像头进行录像,但是不需要像手机一样拍照。
相机模块API:OpenHarmony/multimedia_interfaces_kits_camera_lite
相机业务适配接口:OpenHarmony/multimedia_hals_camera_lite
录像框架:OpenHarmony/multimedia_frameworks_recorder_lite
系统服务器框架的设计很像COM,COM是个好技术,被.net和Window Runtime继承了。
“分布式软总线”现在是华为宣传的重点,大有取代“操作系统”这个概念的势头,也是目前代码量最大的模块之一,核心代码在这个仓库里面:
“分布式软总线”包括设备发现、认证和数据传输3个主要功能,整个系统的原理类似蓝牙,但是它是通过局域网来实现的,目前还不支持通过互联网进行。这个模块本身不依赖操作系统,在应用层也可以实现,实际上华为在Windows系统上的实现就是应用层的。
与操作系统相关的代码被隔离在os_adapter模块中,主要是网络连接创建和权限检查功能。
设备发现这一块,用的是Coap(Constrained Application Protocol)协议,这个协议是物联网领域的一个常用协议,由RFC7252规范定义。具体的功能实现在discovery_service.c文件中,大概的流程是:启动Coap服务,有设备连入时,通过Coap的回调执行WifiEventTrigger函数,这个函数调用BusManager函数新建一条“软总线”。
软总线的核心代码在bus_manager.c中,建立软总线的时候,分别启动一个基于TCP的认证服务和一个用于数据传输的会话(Session)服务。认证服务里面保存了连进来的设备的IP地址、端口和会话等信息。每个设备可以通过会话服务建立两个会话,每个会话包含了一条TCP网络连接,应用可以使用这个连接在设备之间进行数据传输。如果通讯数据需要加密解密,密钥也存在会话里面。
最后还是之前说过的话,这里再说一遍:
华为本来有两个选择:
1. 我们被美国制裁了,我们别无他法,我们决心从现在开始,用3到5年的时间,自主研发我们的一套体系,摆脱对美依赖;
2. 我们被美国制裁了,但是我们早就做好了准备,已经掏空安卓,随时能拿出鸿蒙来替代,引起一片沸腾;然后顶着沸腾、质疑和嘲讽暗戳戳的加班加点3到5年,终于拿出东西来。
我始终搞不懂的是,为什么华为选择了方案2,因为华为高管喜欢沸腾?
两种选择反映的其实是一家公司的做事态度,反映的是它的诚信度和责任感。
同时,在开发者大会上对着技术人员说大话,确实有“把技术人员当成不懂行的小白”的味道,让很多开发者觉得自己的智商和专业素养被侮辱了,这可能是知乎上的很多技术人员对华为有抵触的原因之一。
发布会没看,晚上八点多看到消息,在gitee上看了下项目文档:
快速入门里面支持的全部都是Hi35xx系列的芯片,这个系列芯片是属于小海思的产品,常用于视频监控领域,也就是常说的摄像头,性能无法与手机相提并论。
正巧,我手里有一块Hi3518EV300的开发板,跑下试试鸿蒙OS 2.0。
过程很简单,参考下官网的文档:
装一堆的依赖,包括Python3.8 和 llvm 这两个重头戏。构建系统和 Chromium 一样,都是ninja 和 GN。整个安装过程还算比较顺利,当然前提是你使用的是国内的PIP源和镜像站。
下一步就是编译代码了,整个代码包下载(226MB):
解压后如下:
vroot@deskmount:~/packages/code$ tree -L 2 . ├── applications │ └── sample ├── base │ ├── global │ ├── hiviewdfx │ ├── iot_hardware │ ├── security │ └── startup ├── build │ └── lite ├── build.py -> build/lite/build.py ├── docs │ ├── api │ ├── bundles │ ├── contribute │ ├── docs-en │ ├── driver │ ├── get-code │ ├── guide │ ├── kernel │ ├── quick-start │ ├── readme │ ├── Readme-CN.md │ ├── RELEASE-NOTES.txt │ ├── security │ ├── subsystems │ └── term ├── domains │ └── iot ├── drivers │ ├── hdf │ └── liteos ├── foundation │ ├── aafwk │ ├── ace │ ├── appexecfwk │ ├── communication │ ├── distributedschedule │ ├── graphic │ └── multimedia ├── kernel │ ├── liteos_a │ └── liteos_m ├── prebuilts │ └── lite ├── test │ ├── developertest │ ├── xdevice │ └── xts ├── third_party │ ├── bounds_checking_function │ ├── cJSON │ ├── cmsis │ ├── curl │ ├── FatFs │ ├── FreeBSD │ ├── freetype │ ├── googletest │ ├── harfbuzz │ ├── iniparser │ ├── jerryscript │ ├── libjpeg │ ├── libpng │ ├── Linux_Kernel │ ├── ltp │ ├── lwip │ ├── mbedtls │ ├── mtd-utils │ ├── musl │ ├── NuttX │ ├── openssl │ ├── rt_thread │ ├── unity │ ├── wpa_supplicant │ └── zlib ├── utils │ └── native └── vendor ├── hisi └── huawei 77 directories, 3 files
里面kernel文件夹里有liteos_a
和 liteos_m
这两个文件夹,猜测分别对应ARM的Cotex-A和 Cortex-M 架构???其他还没有来的及看,后面再分析。
helloworld.c 程序在applications/sample/camera/app/src
目录,内容也比较简洁,和Linux 的helloworld 基本一致,除了引入los_sample.h
和 LOS_Sample(g_num);
。
在根目录下,使用python build.py ipcamera_hi3518ev300 -b debug
直接编译,过程很流畅,也没出什么幺蛾子。编译的时候没有看到之前要安装的交叉编译工具链arm-himix100-linux-gcc,用的是clang这套东西。整个编译过程速度还是比较快的,几分钟解决战斗。
下一步就是烧写。
烧写使用的还是海思之前提供的工具,编译好的文件分为OHOS_Image.bin
应该是内核文件,
rootfs.img
应该是根文件系统,userfs.img
应该是用户文件系统。
内核编译完成只有3.9MB。
因为是串口烧录的,整个过程花费了28分钟。。。
继续设置下uboot的参数,对你没看错,用的还是Uboot。
启动后,运行下程序,正确打印!
Hello OHOS!
TencentOS-tiny
比又如何??PS : 求教怎么样支持USB网卡,有驱动吗???
有大佬对源码里出现安卓有见解。
可以去康康。
刷it之家圈子发现了有大佬在源码找到了安卓的包。
华为。你说性能目标比ContentProvider快1.3倍的。
搞快点。搞快点。(争取早日去掉ContentProvider)
编码体验和安卓开发差不多。
暂时体验后的小吐槽:
基本可以实现 安卓程序员 一键变成 鸿蒙程序员(仅软件层面)
原来是有文档的。害。我还在研究它的代码结构。
没有文档就瞎搞(划掉)
(鸿蒙好像真的没有Android?)
终于配完环境。
IDE还是有点Bug。(明明网络正常,一直显示我异常),每次重开都要登录一遍华为账号。
那啥,跑虚拟机每次限时1小时??
试试水。
看了一下来源出来的代码,是多年前的liteos加了一些新的代码,所以大家才觉得和Linux长得像双胞胎……
不过,这么看来,GMS被禁的时候的确没有鸿蒙这个东西,鸿蒙的确是被自媒体逼出来了……
从开发工具能看出来,智慧屏上的鸿蒙1.0和这次来源出来的2.0不是同一个东西。结合代码改动的幅度来看,应该是在方舟首次开之后才开始立项的,可能在智慧屏发布之后才开始开发吧……
加一条,鸿蒙还是不要用java了吧,不然还是要给甲骨文交钱,还是逃脱不了被制裁的命运
看了一下开源仓库,基于liteos的内核,微内核系统。面向嵌入式,iot设备。js应用框架。bundle优化。内核目录看一下,就清楚了。
arch现在只支持arm,之前的liteos就是遵循posix标准的。文件系统支持, fat, jffs2 nfs ramfs,也就意味着,linux的ext系列文件系统都不支持。。。还看了一下,timer下面,支持通用的arm,还有hisoc。ls框架也是在原来的通用框架上做的。不是只针对litos的,估计他们只做了os framework以上的东西。
kernel的代码,我大致扫完了。真的只是rtos形式的内核,主要是我在内核的代码中,没看到内存管理的代码,也就意味着,虚拟内核没有用起来。我看到js,第一反应是,是否是原来的firefoxOS的衍生版。分析下来不是
感觉之前媒体过份放大了,还是有点粗糙。。。
感觉CBG主导,2012参与的不多,有点失望。
华为目前的定位是这样的
128kb以下hilink,一套协议
kb级liteos的cortex-m,rtos
mb级liteos的cortex-a,加了迷你版linux功能的rtos
gb级用linux,大号宏内核
12日更新,wdnmd,TEE OS不开源,玩个锤子,没意思了。按照他们的说法50个子系统开放17个。
鸿蒙现在是运行在虚拟机上(吐槽一下,之前说的字节码呢),方舟编译java和js默认JIT compiler,c编译成字节码。这里比较特殊的应该是js也编译到中间码,所以比解释执行快一些。
鸿蒙的API和安卓完全不兼容,相当于同一个底层上面两个framework,比较冗余。安卓程序可以做增量改动引入鸿蒙API。那么看起来长期都要有两个框架共存了。
IPC用dibinder,和安卓binder机制差不多,但是变成分布式,其他没怎么改动。
吐槽一波51CTO这公司,两小时的会你们两个人问了快一个小时,问的问题也没什么技术含量,上来就强调自己一个月前就开始开发。这么着急蹭热点流量赚钱吗,真离谱。
早上看了一下论坛,liteos-a和linux没太大区别,调度用的是MLFQ,页表动态链接之类的一个样,ipc的机制是server/client,需要先注册,推测是lrpc?感觉就是在rtos上加了linux功能简化版,posix通过MUSL开源库。不过我很好奇加了这些功能之后还能保证real time吗?加多了就直接变青春版linux了,似乎没有特别novel的技术,至少去年强调的高性能ipc和形式化验证没看到,不知道那个内核是不是有希望商用,ppt上只有liteos、linux和…。
看了一下开源代码,内核是纯LiteOS,对比了一下既往LiteOS的源码变化不大;只提供了TEE的agent,安全方面应该是通过手机端的TEE+非对称加密保证的? 也就是中心化的。
按照2019年Linux+LiteOS+鸿蒙的说法,今天开源的是IOT设备的代码,IOT主控设备的代码目测是Linux+TEE 鸿蒙。异构化设备采用多内核感觉也正常,但是后续统一内核的思路感觉就很难迁移,12月再看看吧。相比于今天开源的部分,我更好奇手机端的开源,不过12月开放的似乎是SDK,不是系统本身?
比较注意的点是IPC,不知道有没有人去实测一下。理论上应该是TEE里的IPC做了优化?不太清楚目前开源的部分是不是这样。
谈系统我觉得就是三个方面,性能、功能、安全。
性能是最重要的,分布式软总线分布式数据管理这些是基础的,但是没实机没法测,但是作为新系统肯定纸面有优势,有没有bug就不知道了。
安全没有黑客不好表现,纸面很强,实战就等产品吧,而且安全的范围也是因人而异的。
功能方面,事实上那个烤箱的案例就是把参数穿给烤箱,实际上现在的其他系统也能做到。但有的时候易用性的区分甚至比“有无”的区分更大,因为如果开发者觉得难写,那么功能往往就无了。我觉得鸿蒙所提供的统一上层分布式API是最大的关键点。
这也是很多IOT设备的误区,连上了网并不是关键,联网之后能实现的功能才是重中之重。单纯远程控制开关机就叫自己是IOT在我看来是挂羊皮卖狗肉。
写后端的都知道k8s,如果没有集群管理的话,写大规模分布式其实是特别难的,而k8s提供了一个易用的高层抽象。希望鸿蒙能在边缘端干出相同的事,让设备能便捷地写出更复杂的功能。
公布了一些代码和文档。
很多是几年前lite OS的东西,等更多的信息。
从目前情况看,发布的代码完全不能用到手机上面。
很可能还有个linux核心,安卓改的鸿蒙版本。类似于阿里云os的东西是用到手机上面的。
现在的liteos的鸿蒙版本是给IOT设备用的。
————分割线————
还需要继续等一段时间,有更多的信息之后才能判断。
按照规划,鸿蒙2.0应该是一个正八景可以用的操作系统了。源代码公开以后,会有正确的评价。
期望是一个类似qnx的东西,能兼容安卓app,可以开发自己的效率更高的App。
不希望是安卓魔改,继续用安卓生态。
华为手机业务存在不确定性。
存货消耗完毕以后,封锁能不能破掉?
不能破掉,就有第三方硬件合作的问题。
第三方厂商用不用华为的鸿蒙的生态系统,决定开发者有没有动力开发。
希望华为在自己还能生产硬件的时候,把鸿蒙的竞争力做起来。
只是兼容安卓,第三方没有任何动力使用。原生APP比安卓效率更高,或者体积更小,功耗更低。
华为又能让第三方硬件厂商放心,第三方才敢用。
譬如,安卓下和平精英865能跑的速度,鸿蒙下的和平精英用天机720就能跑出来。
安卓下刷刷微信知乎,亮屏待机8个小时。
鸿蒙下刷刷微信知乎,亮屏待机12个小时
鸿蒙就有竞争力了。
华为没有手机业务了,魅族可以用鸿蒙系统。其他厂商看到魅族用了鸿蒙有竞争优势,也会跟进用。
鸿蒙生态就建立起来了。
这次的版本去掉了Linux内核哦!
9月10日,在深圳举行华为2020开发者大会上,华为正式推出了鸿蒙2.0系统。华为消费者业务CEO余承东表示,明年华为手机将全面支持鸿蒙系统。
余承东介绍称,鸿蒙主要包含两大部分:“1+8+N”的硬件生态和围绕开发者、用户的应用生态。其中鸿蒙2.0带来最大变化是可支持更多设备的协同,方便开发者部署和开发。鸿蒙2.0支持更多设备,在1.0版本基础上,开始支持手机。
鸿蒙os2.0面世,对比于第一版,2.0最根本改变是将1.0的基于linux内核去除掉,使用自己研发的鸿蒙微内核。那么,鸿蒙就可以自豪地称之为国产os。
鸿蒙OS2.0,这是面向未来的操作系统,专注为人工智能和物联网驱动的连接设备带来无缝体验。
感谢美国,把中国逼迫成无所不能的国家,把华为逼迫成无所不能的企业。
很荣幸收到码云邀请参加鸿蒙系统源码解读征文,我呼吁程序员中的有识之士都应该踊跃参加!贡献出我们对中国开源事业的一份力量!链接在图里。
=====
专业人士来了,我从事安卓开发也有不少年头了,在那之前还参与开发了pintos等知名系统kernel,在os界摸爬滚打多年,给pintos系统贡献过不少代码,自认为对这行比较熟悉。这次鸿蒙真的是打了所有质疑人的脸了,因为这次真的发力了,先上图
这是鸿蒙的ide界面,可以看到完善度已经很高了,基本已经达到了上线的水平了。我看了一下鸿蒙的代码,发现竟然我们鸿蒙已经实现了在cpu的ISA给全部替换为我们自主研发的html语言,这真的是件非常大的创新!鸿蒙实现了英特尔还在探索中的东西,估计是下一步要上麒麟芯片,这样一搞,实现了从芯片层面直接运行Javascript bytecode和rendering DOM,实在是太精妙了,估计还跟分布式类小程序系统有关,拭目以待吧!我认为我们在os研发和微应用绝对已经领先了!中华有为,我真的为鸿蒙工程师所付出的努力感到骄傲!
===第n+2次更新
看了下鸿蒙os的process creation部分,发现华为也优化了很多常见unix kernel存在的漏洞与不足,先上图。
图中可以清晰的看到,高亮部分代码是检查ret这个变量是否小于0的。这是个非常聪明的选择,因为ret是type UINT32,也就是说是unsigned的。但是因为咱们鸿蒙系统对稳定性的要求很高,因为可能未来会用在外太空或者高辐射场景,为了防止SEU,也就是single-event upset,高辐射环境可能会导致内存bit flip,鸿蒙为了确保万无一失,多次确认此变量是大于0的。我觉得这方法很保险!
第二点,上图
图中体现了方舟编译器配合鸿蒙系统的强大,完美的支持return type polymorphism,直接可以把int32自动化分布式的转变为uint32 type,非常的智能化了。
===第n+1次更新
看代码看的眼花了,来更新下,先解答下关于代码里面有安卓的争议,先上图。
外行的朋友可能看不懂,我来给大家解释一下,这张图是鸿蒙分布式内核hdc和普通安卓adb disassemble操作后的函数列表。大家可以清晰的看到,尽管鸿蒙os为了兼容安卓的写法和idiom所以一部分的函数名非常像,但这相似仅仅止步于名字而已,这图下面的两个红框内可以明显的看出,很多method的signature其实完全是不同的,进一步印证了鸿蒙系统是一个自主研发和编写的os。
进一步来看,我认为鸿蒙兼容安卓软件的方法也是首屈一指,对class内method名称执行了经典PCRE操作,也就是regex.replace,确实是现阶段最快速的兼容方法了,为工程师点赞!
所以,我认为可以很明确的看出,他们确实投入了非常多的人力物力来撑起我们国家os研发的一片天,让我们拭目以待吧。
===第n次更新
亮点来了!鸿蒙采用最近业界比较新颖的switch采样率转化算法来处理音频,我个人认为这是个非常新颖的想法,估计能比传统方法快上一些,但是确实还需要优化一下,可能导致.c文件代码行数过多的问题,先上图
红框内大家可以明显地看到,32000采样率的音频被通过鸿蒙系统转化为24000采样率了,这里科普一下,采样率越高,内存占用越大,估计鸿蒙内存还能省!太强了吧,没想到学术界的想法这么快就被华为应用了!,一个字, 牛!
===第一次更新
我刚刚看到了鸿蒙os的演示代码,先上图
果然不出所料,鸿蒙果然是走的路线在isa level直接支持java的运行,这结合了刚刚看到的html,完美的实现了javascript!十分的巧妙!
=====
下面来个具体的例子,鸿蒙这次真的成了!
这是鸿蒙系统mem.c内核代码文件
外行用户可能看不懂,我讲解讲解,鸿蒙系统简化了以往linux系统有很多file descriptor的弊端,直接分布式的把所有descriptor设置为0(打开文件速度显著提升),极大的简化了打开文件的heap内存开销,至少减少内存使用一半!
第二,所有read操作都会很快的返回0值,意思就是读写操作速度的巨大提升!
我觉得真不错!
很多人说这里return 0有啥用呢?我来补充一点,其实在鸿蒙的assembly里面,返回值已经存在了register里面。
那几个内存操作的函数,看起来只是return 0,
其实是把整个内存操作塞在return这个instruction里面了。因为在底层的isa里,一个指令就能搞定内存操作。
说的挺好的。
=====
评论看到工程师对mmu和调度器的优化也非常大,我有时间继续更新,先研究研究代码。
免责声明:以上仅代表个人意见,本人不对内容的可靠性,正确性以及任何引用,截图,代码等任何引申内容做出任何具有法律约束力的保障。上文所有Harmony,鸿蒙,方舟,麒麟等词汇均指代各自中英文词汇本意,并无它指。
有些朋友会喜欢挂鸿蒙code里的低级错误,我觉得有问题就在gitee上提PR,打patch就好了。真没必要贴图diss一些错误。代码毕竟是人编写的,总会出现错误。我相信一开始的安卓,Linux也会有各种问题。而且开源的意义本身就是希望人多力量大一起去完善,纠错。怎么就成了冷嘲热讽的素材了?这些基础代码看得出来,是华为工程师投入的心血,能看懂代码的也差不多是同行,至少尊重下别人的劳动成果。好吧
---—————
但行好事,莫问前程。应用前景如何,我只能说中国需要这样的系统。如果有了这样的系统,你我的手机电视购买能便宜很多,真的会切实利到每个人身上。
我可以讲个故事,让一些人感受一下。现在你在淘宝搜CH340串口转USB模块目前价格能低到几块钱,可在CH340之前我们都用美企的芯片,那时候同样功能的芯片一个芯片就要三四十块,还不是模块。等着国产的CH340出来之后,大幅衰减美企芯片的价格,他们只能被迫降价。现在你看把美企芯片从几十块杀到几块。如果我们没有只能高价去买他们的东西。而我们多花的钱,不都是我们加班赚的么。
鸿蒙现在的定义很模糊,很笼统。但如果有这个系统,能挤进市场,他最大的前景就是让你少花口袋里的钱。
无论鸿蒙未来怎么样,代码多渣宰,功能多Low,我觉得无所谓,华为给我们一个基础版,只要不是抄的,不是只有ppt,能够开源出来。这样我们利用社区的力量迭代升级,鸿蒙总会有自己的定义。我们可以慢慢地脱离开源第三方库的依赖自己开发,慢慢地我们可以增强各部分功能,慢慢地我们可以调整脱离那些外企大厂的设计架构。真的没关系,只要有个起点就是好的,总要开始和迈出第一步。
话不多说,本人不才,但我会贡献自己微薄的力量,帮助review鸿蒙的code,未来也会在空闲时间增强鸿蒙一些部件的features
反正我已经开始提一些patch了,希望鸿蒙成长起来。
先说大面上的事,虽然华为这次的生态圈也好,鸿蒙2.0也好,HMS Core 5.0也好,EMUI11也好,现阶段最重要的事情,还是,活下去。
硬件上,短时间内,所有的半导体领域都被封死了,只有一个虚无缥缈的不知是真是假“塔山计划”,但就算是塔山计划真的实现,再牛逼,也远水解不了近渴。除了半导体领域,我还听说到不少相关领域也出了不少突发。
回来说说这次的鸿蒙2.0。
这次,这事,巨硬想做,UWP就是。
上面这张图是我从巨硬官网找来的。
UWP 应用的功能
UWP 应用的特点:
安全:UWP 应用声明其访问哪些设备资源和数据 用户必须对该访问授权。
能够在运行 Windows 10 的所有设备上使用常见的 API。
可以使用设备的特定功能并让 UI 适应不同的设备屏幕尺寸、分辨率和 DPI。
可通过所有 Windows 10 设备(或仅指定的 Windows 10 设备)上的 Microsoft Store 获取。 Microsoft Store 提供多种可帮助你的应用赚钱的方法。
能够在不对计算机构成风险或引起“计算机腐烂”的情况下安装和卸载。
互动:使用动态磁贴、推送通知以及与 Windows 时间线和 Cortana 的“Pick Up Where I Left Off”交互的用户活动吸引用户。
可使用 C#、C++、Visual Basic 和 Javascript 编程。 对于 UI,使用 XAML、HTML 或 DirectX。
看看UWP应用的功能,和UWP应用的场景,是不是跟鸿蒙2.0有点像?
嵌入式设备、PC、手机、大屏设备、还有Xbox。当然啊,实现的方式差异很大,想法都是类似的。
微软在这条路上尝试过好几次,最早希望建立微软生态,用Win CE做嵌入式设备,用Windows提供日常使用,用Windows Mobile/Smartphone做移动掌上设备,用Windows Sever做服务端。这条路最后走成了,Win XP成为了嵌入式设备主流选择,Windows Mobile被安卓按在地上暴打,Win CE被魅族和导航仪各种魔改。巨硬最后放弃了这条路。
后来微软捡起来Zune上尝试过的Metro界面,结合Win 10,想开始做UWP。但Windows Phone 我不说你们也知道。而PC 已经不是这个时代的家庭媒体中心了,手机才是。根据统计数据,中国目前手机日均总使用时长是PC的10倍以上。
这是我觉得鸿蒙2.0的起始原因吧。
鸿蒙2.0 更像是重新造了个轮子,不管这个轮子怎么样,但至少是个轮子。系统主要问题还是生态,谁在用,谁在更新,才能保证这个生态有更好的发展。
所以,华为拉了一堆框架,拉动这个生态的发展。
但另一方面,这个事情,能不能成,还是两说。
但国内,能在消费级市场做这件事的,也只有华为。
当然,国内还有一个信创备胎——中科麒麟,但中科麒麟更多还是Linux,主要用于PC。
这次这个,是从嵌入式设备出发。国内这群家电厂商们有一把生态,京东有一套、小米有一套、美的自己有一套、海尔自己也有一套。重复开发是一回事,我得装一堆app也是一回事。
有一个厂商做一套通用的开发方式和接口,统一家居,也是件好事。
从某种程度上,也更多是从生态圈出发。
华为在IoT方面更多还是类似华为在To B领域一样,以生态圈合作为主。这个图是最近跟客户聊某个化工园区规划时候找到的,华为负责拉大旗,下面提供一堆可选方案和合作伙伴,提供一整套服务。
那就打这开始吧。
希望这杆大旗能多扛一扛吧。
先活下来。
为什么知乎上很多人只看到Harmony,没看到重点。
华为不仅发布了Harmony 2.0,还启动了OpenHarmony项目(鸿蒙系统开放源代码项目),这才是重点,重点,重点。
该项目类似于Android的AOSP(Android Open-Source Project)——Android系统的开放源代码项目,最初由谷歌领导的开放手机联盟(Open Handset Alliance)创立,提供了基于Linux内核、Dalvik虚拟机的Android基础框架代码,允许开发人员创建定制版的 Android 操作系统版本,同时将设备和配件移植到 Android 平台时确保设备符合兼容性要求。
这,才是Android OS风靡全球的本质原因。
Android系统从根本上来说,由两部分组成[1]。第一部分是开源的AOSP(Android开源项目)。这部分资源为谷歌开发者联盟的成员,提供了基于Linux内核、Dalvik虚拟机的Android基础框架代码。在这个框架中,谷歌虽然也封装了部分应用和API,但目前其中大部分应用和API都已经不再更新。在与开发者提供的最新应用进行对接时,往往无法实现或BUG频出。
第二部分是谷歌移动应用(GMS),或称谷歌服务、Google Play Services等等。这一部分堪称Android系统的“活的灵魂”。其中包括谷歌各各样的应用,还包括一些列对开发者来说非常重要的、及时更新的API。而它们都是闭源的。
最近两年,移动操作系统最值得注意的趋势之一就是Android闭源化。谷歌正在有预谋有计划地废弃AOSP中大量的应用和API,用GMS中更好的应用和API取代。Ars Technica《可望不可及的开源》一文详细描述了这一趋势,并盘点了正在迁移的应用和API。
Play Service 实为 Google 对抗衍生版本 Android 的一大利器。作为 Goolge 的闭源 app,它随 Google Apps 套餐包一道被授权给 OEM。任何功能由“正常版”Android 移植到 Google Play Services 都意味着由开源走向闭源。这一招不仅想靠独家垄断的功能吊用户的胃口,目的还在于通过 API 的授权牢牢控制住第三方应用开发者。
所以,华为想要打破Google的技术霸权和垄断,只能推出自己的OpenHarmony项目。
截止到发布日当天,OpenHarmony项目仅支持128MB RAM的设备,但计划将在2021年4月扩展到支持4GB,并且将在2021年10月之前完全解除内存限制。
2019年5月,华为被列入美国实体制裁名单,禁止谷歌为使用Android系统和Google移动服务(GMS)的华为手机提供技术支持。
所以,华为只能被迫交付不带Google移动服务(GMS)的Android手机,从而大幅削弱了HUAWEI全球应用生态系统和各项功能。
HarmonyOS是一个具有伟大战略意义的项目。
因为它可以作为一个堡垒,一个帮助中国企业对抗美帝霸权的战斗堡垒。
不过是求个活路而已!
无论是鸿蒙也好,HMS也好,都是重复做轮子,而且是需要花费巨大资源去造的轮子,几百亿元,不是为了大家沸腾,也不是为了大家反转,是这家庞大的科技公司求活。
沸腾你干嘛?华为现在愁的是销售?他愁的是供货好不!
无论是鸿蒙还是HMS要活下去,都有一个前提,华为手机部门不能倒。
OVM都已经制订了详细的规划等这个巨人的倒塌,据说三家加起来的增长目标已经超过了华为现在的销售量,盛宴啊!
我们看到了中国高端SOC的辉煌,麒麟9系市场份额超越高通8系,也即将看到麒麟的绝唱!
我们看到了国内科技公司在移动操作系统和移动生态的努力,也许我们还能看到国内其他科技公司用着美国芯片和系统把他摁死。
然后高华们轻松一句,都是PPT,获得了几千个赞。
曾几何时,逼乎给人的印象是一个大佬云集的地方,发展到现在成了小白装B的地方,那些说鸿蒙OS除了第三方包只开源了几千行代码和几万行代码的逼佬们,看到这个用source insight统计的open harmony代码行数有何感想?
总代码行数8723939,去掉含大量第三方包的third party以后是4817843,kernel部分128988 ,这就是逼佬们说的除了三方包知开源了几千行几万行的代码?
看很多同学认为鸿蒙就是Linux,或者说操作系统就是Linux。
这里提一下概念:Windows是一个操作系统,但是Linux只是一个内核。
Windows除了有内核,还有各种子系统,比如UI、桌面等等。
而Linux本身只具备进程调度、文件管理等等内核的功能,
它没有桌面系统等等这些让普通人能直接使用的功能。
要使用Linux,还需要在它之上配齐各类APP。
而鸿蒙要对标的是Windows、安卓、IOS这样的能直接使用的完整系统,
而不是对标Linux。
鸿蒙支持多套内核:
在性能不太强的芯片上使用liteos-a内核,
在手机这类设备上还是使用Linux。
这次在GITEE上发布的就是liteos-a,
其他子系统的发布可能没那么快。
我有幸在8月份作为外部开发者进入华为,把liteos-a移植到第3方芯片。
我接触liteos-a比较深入,对它的评价是:优秀!
这是一个轻量级的内核,支持MMU,支持进程隔离,POSIX接口兼容。
理论上在Linux中能跑的很多APP稍加修改就可以在liteos-a上运行。
为什么说要修改呢?
比如说触摸屏驱动接口就跟Linux有点不一样,
我不知道liteos-a为何不把这些常用外设的接口做得跟Linux完全一样,
也许是版权问题,也许是政治问题。
但是这不影响liteos-a成为一个优秀的内核,
它是实时内核,Linux不是,
它的代码量很小,启动速度快,
内核中各种子系统都比较薄,容易理解。
我在华为里面只用了7天左右就把liteos-a移植到了imx6ull上,
把最小系统运行起来了(支持LCD、触摸屏、基于RAM的根文件系统)。
如果我在华为内部写的代码、文档,他们审核后能发给我,
那么根据我的文档,以及即将录制的视频,
我相信有单片机基础的人用1、2天就可以在任一款cortex A7开发板上移植好liteos-a。
为什么是cortex A7 ?
因为liteos-a目前仅支持cortex A7,
开放原子基金会的人,或者社区,应该会移植到其他架构上。
就看大家了。
-----------------------------------------------------------------
我在华为移植了4个版本的liteos-a,华为人真的很拼。
我在里面写的代码拿不出来,今晚开始第5次移植到IMX6ULL上,
成果如下(不通宵了,明天还去华为参观一下):
熟悉手机系统的朋友都知道,大概十一二年前,Android 系统其实挺难用的。从4.x开始,每一代版本,Android 都在前进,一直到现在,背后是 Android 的团队(Google)、Android 开发者社区不断的迭代改进。
鸿蒙系统现在是 2.0。想象一下,鸿蒙 4.0、5.0 的时候什么样?
这两年,在知乎里嘲讽鸿蒙的朋友太多了。但是另一边,华为一直在投入大量资源开发。要做一个操作系统,难度是非常大的。除了系统本身,还有整个生态的建设,据我所知,这方面华为这两年也找了很多公司合作。
鸿蒙的策略本身很简单,从手机到各种智能硬件都会覆盖,在不同阶段开放的东西不一样。
我比较看好在智能硬件、嵌入式里的应用,因为相对来说,华为本身的竞争因素比较少,其他厂商的顾忌也最小,从这方面切入,可以实现农村包围城市。现在很多智能硬件里面都是 Android 系统,这方面空间很大。
在手机方面,现在 iOS 是封闭的极致,自己做系统自己做硬件,Android 是开放的极致,Google 和开发者社区做系统,Google 自己不怎么做硬件(实际也有,但几乎可以忽略,其他厂商的顾虑不大),华为则在中间,自己做系统,开源或者部分开源,自己做硬件。其他手机厂商肯定是有顾虑的。短期内,手机方面能够满足好华为自己的需求就不错,毕竟这方面华为已有的用户量就足够大了。智能硬件等可以高歌猛进。
大家慢慢来见证历史吧,再过几年回看鸿蒙的发展,会发现就像 Android 的发展一样,到某一代的时候,就开始快速铺开了。
涉及到华为的话题里很有意思。我刚好和华为一些做研发中高层比较熟,他们也并不认可一些营销、或者借着他们名义沸腾营销的做法,这样让很多人对于华为的信息比较反感,还有 PPT 系统的说法,甚至说鸿蒙是假的。其实哪个产品不是一开始由 PPT 开始,要做规划,要有路线图,但是背后是大量的研发人员在做事情。几年前被邀请去华为内部的大会做分享,他们和我说,当时单是华为的手机业务就有6000个程序员(或者上万个,具体数字忘了),当时我记得其他一些手机厂商整个公司有几千人。这么多人在工作,一步一步把 PPT 里的东西做出来,把设想的东西变为现实,特别是在当前的局势下,很不容易。
鸿蒙在手机上在之前就跑起来了,但是是不是对外开放,需要看整体的策略。包括现在,发布的东西,和正在做的东西,也都会有所选择。发布会一般有两个目的,一方面是给相关的合作伙伴看,让大家更愿意合作,或者提前准备。另一方面是给普通用户,作为 PR 策略的一部分,让大家产生情感共鸣。
在手机平台,鸿蒙的重点不是让哪个手机厂商去用,而是让大量的应用开发者来适配鸿蒙。真正在公司里决定是不是为鸿蒙开发应用,看的不是大家在知乎里讨论的这些。华为在国内大量的用户,这对于任何一个在手机应用里做事的公司都有吸引力。很多人认为手机操作系统是个技术的事,不完全对,手机操作系统最大的难点在于生态。这方面华为有原始积累,在冷启动的部分要好做很多。
我在B站开始创作视频了,邀请大家来关注。之前写过的一些几万赞、甚至十万赞的文章,都做成视频,更深入了。搜索「马力在知群」
与文章内容无关:
我是国内最早一批移动互联网产品经理和设计师,在知乎里有130多万人关注。知群是高端职业教育平台,学生包括国内外各大高校在校生、苹果、谷歌、微软、阿里、腾讯、字节、小米等的在职员工。现在还有各大公司P8、P9、P10的专家和高校教授在知群分享经验。
现在有免费的5天学习机会,帮助你了解阿里、腾讯的工作方法论,更好的入门或者提升。在这里了解详情和报名:
应该是你能接触到的最有干货的免费课程,机会有限。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有