成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

純技術(shù)分析阿里云OS和Android之間的關(guān)系

2012-09-17 17:25:43來源:月光博客作者:

近日,有關(guān)谷歌Android和阿里云的爭論鬧得沸沸揚揚,谷歌高管、Android開發(fā)領(lǐng)頭人Andy Rubin在其Google+主頁中這樣寫道:阿里云系統(tǒng)采用了谷歌Android系統(tǒng)的運行環(huán)境,明顯是由Android系統(tǒng)修改得來。

近日,有關(guān)谷歌Android和阿里云的爭論鬧得沸沸揚揚,谷歌高管、Android開發(fā)領(lǐng)頭人Andy Rubin在其Google+主頁中這樣寫道:阿里云系統(tǒng)采用了谷歌Android系統(tǒng)的運行環(huán)境,明顯是由Android系統(tǒng)修改得來。

Andy Rubin稱,事實是,阿里云系統(tǒng)包含了Android中運行環(huán)境,明顯是從Android中演變而來,但無法與Android兼容;贕oogle對阿里云網(wǎng)站上應(yīng)用的分析,這個平臺嘗試與Android兼容,但未能成功。

阿里云OS到底是不是Android以外的東西,筆者通過技術(shù)手段對其進(jìn)行一些分析。天語W700是一款使用了“阿里云OS操作系統(tǒng)”的手機,筆者找到一個天語W700手機的阿里云OS的刷機包。打開粗粗看一下,和Android的刷機包沒兩樣。里面的應(yīng)用全部是apk,這意味著它們都是以Dalvik可執(zhí)行文件的形式存在的。

阿里云
[圖1]

Build.prop里面也指出是,Android2.2

阿里云
[圖2]

接下去來找其中的c library,因為我們知道,Android是在Linux內(nèi)核之上運行了一套Google自己組織起來的架構(gòu)。和通常意義上的GNU Linux一樣,這個架構(gòu)里最基礎(chǔ)的東西之一就是C運行庫。

GNU Linux的C運行庫是Glibc,而Android用的是Bionic。通過使用自己組織,編寫的代碼,Android可以從這一層以上避開GPL協(xié)議不允許發(fā)布者擁有保密源代碼權(quán)利的限制。

找到其中的lib/libc.so,也就是C運行庫,用readelf查看它的符號表(這么做不涉及反向工程),可以在找到”bionic”。說明它的C運行庫很可能是bionic。

阿里云
[圖3]

內(nèi)核是linux kernel,基礎(chǔ)的C運行庫是Bionic,有Dalvik,上層的應(yīng)用全部是Dex格式,這些東西說明W700上的“阿里云OS操作系統(tǒng)”不太可能是Android以外的東西。

當(dāng)然以上的內(nèi)容無法用于推測,這么做是否與Android的授權(quán)協(xié)議產(chǎn)生了矛盾。但是有一件事情比較明確,如果提供這個手機的廠商沒有提供其中l(wèi)inux kernel的源代碼,那很可能是非法的。

更新:上篇用的ROM是錯的,是Android的刷機包,不是官方原生的云OS的ROM,所以論據(jù)是錯的。這里用官方原生云OS的ROM分析一下,到底阿里云OS和Android之間是什么關(guān)系。

解開看大目錄的結(jié)構(gòu):

阿里云

根目錄下是一個boot.img,這就是Android系統(tǒng)的bootloader,也就是啟動分區(qū)。另外有個system目錄,這就是Android系統(tǒng)的system分區(qū)。進(jìn)入system目錄往下看:

阿里云

這里和Android ROM的目錄結(jié)構(gòu)是一模一樣的,各位可以自己找個Android ROM對比以下。核心的幾個目錄:

app: 存放ROM預(yù)裝的app

bin: 系統(tǒng)進(jìn)程的目錄

framwork: Android Framework目錄,就是Android應(yīng)用程序運行所需要的庫文件的目錄

lib: so庫文件目錄,相當(dāng)于Windows的system32目錄

咱們再進(jìn)到app目錄看一下:

阿里云

好,看出區(qū)別來了,Android下所有的app都是以apk結(jié)尾的,前一篇帖子用的ROM就是Android的ROM,里面對應(yīng)這張圖里的文件就都是apk的。這里怎么都是lar呢?這就是阿里云OS和Android不同的地方了,因為apk是Dalvik虛擬機管理應(yīng)用程序的文件格式,阿里云自己搞了個虛擬機,用lar文件來管理。lar文件和apk文件有什么不同?我們知道apk文件其實就是一個zip文件,用WinRAR可以直接打開看,那lar文件呢?用WinRAR果然也可以直接打開:

阿里云

做過Android開發(fā)的人一看到這個目錄結(jié)構(gòu)就發(fā)現(xiàn),它和apk的目錄結(jié)構(gòu)基本上是一模一樣的,除了Android應(yīng)用的classes.dex文件變成了classes.lex。那所謂的lex文件是不是就是把dex文件換了個名字呢?我們用二進(jìn)制比較一下:

阿里云

左邊的是Android應(yīng)用的dex文件,右邊的是阿里云應(yīng)用的lex文件?梢,文件格式已經(jīng)完全不一樣了。

好,app的不同已經(jīng)看出來了,我們再來看系統(tǒng)核心進(jìn)程有什么不同。進(jìn)入到/system/bin目錄:

阿里云

熟悉Android系統(tǒng)的人一眼就能看出來,am, app_process之類的名字都是Android核心進(jìn)程的名字。多出來了幾個:cloudserver, chpasswd.cgi之類,看來這就是阿里云所謂的“云服務(wù)”的核心進(jìn)程了。

好,文件的比較就到這里,那現(xiàn)在基本上可以下結(jié)論了,一個完整的Android系統(tǒng),包括以下幾個部分:

1. bootloader:用來啟動操作系統(tǒng)

2. kernel: 系統(tǒng)內(nèi)核

3. 核心進(jìn)程,就是 /system/bin 下面那堆東西

4. so庫: 系統(tǒng)運行基礎(chǔ),就是 /system/lib 下面那堆東西

5. Android虛擬機,所有的上層應(yīng)用都是靠虛擬機來運行的

6. Android Framework: 所有的上層應(yīng)用都是通過調(diào)用Framework來實現(xiàn)功能的,就是 /system/framework下面那堆東西

7. 上層應(yīng)用,比如說桌面Launcher, 撥號,短信,通訊錄之類,就是/system/app下面那堆東西

那么,阿里云OS,在上面7個部分中,虛擬機用的是自己的,上層應(yīng)用是自己定制的,另外額外加了一個“云服務(wù)”,其余部分都是用的Android的。它和Android是什么關(guān)系已經(jīng)很清楚了。

那順便八卦一下,為什么阿里云要搞成這個樣子呢?說來就話長了,話說當(dāng)年阿里云剛成立的時候,還是很有追求滴,當(dāng)時收購了一家國內(nèi)做Java虛擬機的公司(叫“猛犸科技”),同時還找了一幫MOTO做Linux內(nèi)核的人,想搞個自己的操作系統(tǒng)出來。阿里云的CEO叫王堅,和李開復(fù)一樣都是從微軟研究院出身,但是頗看不起李開復(fù)搞的“點心OS”,認(rèn)為“拿個Android來改一改,多土啊!我們要搞自己的操作系統(tǒng)!”于是呢,阿里云的一幫人就吭哧吭哧搞“自己的操作系統(tǒng)”了。結(jié)果呢,大家腳趾頭都能想到,從頭搞一個操作系統(tǒng)哪有那么容易,做了半年沒做出來,咋給馬云交差呢?于是也顧不上土不土了,拿Android改吧。虛擬機是現(xiàn)成的,那就換掉Android的虛擬機吧,好歹能算是自己的工作成果。但光換個虛擬機意義也不大啊,HTML5和WebOS的概念比較新潮,那就再加個“云服務(wù)”的概念吧,也算是國內(nèi)HTML5的倡導(dǎo)者了。HTML5通過瀏覽器引擎跑,性能肯定比不上原生應(yīng)用,那怎么保證操作流暢呢(特別是桌面Launcher,天天用,要是太卡,用戶就瘋了),那還是用原生應(yīng)用來實現(xiàn)吧……于是,最后阿里云OS就長成現(xiàn)在這樣了。

關(guān)鍵詞:阿里云Android

贊助商鏈接:

主站蜘蛛池模板: 湛江市| 禄劝| 湾仔区| 龙泉市| 隆昌县| 沅陵县| 三原县| 大新县| 个旧市| 牡丹江市| 务川| 沛县| 永城市| 叙永县| 长葛市| 甘孜| 武宣县| 阿拉尔市| 乐业县| 株洲县| 江阴市| 青阳县| 珠海市| 马关县| 蒲江县| 昭苏县| 辉南县| 宜宾市| 韶山市| 普定县| 锡林郭勒盟| 巴林左旗| 泗洪县| 额济纳旗| 城步| 海盐县| 丘北县| 土默特左旗| 彭州市| 贡嘎县| 邢台市|