资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
近日,有关谷歌 Android 和阿里云的争论闹得沸沸扬扬,谷歌高管、Android 开发领头人 Andy Rubin 在其 Google+主页中这样写道:阿里云系统采用了谷歌 Android 系统的运行环境,明显是由 Android 系统修改得来。Andy Rubin 称,事实是,阿里云系统包含了 Android 中运行环境,明显是从 Android 中演变而来,但无法与Android 兼容。基于 Google 对阿里云网站上应用的分析,这个平台尝试与 Android 兼容,但未能成功。阿里云 OS 到底是不是 Android 以外的东西,笔者通过技术手段对其进行一些分析。天语 W700 是一款使用了“阿里云 OS 操作系统 ”的手机,笔者找到一个天语 W700 手机的阿里云 OS 的刷机包。打开粗粗看一下,和Android 的刷机包没两样。里面的应用全部是 apk,这意味着它们都是以 Dalvik 可执行文件的形式存在的。图 1Build.prop 里面也指出是,Android2.2图 2接下去来找其中的 c library,因为我们知道, Android 是在 Linux 内核之上运行了一套 Google 自己组织起来的架构。和通常意义上的 GNU Linux 一样,这个架构里最基础的东西之一就是 C 运行库。GNU Linux 的 C 运行库是 Glibc,而 Android 用的是 Bionic。通过使用自己组织,编写的代码,Android 可以从这一层以上避开 GPL 协议不允许发布者拥有保密源代码权利的限制。找到其中的 lib/libc.so,也就是 C 运行库,用 readelf 查看它的符号表(这么做不涉及反向工程) ,可以在找到”bionic”。说明它的 C 运行库很可能是 bionic。图 3内核是 linux kernel,基础的 C 运行库是 Bionic,有 Dalvik,上层的应用全部是 Dex 格式,这些东西说明 W700上的“阿里云 OS 操作系统”不太可能是 Android 以外的东西。当然以上的内容无法用于推测,这么做是否与 Android 的授权协议产生了矛盾。但是有一件事情比较明确,如果提供这个手机的厂商没有提供其中 linux kernel 的源代码,那很可能是非法的。更新:上篇用的 ROM 是错的,是 Android 的刷机包,不是官方原生的云 OS 的 ROM,所以论据是错的。这里用官方原生云 OS 的 ROM 分析一下,到底阿里云 OS 和 Android 之间是什么关系。解开看大目录的结构:根目录下是一个 boot.img,这就是 Android 系统的 bootloader,也就是启动分区。另外有个 system 目录,这就是Android 系统的 system 分区。进入 system 目录往下看:这里和 Android ROM 的目录结构是一模一样的,各位可以自己找个 Android ROM 对比以下。核心的几个目录:app: 存放 ROM 预装的 appbin: 系统进程的目录framwork: Android Framework 目录,就是 Android 应用程序运行所需要的库文件的目录lib: so 库文件目录,相当于 Windows 的 system32 目录咱们再进到 app 目录看一下:好,看出区别来了,Android 下所有的 app 都是以 apk 结尾的,前一篇帖子用的 ROM 就是 Android 的 ROM,里面对应这张图里的文件就都是 apk 的。这里怎么都是 lar 呢?这就是阿里云 OS 和 Android 不同的地方了,因为 apk是 Dalvik 虚拟机管理应用程序的文件格式,阿里云自己搞了个虚拟机,用 lar 文件来管理。lar 文件和 apk 文件有什么不同?我们知道 apk 文件其实就是一个 zip 文件,用 WinRAR 可以直接打开看,那 lar 文件呢?用 WinRAR 果然也可以直接打开:做过 Android 开发的人一看到这个目录结构就发现,它和 apk 的目录结构基本上是一模一样的,除了 Android 应用的 classes.dex 文件变成了 classes.lex。那所谓的 lex 文件是不是就是把 dex 文件换了个名字呢?我们用二进制比较一下:左边的是 Android 应用的 dex 文件,右边的是阿里云应用的 lex 文件。可见,文件格式已经完全不一样了。好,app 的不同已经看出来了,我们再来看系统核心进程有什么不同。进入到/system/bin 目录:熟悉 Android 系统的人一眼就能看出来, am, app_process 之类的名字都是 Android 核心进程的名字。多出来了几个:cloudserver, chpasswd.cgi 之类,看来这就是阿里云所谓的“云服务”的核心进程了。好,文件的比较就到这里,那现在基本上可以下结论了,一个完整的 Android 系统,包括以下几个部分:1. bootloader:用来启动操作系统2. kernel: 系统内核3. 核心进程,就是 /system/bin 下面那堆东西4. so 库: 系统运行基础,就是 /system/lib 下面那堆东西5. Android 虚拟机,所有的上层应用都是靠虚拟机来运行的6. Android Framework: 所有的上层应用都是通过调用 Framework 来实现功能的,就是 /system/framework 下面那堆东西7. 上层应用,比如说桌面 Launcher, 拨号,短信,通讯录之类,就是/system/app 下面那堆东西那么,阿里云 OS,在上面 7 个部分中,虚拟机用的是自己的,上层应用是自己定制的,另外额外加了一个“云服务” ,其余部分都是用的 Android 的。它和 Android 是什么关系已经很清楚了。那顺便八卦一下,为什么阿里云要搞成这个样子呢?说来就话长了,话说当年阿里云刚成立的时候,还是很有追求滴,当时收购了一家国内做 Java 虚拟机的公司(叫“猛犸科技” ) ,同时还找了一帮 MOTO 做 Linux 内核的人,想搞个自己的操作系统出来。阿里云的 CEO 叫王坚,和李开复一样都是从微软研究院出身,但是颇看不起李开复搞的“点心 OS”,认为 “拿个 Android 来改一改,多土啊!我们要搞自己的操作系统!”于是呢,阿里云的一帮人就吭哧吭哧搞“自己的操作系统”了。结果呢,大家脚趾头都能想到,从头搞一个操作系统哪有那么容易,做了半年没做出来,咋给马云交差呢?于是也顾不上土不土了,拿 Android 改吧。虚拟机是现成的,那就换掉 Android 的虚拟机吧,好歹能算是自己的工作成果。但光换个虚拟机意义也不大啊,HTML5 和 WebOS 的概念比较新潮,那就再加个“云服务”的概念吧,也算是国内 HTML5 的倡导者了。HTML5 通过浏览器引擎跑,性能肯定比不上原生应用,那怎么保证操作流畅呢(特别是桌面 Launcher,天天用,要是太卡,用户就疯了) ,那还是用原生应用来实现吧于是,最后阿里云 OS 就长成现在这样了。
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号