如何看待「YunOS不是安卓」這種說法?
每次想到YunOS團隊宣稱「YunOS不是安卓」這件事情我就很生氣,感覺這是開源界的一大恥辱。而且阿里巴巴以前是一家讓我充滿好感,甚至頗為景仰的一家公司。但是YunOS團隊卻做出這種事情來,實在是讓人另眼相看。
我在這裡不想列舉YunOS和安卓之間的關係了,想必各位看官已經心知肚明。我只是想知道,為什麼阿里會選擇這麼做。阿里明明是一家研發實力不弱的企業,為什麼會選擇做一個「抄作業卻不承認的孩子」?這對阿里有什麼好處?
想當初,谷歌已經完全重寫了安卓的Java虛擬機,只是還保留了Java API,就被甲骨文公司起訴並且敗訴了。即便YunOS的所有安卓兼容層代碼都是阿里自己寫的,沒有從安卓項目複製一丁點代碼,那麼,阿里這麼做真的不涉及著作權和專利糾紛嗎?
開放源代碼項目並非沒有著作權,除非它採用「公共領域」許可證發表。而安卓開源項目(AOSP)中的大部分項目採用的並非該許可證,所以安卓的代碼,包括其API,是受著作權保護的。而YunOS如果不是安卓但卻可以運行安卓程序,顯然是對安卓的API進行了全面模仿。
所以,我對阿里沒有複製代碼這件事從根本上表示懷疑。即使YunOS真的自己重寫了虛擬機,但是安卓大量的Java代碼,YunOS開發團隊真的全部重寫了一遍?如果沒有,那很顯然依然是安卓衍生項目。就像從Dalvik虛擬機換成ART之後,軟體的運行原理和運行方式都完全改變了,但是安卓還是原來的安卓,因為軟體賴以運行的API還是安卓的API,沒有變成Linux的,也沒有變成iOS的。從某種程度上來說,我們甚至可以這樣認為,具有相同的應用程序編程介面(API)的兩個操作系統,是同一種操作系統,而無論它們的實現方式有什麼不同。因為對這樣的兩個系統來說,開發者不會發現兩者有什麼不同,運行在其上的軟體不會發現兩者有什麼不同,用戶就更不會發現不同了。
所以直到最後,就算全部代碼都是YunOS團隊重寫過的,但是你精確的模仿了對方的每一個特點,每一種設計,每一個類,每一個函數調用,那麼你真的不算對方的衍生項目?而如果你說你沒有進行這種模仿,那麼為安卓開發的軟體為什麼能在你的系統內如此正常的運行呢?
著名的開源項目Wine,是一個能在Linux和macOS下運行Windows應用軟體的兼容層。我們可以說「Wine和Windows毫無關係」,「Wine和Windows的底層架構不同,沒有模仿Windows」,「Wine不是Windows的衍生項目」這種話嗎?
還是覺得MIUI、EMUI這樣的安卓衍生項目更加真誠,它們至少明明白白告訴你它們只是改變了安卓的UI。
而另一家大型跨國企業,為什麼敢於堂而皇之的推出一款和安卓幾乎沒什麼區別(不要告訴我添加web app支持就叫做區別,這種低難度的工作會點軟體開發的都能做到。此外,阿里確定自己的html5/js引擎不是基於蘋果/谷歌的webkit/blink內核?還有,web app在渲染時真的不需要經過「安卓兼容層」的video模塊?)的操作系統,並且宣稱自己「不是安卓」?
-----------------------------------------------
6月13日更新:
我沒有YunOS真機,所以之前只是一直在質疑,沒有得出確定的結論。不過今天我發現了在YunOS開放平台上可以免費遠程租用真機:YunOS開放平台。
於是我就租用了一台運行 YunOS 3.2.0 的紐曼雲手機:
然後我就發現了一些有趣的事情:
1、YunOS的電話服務是apk:
2、YunOS的簡訊應用也是apk:
3、YunOS的通訊錄(聯繫人)應用也是apk:
4、桌面自然也是apk啦:
那麼問題來了,既然「YunOS不是安卓」最重要的理由是「YunOS支持cloud app,cloud app不是安卓app」,那麼,做為YunOS中最重要的桌面、電話、簡訊和通訊錄應用,為什麼不是cloud app反而是安卓app呢?
之前有知友指出,BB10系統也兼容安卓應用,Windows Phone也嘗試過兼容安卓應用(雖然最後流產),那麼既然這兩個操作系統都不是安卓,YunOS兼容安卓應用但不是安卓也說得過去了。
然而,就我目前看到的情況來看,YunOS 3.2.0 的狀況和其他兼容安卓應用的系統完全不同。BB10和Windows Phone很明顯不是安卓,因為它們的系統不是通過安卓應用構建的。BB10出廠時是不帶任何安卓應用的,系統內的電話、簡訊、通訊錄、瀏覽器……都是黑莓原生app。Windows Phone也一樣,因為兼容安卓的嘗試被放棄,到目前為止系統內沒有一款軟體是安卓app。簡單來說,這兩個操作系統離開了安卓app一樣能工作的很好,所以它們不是安卓。
反觀YunOS 3.2.0,從系統啟動開始,我們接觸的幾乎一切app都是安卓app,而YunOS一直重點強調的cloud app卻不知道在哪裡。很顯然,YunOS的這種狀況早已經超越「兼容安卓」的限度了。如果離開安卓app,YunOS 3.2.0就不能打電話,不能發簡訊,甚至連桌面都沒有!安卓應用構成了YunOS系統的基礎,然而,YunOS居然不是安卓?!
YunOS 3.2.0 是該系統先前的版本,目前最新的YunOS 6剛剛發布,據說已經有了關鍵性變化(見另一位答主的回答)。本來,YunOS開放平台中最新的設備運行的是YunOS 5,不過遺憾的是設備只有一台,我預約了多次,結果每次都連不上該設備。最後一次有幸連上,居然發現還有其他人也能操作。然後在兩者(或者更多人)爭奪設備操控權的時候發生了一些意外,設備意外下線了。對此我很抱歉。
我希望YunOS開放平台早日上線 YunOS 6 設備,讓我們去看看它是不是真的如同另一位答主說的那樣「可以脫離安卓應用獨立運行」。如果確實是這樣的話,那麼 YunOS 到版本6的時候終於能說自己真的不再只是一款「能運行自有 cloud app 的安卓系統」了。
不過,「YunOS不是安卓」,好像是從版本1開始就一直宣傳的吧。
呵呵。
--------------
參考文獻:
[1] 獨家解析:為什麼YunOS 3.0不是安卓系統? - ROM基地
--------------
6月24日更新:
YunOS開放平台里運行YunOS 5.1.6的朵唯雲手機又上線了,以下是截圖:
圖1. 系統版本
圖2. 阿里雲桌面,目錄結構看上去是Android 5.0或以上(/system/priv-app/package-name/package-name.apk):
圖3. 通話管理
圖4. 簡訊
圖5. 聯繫人
圖6. 阿里雲的雲服務,還是apk
結論:和YunOS 3沒有什麼不同,該是apk的還是apk,只是系統看上去從Android 4.0升級到了Android 5.0。
說好聽一些,Yunos是Android的深度定製系統,通俗的說,Yunos是一個山寨Android引用沙發管家裡的一篇文章部分內容(實在找不到那個鏈接了,昨天找了一天,有朋友能發給我的話我會做修改,謝謝)當年阿里雲剛成立的時候,收購了一家國內做java虛擬機的科技公司~猛獁科技,同時還找了一群幫moto做Linux內核的人,想搞一個自己的操作系統。阿里雲的CEO王堅,和李開復都是微軟研究院出身,當時十分的看不起李開復的「點心os」,認為這種拿Android改一改就出來個系統的行為實在土鱉,沒品味!老王要搞一個自己的操作系統,可是呢……從新做一個操作系統談何容易!老王的團隊搞了半年沒搞出來,怎麼給馬雲交差???只好拿安卓改了……土就土吧!虛擬機是現成的,直接替換掉!HTML5和webOS比較潮,加進去個雲服務!可HTML5用瀏覽器跑的,肯定比不了原生應用,咋辦?得保證流暢性啊!那還是用原生應用吧……然後YunOS誕生了!
看明白這段出生證明後,相信你自然知道答案了。如果 YunOS 不是安卓的話,Smartisan OS 也不安卓咯,YunOS 改了 Dalvik,Smartisan OS 還改 WindowManager 了呢...
只對一個小組件進行修改就能成為一個全新的項目,我的天,這是多厚的臉啊。
Google 對 Square 的 Dagger 進行了那麼大的修改也只是 bump 了一個版本號而已。
差距。
人家這話根本不是對IT行業的人說的,是對領導、對馬雲、對普通消費者說的。各位再冷嘲熱諷,也不能阻止YunOS被廣泛部署(雖然大量終端都是垃圾)。對某些人來說,KPI已經完成了。
要慶幸的是,yunos成熟太晚,否則要是像綠壩那樣欽定推廣,那就悲劇了。YunOS在Android 5.0出現之前,阿里巴巴自己寫了個叫lemur的Java VM,A家內部Java大神這麼多,寫個虛擬機也就分分鐘的事情,然後就用這個lemur替換了Android自帶的Dalvik Runtime,原因很簡單:掌控生態環境
其他的東西完全都是搬自AOSP,再加點H5應用和後門就成了所謂的YunOS
這時候Google就看不下去了:你居然還敢自立門戶,然後就開始給OHA施壓,這樣就導致YunOS沒辦法推廣到國外,那怎麼辦?你去看看搭載YunOS的移動設備除了魅族之外,都是小廠和一些聽都沒聽說過的牌子,而且這些手機大部分還鎖了Bootloader
但是自從5.0以後Android 默認運行時環境變為了ART之後,這玩意有沒有跟進就不知道了
本來還想買部 Yun OS 的手機體驗下,現在竟然說 Yun OS 不是 Android,那我特么還不如買部 Windows Phone。
白馬非馬——《公孫龍子·白馬論》凡是安裝了yunOS的系統中。廣電不想讓用戶安裝什麼APP,yunOS可以不讓安裝。廣電想讓用戶看什麼,yunOS就讓用戶看什麼。android沒有這樣的功能,當然YUNOS和Android 不是一個系統。
對廣電來說,最好大家都裝yunOS.
yunos一到店,所有操作系統都對他笑,有的對他說:「yunos,你臉上又添新bug啦!」他不回答,對櫃里說:「要兩打程序。」便排出九個臨時工。他們又故意高聲嚷道:「你一定又抄人家東西啦!」yunos瞪大眼睛說:「你怎麼這樣污人清白。。。。」
「什麼清白?我前天親眼見你用了安卓的開源,還自稱不是安卓。被知乎吊著罵。」yunos便漲紅了臉,通知欄廣告條條蹦出,爭辯道:「移植不能算抄……移植!……開發者的事,能算抄么?」接連便是難懂的話,什麼「dalvik」什麼「apk」之類,引得眾操作系統鬨笑起來,360os笑得口吐白沫,smartisan os笑得皺成了16宮格………。店內外充滿了快活的空氣。
有一天,我正準備關了機充電,忽然聽到yunos的廣告推送聲,站起來向外一望,那yunos便在櫃檯下對了門檻坐著,他臉上掛著幾十條各種廣告推送,已經不成樣子,穿一套土掉渣的主題。又說到,來一打程序。安卓也伸出頭去,一面說「yunos么?你還有一堆bug沒修呢。」yunos很頹唐地仰面答到「這。。。。下回一起改罷。這一回是穩定版,程序要穩。」安卓仍然像平常一樣,笑著對他說:「yunos,你又抄襲東西啦!」但他這回卻不十分分辨,單說了一句:「莫要取笑。」 「取笑?要不是抄襲,怎麼會兼容我的app?」yunos低聲說到:「重寫,重,重…………」他的臉色,很像懇求安卓,不要再提。此時已經聚了幾個操作系統,便和安卓都笑了。我複製了程序,放在門檻上,他從招聘處打包了20倍的臨時工,原來他便是用這些人趕製出來的。
從此以後再也沒在超過500塊錢的手機里見過他。
自此以後,長久沒看見yunos在非山寨機上出現了,到了安卓迭代,安卓說:「yunos還有19個bug沒修呢。」到了安卓7.0,又說:「yunos還有19個bug沒修呢。」忍不住還想說多一點。
看到有答主說的 YunOS 是有個 Android 兼容層。我覺得問題在於,YunOS 不開源,也不能 root,就像一個「黑箱」,我們難以知道內部的結構是怎樣的,那我們只能通過黑箱暴露出來的很有限的介面來推測內部結構。而我下面原答案所做的操作就是這樣,結果發現事實是 YunOS 的系統應用都是運行在這個 Android 兼容性裡面的。這自然會引起人們懷疑,會不會根本沒有所謂的 YunOS 自己的平台,因為沒看到嘛,又沒有別的方法來證明了。原答案:我就說一個事實。我同學買了一台 YunOS 5.1.1 的魅族手機。有一天我無聊用 Activity Launcher 看看 YunOS 系統應用和 Android 區別大不大。我發現一些基本的系統應用(如系統界面)中的 Activity 和 Android 的區別不大。而且系統界面中還包含了 Android M 的圖標,同時還有 Android L 的 Flappy Bird 彩蛋(沒有 M 彩蛋的多人模式)。用一些查看系統信息的應用顯示的是 Android 6.0,不知道為什麼系統里還有 Android L 的彩蛋?但是關鍵問題是,一個「自主研發」的系統為何還要加入 Android 的彩蛋?另,設置的開放源代碼許可中可以看到確實是使用了 AOSP 的代碼。據此我認為 YunOS 是把 Android 的 Java 虛擬機換成了自己的,這只是個猜測,我沒分析過。因為手機是同學的,我沒法提供截圖,希望有誰能幫我驗證一下。趁午飯時間更新一下:
說兩個事兒:
1,正式對自我介紹為「系統穩定性和性能工程師一名」的正方同學表示道歉,因為當時在手機上翻看,看了很多條回答後才寫的,所以誤認為是「阿里做測試的同學」,但絕對沒有對測試工程師有任何輕蔑的意思,當時只是因為對方匿名,所以告訴大家是與這位同學討論的。並且本人當時認為測試工程師可能對系統整體有更多了解。
對於這位同學相應的更新,繼續探討一下:
問題1,是我誤會了,另外說到虛擬化技術,後面也有說道,一會兒再討論;
問題2,我去yunos開放平台去看過,yunos SDK需要註冊並發布應用才能下載,暫時先看看說明(國外訪問太慢了,建議阿里雲考慮優化一下北美訪問的速度)
那位說yunos 6.0沒有JVM的同學(我評論里被我掛出來那位),我真的是太失望了,本來期待你說的是真的,未來可以用Go之類的開發移動端應用呢,唉~~
這是?說好的「Native應用」啊,說好的不原生支持APK的啊?(害得我還在評論里爭論半天安卓不用APK打包也可以安裝APP,早說必須要提交APK啊)。難道我看錯了?是「Naive應用」?心平氣和的說,我還是建議yunos開源,至少開發SDK可以直接下載,不是需要提交APP才可以。這樣對於你說的「實話實說,除了阿里內部,目前幾乎沒有應用開發者參與進來,生態圈小而且爛,就是這樣的。」肯定是會大有好處的。
對於Cloud APP,沒看到具體所指,yunos官網上看到只有兩種APP形式:
CloudCard本來還有三個分支:輕服務,H5和卡片,截圖沒出來,但沒看到具體介紹,看文檔中心關於應用接入的介紹,應用類型只有兩個選項可選:
Html5應用和Native應用,可以看到,Html5應用就是提交一個URL,Native引用就是提交APK。
文檔中還有一個「輕服務」:
可以在線使用模板製作,看說明,輕服務是指搜索屏的H5頁面。這似乎也與yunos自己的原生應用無關。
然後開發文檔中大量提及的是yunos提供的雲端API調用方式,這也印證了我對yunos擴展了安卓應用框架的猜想,應該是添加了阿里雲訪問的組件,方便開發者直接調用阿里雲的服務。
yunos應用市場是這樣的:
仔細看了一下,都是安卓應用,我可以理解為了豐富平台應用,兼容安卓應用,但官方市場一款非安卓應用都沒有似乎說不過去吧?至少做個yunos獨有API的demo吧?
然後yunos還貼心的提供了測試平台(講真,阿里雲的這項服務還是很不錯的,AWS要是能學學就好了):
這個是yunos兼容性測試,應該最能體現yunos與安卓的區別,提交的也是apk文件。
我拿人人客戶端測試了一下,(這裡沒繼續下去是因為測試並沒有出來結果,不知道是否因為我沒有交錢,總之一直顯示正在運行)
綜上所述: 完全版SDK沒看到,等我提交個APP再看,yunos官網開發中心提供的信息並未使我更相信yunos不是安卓。我期待的非Java或者不需要使用安卓框架支持的移動操作系統也破滅了。
問題3:3.1不用說了,目前網上能直接得到最多的信息就是yunos 3,你說的6是什麼6?我看不到啊。
3.2,你說的對,現在虛擬化技術在很多方面的應用的確是見仁見智。尤其是異構平台或者生態圈兼容問題上。你提到的Tizen,我提交過一些代碼(開始非常看好Tizen,用C++在Linux內核上實現全部OS,可惜Intel和Samsung不給力啊),Tizen並不是使用虛擬化技術實現的安卓應用兼容,而是使用的OpenMobile解決方案,就是通過一個ACL(應用兼容層)實現的
其實說白了就是一個修改了的JVM+一套安卓framework,通過把安卓應用編譯的JAVA中間語言轉換到Host OS里響應,是個聰明的方法。不過並不開源,在Tizen的協議中這個被標誌為閉源組件。
而Win10大名鼎鼎的「Project Astoria」的確是用虛擬機運行安卓應用的(不過不是容器,是Hyper-V)。
我之前說的「結構設計不會做這麼蠢的事兒」是指,有正方同學說對JVM做了修改,那既然yunos是使用Java的,要想兼容安卓應用,直接在Framework里加兩套(換句話說就是在安卓應用框架上加上自己新增加的)就行了,根本不必用容器。
其實容器也好,虛擬化也好,都是在硬體基礎上的,之前說Tizen,今天發展的還是不夠有力和這件事情就有關係。Intel希望利用Hyper技術和VT技術在Tizen中實現底層沙盒,三星則不想綁在Intel的CPU上,於是Tizen發展中兩個放棄自己OS走到一起的公司變成了暗戰。(這個Tizen開始時候參與過源碼的人應該都知道)。
容器現在比較熱門的Docker或者LXC其實技術相去甚遠,在移動系統里用Docker肯定是容易讓人醉了。LXC沙盒進程的確有人支持,個人認為在移動端的意義不大,主要還是在伺服器上應用的意義更大些。
至於安卓核心跑在沙盒裡,在另一個沙盒再跑另一個JVM,那幹嘛不直接用一個JVM跑呢???JVM也可以做到線程隔離啊。
最後愛是要謝謝這位認真討論技術問題的正方同學。
---------------------------
小分割線,說另一件事:
昨天屏蔽了一位激動評論的同學。
屏蔽的原因:
1,此人有超能力:去4S店看車機就能看出來yunos系統是否是安卓,用了那麼久Windows,能給我份Windows源代碼嘛?win幾都行。我猜他是阿里員工,是找個和他討論的借口,如果不是阿里員工,你說看車機就知道yunos不是安卓,這樣的話我還真的沒時間跟你說下去了。
2,非技術討論,所有評論全是情緒表達,沒有任何實質技術內容。關於技術問題僅僅提到通過「虛擬兼容Android」(可以看到是原文,可惜我們討論的是容器問題,這位同學似乎傻傻分不清楚)的問題,上來就是被很多人打了臉,不好意思,我在這個樓還沒看到一個正經駁斥我說的容器問題,至於爭議,大家可以探討。
3,邏輯不清,我本出於澄清我了解的一些容器技術與Linux內核的問題來搶答的,本意是怕有些不了解的同學產生誤會,認為這樣的技術就是和安卓的分水嶺。至於yunos是否是安卓,又不是我提出來的,我有什麼義務去證明?我作為旁觀者合理的質疑,希望yunos團隊解釋清楚,通過這樣的討論如果更多的人能明白真的yunos不是安卓,或者最後沒法證明yunos不是安卓,對於yunos團隊來說都是好事兒,讓更多人接受,或者靜下心來做出更好的產品。
4,太過激動,本來本樓大多數人都和yunos沒利益關係(可能吧),對yunos一點兒興趣都沒有的人,怕是根本就不會點開這個樓看,進來討論的都是對移動來發以及安卓生態進化多少感興趣一些的,知乎是個大家討論知識的平台,不是宣洩情緒的,本來也不是什麼和自己利益或尊嚴密切相關的事兒,如此激動只能說明心智還沒有達到討論問題的程度。(另外說一句,本來從開這個回答道現在,心情非但沒有爆炸,一直都還不錯,在美國呆的實在少有打這麼多中文,和別人說這麼多話的機會,真心憋壞了,在這兒有機會和大家聊聊天,真心不錯,哈哈)。
既然他提出來,那我澄清一下身份:
祖籍北京,現在美國東部,從事金融行業,再具體一點是投行。所以說,投行的人不是沒有懂技術的,創業的同學請記住,投行或VC的人不是堆點兒技術的詞兒就能忽悠的,真心不好忽悠的。切記。
而且我是窮人,不是投行工作人員都是有錢人,投行是給有錢人服務的,而我們只是苦逼。
至於工作證,哈哈,我們沒有,有也不給你看,哈哈,你能把我怎麼著?
本著公正的原則,掛上來:
======================================================
剛提交完修改,就看到了一條這樣的評論,實在是驚著了,必須放出來:
我的天吶,這是真的嗎?那真是太好了,我能在這兒說我TM煩死Java了嗎?Java9幾次延期,我多麼盼望著Java趕緊死了啊(愛Java的同學別在這兒噴,別歪樓)。
那太好了,趕緊發個開發手冊給我們看看吧,最好改用Go(C++就算了,我到不怕,我是心疼你們開發系統的人,哈哈),阿里從底層完整寫了一個新操作系統,喜大普奔啊。
你們猜我信嗎?這位同學你不是高端黑吧?
第三次更新:
===============================
有位正方同學很激動的在下面評論,看過車機版的yunos系統。讓我去4S店看一下,據說看了就會認為yunos不是安卓了。還提到車機上沒有apk。我本來認為可能又是一個非技術同學誤入,簡單說了兩句:
1,本人沒在國內,實在不方便去4S店看,即便去看,也不會被允許連上電腦debug一下,看看車機里的系統是否是安卓改的。不知道那位正方同學是如何做到的(阿里員工?沒關係,大膽說出來嘛,我們質疑yunos是否是安卓改的,你們只要要拿出來可信服的證據讓大家相信,對yunos也是有好處的,否則我想大家都會和我一樣,就算不在這兒跟你們討論,心裡也一樣認為yunos就是定製版安卓的,這對你們也沒有好處,對吧?。我們對阿里,對yunos團隊沒有成見,如果真的和安卓無關,那當然是好事兒了,如果是安卓改的,也沒什麼丟人的,我個人希望既然用安卓改的,那不如提交github,讓我們大家都能更認可yunos)。
更重要的是,yunos團隊主張yunos不是安卓,基於誰主張誰舉證的原則,yunos團隊有義務拿出有力的證據證明自己的主張,我們作為旁觀者,我的沒有義務證明,但我們有權利質疑。
2,不能安裝apk文件包並不是yunos不是安卓的有力證據,做過安卓開發的同學(其實做過任何系統開發都應該知道)應該都知道,apk不過是一個安裝打包文件,安裝apk不過就是調用PackageManagerService罷了,想讓安卓不支持apk,修改一下PackageManagerService即可。車機這種不經常安裝卸載app的設備,直接刪掉PackageManagerService,把安裝包做成zip,用個腳本把文件複製進去,生成一下cache是一樣的。安卓開發過程中做演示都是這樣做的。生成apk最重要的目的是加上簽名,讓別的安卓設備也可以簡單安裝。這和Windows下軟體的安裝版和綠色版是一樣的。
3,說我的回答用了大量的「我猜」,是的,我也不想,yunos開源我們自然不用猜了,不開源的話,你們拿出足夠有力的證據,省的我猜,我還懶得猜呢。
結果這位正方同學對我的回答不太滿意,覺得我基於他說的yunos有一種版本沒有使用apk的情況說:「不能使用apk並不能證明yunos不是安卓」是在「耍流氓」。那我只能發上來給大家看看,做過安卓開發的同學可以幫我給他普及普及知識。
既然這位同學對安卓系統有了解,那你應該知道yunos如果不是安卓應該怎麼判斷。我也在這兒為正方同學指條證明yunos不是安卓的路:
要證明yunos不是安卓,請證明以下幾點:(凡正方同學在本回答下的評論不是在這幾個方面證明的,本人不再回答,原因嘛,還是那句話:本樓炮火紛飛,不適合非技術同學玩耍)
1,yunos不使用安卓的圖形表現層,自己做了新的圖形表現層(改名不算);
2,yunos不使用安卓底層Lib,所有底層操作都是yunos自己做的(改名不算);
3,yunos不使用安卓app framework,所有事件響應和渲染邏輯全部是yunos自己做的(改名不算);
證明這3點(全部證明成立,缺少其中任何一點都是不充分的),我們絕對相信yunos不是安卓。至於是否使用apk,是否能獨立啟動,是否在沙盒裡放了一整套安卓以兼容安卓app,是不是所有文件都修改過,這都不重要,正方同學總在說這些沒用的,肯定會影響我對阿里技術水平的認可的。
插句題外話:其實這幾年阿里在開源社區的貢獻還是很大的,其實阿里在yunos上如果堅持一貫的開源策略,對yunos來說會有非常大的好處。事實上,我也見到過很多技術團隊的負責人好大喜功(其實我以前也有過這個階段,可能還是心裡對自己不夠自信造成的吧),故意誇大,結果基本上都是不好的。
第二次更新:
=============================
想了一下,說一下綜合正方同學描述的YunOS 6.0的信息,進行了一些猜測(開源多好,省的我們猜):1,YunOS應該是在Linux核心外添加了Node.Js,可以直接在Linux層運行JS(這個想法不錯,但說這樣就是一個新系統了,額,我台式機也裝了Node,是不是不算Windows了?),通過Node.js運行JS為安卓應用提供本地服務,不過不在Linux層,在安卓裡面也可以做到(誰讓安卓和V8都是Google的呢)。
話說在java虛擬機以下也可以放個瀏覽器內核,直接用node開發應用,再用瀏覽器顯示前端,不過一樣的問題,瀏覽器怎麼被顯示出來呢?新的XServer?我猜阿里的開發不會幹這麼費力不討好的事兒。
那也就是還要用安卓內核,還要用webviewer,不過可以使用H5與LXC沙盒裡的node.js搭成前後端,這類混合應用框架有很多,似乎都比這樣更好。(希望是本人知識不夠,猜得不對)。
2,在Linux內核添加了LXC支持,並把Java虛擬機,Nodejs進程獨立到沙盒中。實話實說,我覺得這種方式不好,將nodejs放進沙盒沒太大意義,java虛擬機也只會性能更差,還憑空增加了容器間通信的難度。為了直接運行js費這麼大勁,不值當的。直接在安卓裡面用nodejs現在是很成熟的事情,沒必要放到Linux層去,單獨沙盒運行更沒必要了。
3,為APP添加了H5的直接支持,我猜應該是通過nodejs和前端webviewer(大多數混合APP其實都是這樣,yunos可能就是直接放進去了而已)。
4,優化了java虛擬機,就是大家在桌面上用到的JVM,安卓修改了一下叫Dalvik,後來覺得JVM那樣邊解釋邊運行太慢了,又修改了一個叫ART(有點像mono對.net的修改,就是預先編譯成二進位)。至於yunos做了什麼修改,不知道,據說是商業機密。好吧,不過顯然是兼容java api的(那麼就有可能未來要給Larry Ellision交錢哦),而且也說明,yunos的開發還是在java中的(要是yunos原生應用是直接運行在Linux內核或者node上的,那沒事兒閑的修改java虛擬機幹嘛啊?),在java中的話那也一定需要調用安卓的Lib,否則顯示的問題又來了。那說明也不可能像那個正方同學說的,yunos不原生支持安卓應用,或者安卓應用是在容器中的(如果這樣的話,系統至少要同時啟動兩個JVM)。於是問題就簡單了,yunos可能優化了一下ART(但願是,不是繼續修改Dalvik就好),並且添加了一些自己Lib和app framwork。
5,做了套很醜的UI。(這不是我說的,在本樓看,這是正方反方同學的共識)
可能還有很多(因為正方總是說商業機密,語焉不詳,又不開源,也不提供原生應用的開發手冊,只能猜出來這麼多),但看上去1,2,3都是現有或不太有意義的,這樣做了也不能算不是安卓。4實際上是有意義的,很多公司也一直在這樣做,國內很多,也都不敢這樣做就號稱自己已經不是安卓了,其實我勸yunos團隊,與其向每個人解釋你們做了多少工作,不如把這些修改提交到開源社區,大家自然能看到你們的工作是多麼有意義了,開源無論是對yunos的未來還是對安卓整體生態都是好處遠遠大於坏處的。
至於5,我猜目前來看是yunos不是安卓最有力的證據。
第一次更新:
=======================================
剛才看到那位阿里做測試的同學的回答,想專門和他討論一句:他說底層全部重寫了,安卓應用運行在安卓容器里,未來可能要不再支持安卓原生應用。而且目標並不是手機。
好吧,先不管原貼分析過容器技術的問題,那我就覺得這樣挺好(雖然沒看到),我也很感興趣想做個yunos的原生應用,能否提供個yunos原生應用開發的手冊呢?還沒寫好?給個api也行啊?還沒做?好吧,我理解,做開發都不喜歡寫文檔,那告訴我用什麼語言寫總行吧?給我們看下原生應用的hello world總不涉及商業機密吧?
你說,要是這些都看不到,我怎麼相信你說的呢???
以下是原回答
==============================、本來是來看熱鬧的,對於國內這種白馬非馬的自主知識項目見怪不怪了。不過看到回答里那位號稱參與了yunos開發的朋友的回答,覺得有必要說兩句,以免對安卓系統底層不太了解的讀者被誤導。不知道那位朋友是否真的參與了yunos的開發,因為他說的技術內容有些問題。
1,關於基於linux開發,對安卓系統稍有了解的讀者應該都知道,所謂安卓,就是在linux內核上做了一個用java寫的圖形伺服器替代了桌面的xserver,更簡單的說,安卓就是在Linux內核上跑一個java虛擬機,啟動就運行了一個java程序,這個java程序就是安卓系統。做安卓底層開發很多都涉及Linux,這並不能說明yunos不是安卓。除非像intel和三星合作的tizen,在Linux內核上用c++寫個新的圖形伺服器,那絕對可以說tizen不是安卓。而事實上,在能看到的yunos3.0版本上,一切應用仍然運行在java虛擬機里,而且java虛擬機運行的也還是安卓內核。
2,關於容器,這個~,我其實想說這位朋友可能並沒有做過安卓底層開發,對於Linux內核和容器技術也不是太了解,這個顯然是想當然說的。
首先,java本來就是運行在虛擬機里的,這個大家應該都知道吧?本來很多不喜歡java的人都一直在吐槽java虛擬機效率太低(當然,其實現在java虛擬機的效率已經很高了),非要在容器里運行性能只會更差,也帶不來任何好處(很顯然在手機里跑多個java虛擬機是毫無意義的)。肯定有人會想那是不是可以在容器里跑別的非java應用呢?那倒不是不可以,可是怎麼顯示出來呢?總不能在手機上開個終端窗口吧?否則不是還要做個新的圖形伺服器?而且屏幕只有一個啊。那如果容器里放只通過埠調用的服務呢?那樣不是可以利用容器的優勢嗎?可惜,人家安卓裡面早就做了,而且利用安卓內核的線程回收機制,性能也很好了(最關鍵的是手機不是伺服器,不需要同時跑很多組服務),所以還是脫褲子放[]啊。我覺得阿里的架構設計不會做這麼蠢的事兒。再者說,不知道大家都容器技術了解多少,現在安卓系統使用的Linux內核也根本就跑不了容器,如果要讓Linux內核跑容器,這個內核就會大的多,還需要很多東西,為了提高性能,還需要硬體的支持,這就是為什麼各個Linux發行版在現在容器技術火熱的時候紛紛出了容器版,而不是直接拿一個Linux內核就用。在arm中低端cpu+1~2G內存的手機(yunos本身定位就是中低端機型)上跑容器,應該沒有哪個架構師會做出這麼蠢的事兒。
3,關於有人說yunos可能無法root的問題,呵呵,這個大家不用擔心,獲取root許可權是靠系統的漏洞,即便阿里技術能力特彆強大,把現有已知的漏洞都堵上了。大家放心,一定還會發現安卓的新漏洞,即便安卓沒有漏洞可用,java虛擬機還有呢,即便java虛擬機的漏洞都沒了(這是不可能的,哈哈),linux內核還有呢,即便linux內核都找不出漏洞了,還有bootloader呢,omg,都沒有?你問問高通,MTK知不知道自己的cpu也有很多漏洞?大家就不用杞人憂天了,哈哈
終於看到有所謂YunOS開發者出來洗地了,我很欣慰啊。
今天我就不吐槽了,我就問你們一個問題,你們的系統這麼牛逼,已經不是安卓了,簡直是國人之光啊,倪光南院士都被你們感動了。
那好,敢裝在手機上拿到國外去賣賣嗎?我記得阿里投資的魅藍的flyme基本都是用你們YunOS定製的系統。那就大大方方拿著用你們YunOS定製的flyme魅藍去外國銷售啊!
怎麼到了國際版,魅藍flyme一個個都老老實實改成安卓定製了?你們的系統這麼牛逼,怎麼不讓魅藍繼續用啊,你們說說看,來給我個理由先!你們敢嗎?
(這裡本來有三張圖的,分別是魅藍Note、魅藍2和魅藍Note3,但是在評論的提醒下,本人查證發現這三個手機原本就是Flyme by Android,為了防止大家誤解,我就刪掉了,並在下面補充了已經驗證無誤的例子,請各位查驗。)
我見過無恥的,我也見過無恥而且卑鄙的,但是我真的很少看見又卑鄙,又無恥,還TM這麼愚蠢的,做系統做到你們這個地步,別說同行了,做盜版系統的都瞧不起你們!
===========================
補充:
有人跟我說上面三個手機的系統也是安卓的,我查證過後發現確實是這樣。那好,那我就補充一個確定的例子來回應質疑!既然你們要實錘,我就給你們來個實錘!
這是魅族官網和魅族國際官網上都掛出的魅藍5
Meizu M5 - Summary - Meizu【魅藍 5 智能手機】概述 - 魅族官網這是魅藍5國內版的相關參數,系統是什麼可以清清楚楚的看到!
【魅族魅藍5 高配版/全網通參數】MEIZU 魅藍5 高配版/全網通手機參數_規格_性能_功能-ZOL中關村在線這是論壇相關討論的截圖:(點擊圖片可放大)
麻煩各位質疑的朋友看清楚!並且特別希望 @李楠 先生能出來解釋一下,為什麼國內版和國際版要區別對待,使用不同的系統,為什麼不敢在國際版上也用YunOS!
正如馬雲爸爸不是地球人,而是外星人一樣,阿里YunOS不是安卓,而是自主研發的系統。類比推理,嗯,沒毛病。毫無區別。。。就是套殼的Android。。。缸道理adui的定製程度都比雲OS睾。。。
AIDA64都能讀出Android版本來。。。你說是不是Android。。。讀書人的事,能算偷嗎?應當是竊,竊書。
圖文並無關係,請勿對號入座。
雲乙己一到店,所有喝酒的人便都看著他笑,有的叫道:「雲乙己,你又亂刪人app了!」他不回答,對櫃里說:「同步一下代碼,再來一個虛擬機。」便排出九文大錢。他們又故意的高聲嚷道:「你一定又剽竊人家的源代碼了!」雲乙己睜大眼晴說:「你怎麼這樣憑空污人清白……」「什麼清白?我前天親眼見你偷改安卓的代碼,被谷歌吊著打。」雲乙己便漲紅了臉,額上的青筋條條綻出,爭辯道:「改代碼不能算偷……代碼!……開源的東西,能算偷么?」接連便是難懂的話,什麼「自主研發」,什麼「只是兼容安卓」之類,引得眾人都鬨笑起來:店內外充滿了快活的空氣。
聽人家背地裡談論,雲乙己原來也研發過系統,但始終搞不出來,給不了老闆交代;於是拿安卓來一改,弄到將要討飯了。幸而又不是不能用,便只好各種忽悠,換一碗飯吃。可惜他有一樣壞脾氣,便是喜歡亂刪軟體。做不到幾天,便連人和第三方app,一齊失蹤。如是幾次,用它系統的人也沒有了。雲乙己沒有法,便免不了偶然做些忽悠小白的演講。
雲乙己喝過半碗酒,漲紅的臉色漸漸復了原,旁人便又問道:「雲乙己,你這當真不是安卓系統么﹖」雲乙己看著問他的人,顯出不屑置辯的神氣。他們便接著說道:「你怎的全部軟體都是安卓的,界面又比別人丑,還老彈廣告呢﹖」雲乙己立刻顯出頹唐不安模樣,臉上籠上了一層灰色,嘴裡說些話;這回可是「重寫底層」之類,一些不懂了。在這時候,眾人也都鬨笑起來:店內外充滿了快活的空氣。哪來的臉
如果我現在從AOSP fork一個分支,然後隨著版本更迭,以前的代碼全部給重寫/替換掉了,我就可以說,我這不是基於AOSP?就算現在的版本像某些答主說的底層架構改了什麼什麼的,什麼時候把啟動器先別用apk
所以說 你不是你爹,你要是不把自己當個人玩意,那你也可以不叼你爹 但是 你爹永遠是你爹
talk is cheap,show me the code!「白馬非馬,可乎?」曰:「可。」
曰:「何哉?」曰:「馬者,所以命形也。白者,所以命色也。命色者,非命形也,故曰白馬非馬。」
曰:「有白馬,不可謂無馬也。不可謂無馬者,非馬也?有白馬為有馬,白之非馬,何也?」
曰:「求馬,黃、黑馬皆可致。求白馬,黃、黑馬不可致。使白馬乃馬也,是所求一也,所求一者,白者不異馬也。所求不異,如黃、黑馬有可有不可,何也?可與不可其相非明。故黃、黑馬一也,而可以應有馬,而不可以應有白馬,是白馬之非馬審矣。」
曰:「以馬之有色為非馬,天下非有無色之馬也。天下無馬,可乎?」
曰:「馬固有色,故有白馬。使馬無色,有馬如已耳,安取白馬?故白者非馬也。白馬者,馬與白也;馬與白馬也,故曰:白馬非馬也。
曰:「馬未與白為馬,白未與馬為白。合馬與白,複名白馬,是相與以不相與為名,未可。故曰:白馬非馬,未可。」
曰:「以有白馬為有馬,謂有白馬為有黃馬,可乎?」曰:「未可。」曰:「以有馬為異有黃馬,是異黃馬於馬也。異黃馬於馬,是以黃馬為非馬。以黃馬為非馬,而以白馬為有馬;此飛者入池,而棺槨異處;此天下之悖言亂辭也。」
曰:「有白馬,不可謂無馬者,離白之謂也。是離者有白馬不可謂有馬也。故所以為有馬者,獨以馬為有馬耳,非有白馬為有馬。故其為有馬也,不可以謂馬馬也。」
曰:「白者不定所白,忘之而可也。白馬者,言定所白也。定所白者,非白也。馬者無去取於色,故黃、黑皆所以應。白馬者,有去取於色,黃、黑馬皆所以色去,故唯白馬獨可以應耳。無去者非有去也。故曰:白馬非馬。」
連Tencent OS 都沒這麼不要臉抄襲界的鼻祖都沒你這麼不要臉
推薦閱讀:
※曾經的諾基亞人現在過的好么?來說 說你們的【故事】。
※如果諾基亞7是這樣的你會買么?
※WP系統究竟有沒有未來?它的優勢在哪裡,又是否能翻身超越安卓?
※是否有可能在未來的某一天,安卓由於失敗的軟體生態圈而衰落,而wp憑藉著高質量的生態圈和流暢性超越他?
※Android 用戶熱衷刷機,為什麼 Android 4.0 現在才占整個 Android 市場的 7% 的份額?