西西河

主题:鸿蒙只是套皮安卓的各位出来要不要表个态啊 -- DDDgva

共:💬404 🌺2978 🌵184
全看分页树展 · 主题 跟帖
家园 我对android的理解(1/4)

西西河的贴子终于有一个我能插上嘴的话题了。特意注册了名字过来说两句。

曾经在android开发的世界里混过好些年,解决了个人温饱问题。因此我对android开发还是有了解的。看到不少对android认识的谬误,在知乎那里是气势汹汹,只讲立场,不讲事实,就不多说了。在这里还能理性地争论,就想说说自己的感觉。

老话说:在行越久,胆子越小。到现在根本不敢说我懂OS,甚至都不敢说懂得OS的定义了。因为软件始终还是实践第一的行业,教科书上的定义往往落后于实践。现在是个公司出一套软件都可以叫XXOS。因此啥叫OS,有技术上的定义,也有商业上的定义。绝大多数人都搞不清楚里面的东西,再加上一个“套壳”的概念,还是自由心证,洋洋洒洒数百言,与人无用,与己无用。这种P用没有的东西能波涛汹涌流行于网络,要是没有小钱钱在推波助澜,会让人怀疑自己的社会经验的。

不过正方的论据的技术性也不强。下面的那个“转自水木社区的帖子”(以下简称此文),虽然大多都对,但里面颇有谬误。如果就这样认识对手的实力,以后打起仗来,吃亏的还是自己。

首先一个概念:什么是Android?这其实不是一个技术概念,而是一个商业概念,或者说授权的概念。GOOGLE维护着一套庞大复杂的兼容性测试集合。要想获得android logo,就得“一次性”完全通过兼容性测试,然后提交给GOOGLE。审核通过以后,GOOGLE要求安装Google Mobile Services,这才授权LOGO。严格地说,那些国行版本,都不能叫android,没有GMS都不能叫android。只不过国产手机厂家凶猛,一开发就行销全球,认证的是国际版,国行版就是没有GMS而换另外的市场引擎。有钱赚,GOOGLE也会睁一只眼闭一只眼的。

虽然android logo的最终目的是GMS。但是GOOGLE确实是有真本事的。那一套兼容性测试集合对付起来相当麻烦。项目里需要安排专人专门对付,要花不少时间和精力的。曾经看过其中一些代码,也是有收获的。实际上就是那一套兼容性测试集合从技术上定义了什么是android。要维护几千万行代码的长时间的产出可控,在技术上在工程上在管理上是得有真本事。国产软件,如果也能维护几千万行代码,十年以上稳定产出,工程管理技术也得跟上才行。

此文的最大问题是把GOOGLE看得太LOW了。作者大概没有实际参与过android的开发,对android的认识采信了一些网络上是似而非的传言。先从细节说起。

“Android是采取Apache许可而非GPL,这就意味着Google可以在AOSP的基础上修改、衍生出商业的Android版本,而无需开放这个商业版本的源代码。”这句话对一半错一半。其实把这套规则用到极致的倒反是国内厂家。GOOGLE倒反比较爱惜羽毛,不是因为道德,而是他不给你碰瓷捞钱的机会。

以前ANDROID系统开发完毕之后,会出一份整个系统里各个软件的License统计情况。这个统计表好像还要报给GOOGLE的。写这个脚本还贼麻烦,因为有些软件是组合式的,有些代码是这个,有些代码是那个。只要是GPL/LGPL的,一定会开放出去的。国内大一点的公司基本上都能遵守,还是那句话,不是因为道德,而是他不给你碰瓷捞钱的机会。

而对于GOOGLE来说,更彻底一些,只要是曾经开放的,就一直保持开放,并且会扩大开放。因为这是他的商业策略,进攻手段。而不开放的东西,都是另起炉灶,从头开发的。对此,你从License的角度来说,是无可指责的。

“AOSP本来是基于Linux kernal开发的,而Linux是使用GPL授权,因此Google又在Linux kernal上开了一个“小门”,使得AOSP绕过了GPL的约束,从而可以采取Apache授权。”这种说法网上甚为流行,但却是错的。从来就没有开了一个“小门”这种文艺描述的操作。从License的角度来说,从传统习惯来说,厂商的做法是符合规矩的。

我们知道一个软件大了就需要分层。但是哪层厚一些哪层薄一些,有技术经验,也有商业上的考量。举一个具体的例子,android的图形依赖于OpenGLES,下面是各家的GPU。各商家为了保守自家的秘密,为linux kernel开发的驱动写得尽可能的薄,可能就是暴露一些寄存器和内部地址,啥意思也没有文档告诉你。这驱动是GPL的,一直保持开放,反正你也看不懂。而具体的操作,逻辑处理,状态机之类的,完全封装OpenGLES代码库中,都是厂家的私有版权,只开放给合作厂商,像华为/联想这些厂商,肯定有高通/ARM的代码。所以说GOOGLE根本就没有开了一个“小门”这种文艺描述的操作,而是想商业厂商之所想,在规则内选择了偏向商业利益。

“当Android早期较为弱小时,将其开源可以获得整个社区的支持。而当它发展壮大之后,再销售Android的私有版本(即商业版本)才能获得最大的收益。...”这种说法太肤浅了。什么是“私有版本”?私有版本都是手机厂商的,GOOGLE对此真不看重。GOOGLE的红线是android一定要有GMS,有了GMS才能叫android。开放源码是他的进攻策略,只要能推广GMS,他啥事都会干,尽可能开放源码,有助于降低开发成本,就有助于推广他的GMS,所以做为基础设施的AOSP,他是一定会保持开放并且扩大其规模,甚至不允许厂商乱改,所以那一套兼容性测试集合就是约束厂商的。所以对于各厂商来说,底层和中间件基本一样,有价值的可能就是漂亮的界面,就是所谓的套壳,还有提供有价值的服务的软件上。

所以此文有些说法是不了解情况,不接地气,空对空,是不能打动其它厂商家为你出力的。最根本一点可能是下面一点认识有误。

“在这种情况下,Google推出了安卓与iPhone抗衡。但是iPhone实在是太强大了,光靠Google一家也不够,所以Google选择把安卓的源代码开放出来。”

通宝推:晨池,shyukyo,一着,diamond,铁手,桥上,唐家山,nanimarcus,
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河