原博客地址:http://www.williamlong.info/archives/3222.html

近日,有关谷歌Android和阿里云的争论闹得沸沸扬扬,谷歌高管、Android开发领头人Andy Rubin在其Google+主页中这样写道:阿里云系统采用了谷歌Android系统的运行环境,明显是由Android系统修改得来。

  Andy Rubin称,事实是,阿里云系统包含了Android中运行环境,明显是从Android中演变而来,但无法与Android兼容。基于Google对阿里云网站上应用的分析,这个平台尝试与Android兼容,但未能成功。

  阿里云OS到底是不是Android以外的东西?

这里用官方原生云OS的ROM分析一下,到底阿里云OS和Android之间是什么关系。

  解开看大目录的结构:

  根目录下是一个boot.img,这就是Android系统的bootloader,也就是启动分区。另外有个system目录,这就是Android系统的system分区。进入system目录往下看:

  这里和Android ROM的目录结构是一模一样的,各位可以自己找个Android ROM对比以下。核心的几个目录:

  app: 存放ROM预装的app

  bin: 系统进程的目录

  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就长成现在这样了。

最新文章

  1. Word2010如何恢复没有保存的文件
  2. js遍历table中的每一个元素
  3. 怎样让Oracle支持中文? 语言_地域.字符集
  4. BZOJ3514 : Codechef MARCH14 GERALD07加强版
  5. (easy)LeetCode 226.Invert Binary Tree
  6. 【BZOJ 3122】 [Sdoi2013]随机数生成器 (BSGS)
  7. 基于zabbix 内置key的应用
  8. H264 编码详解
  9. spark单机部署及样例运行
  10. Pelican主题配置:elegant
  11. Python爬虫框架Scrapy安装使用步骤
  12. 开篇有益-解析微软微服务架构eShopOnContainers(一)
  13. 项目总结-timerTask的使用
  14. 【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4
  15. 【原创】KMP算法代码(C)
  16. double在输出为字符串的几种方法效率测试
  17. 阻止form表单中的input按下回车时提交表单
  18. Filebeat简介
  19. 洛谷P5112 FZOUTSY
  20. Forth嵌套定义的执行过程图示

热门文章

  1. DNN - Modules - QR Code Generator
  2. xxx is not in the sudoers file. This incident will be reported的解决方法
  3. 数据库WMI 0x80041010 如何解决?
  4. 制作ado开发辅助工具类SqlHelper
  5. iOS 网络与多线程--7.Performselector消息处理方法
  6. 2.2 文件 I/O 的基石:Path
  7. Socket 接收本地短连接并转发为长连接 多线程
  8. php 求两个文件的相对路径
  9. How to install ffmpeg,mp4box,mplayer,mencoder,flvtool2,ffmpeg-php on centos
  10. Python自动化运维之7、生成器、迭代器、列表解析、迭代器表达式