0%

Android 详解系统架构

1. Android 的发展历史大概是怎样的

  • 2003 年 10 月,Andy Rubin 等人一起创办了 Android 公司

  • 2005 年 8 月,Google 收购了这家仅仅成立了 22 个月的公司

  • 2008 年 9 月,Google 正式发布了 Android 1.0系统

  • Steve Jobs 自始至终认为 Android 是一个抄袭 iPhone 的产品,里面剽窃了诸多 iPhone 的创意,并声称不惜发动一场“核大战”一定要毁掉 Android

  • Android 操作系统是基于 Linux 开发的,在 2010 年被 Linux 团队从 Linux 内核主线中除名

  • Android 中的应用程序都是使用 Java 语言开发的,Oracle 则针对 Android 侵犯 Java 知识产权一事对 Google 提起了高达数十亿美元赔偿的诉讼

  • Andy Rubin 从 Google 离职,开始了智能手机领域的创业,乔老爷子在世时说他处处模仿自己

  • 2021 年 4 月 5 日,美国最高法院裁定谷歌在构建 Android 软件时可以合法使用甲骨文 Oracle 的 Java 代码,作为应用程序编程接口 API 代码的元素

    • Oracle 起诉 Google 的 37 个 API

      java.awt.font java.beans java.io java.lang java.lang.annotation java.lang.ref
      java.lang.reflect java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset
      java.nio.charset.spi java.security java.security.acl java.security.cert java.security.interfaces java.security.spec
      java.sql java.text java.util java.util.jar java.util.logging java.util.prefs
      java.util.regex java.util.zip javax.crypto javax.crypto.interfaces javax.crypto.spec javax.net
      javax.net.ssl javax.security.auth javax.security.auth.callback javax.security.auth.login javax.security.auth.x500 javax.security.cert
      javax.sql
    • Oracle 曾经还起诉了谷歌抄袭了 JDK rangeCheck() 方法的 11 行代码

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
      if (fromIndex > toIndex) {
      throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
      }
      if (fromIndex < 0) {
      throw new ArrayIndexOutOfBoundsException(fromIndex);
      }
      if (toIndex > arrayLen) {
      throw new ArrayIndexOutOfBoundsException(toIndex);
      }
      }

2. Android 系统架构图

Android 系统架构图

3. Android 系统架构是怎样的

  • Linux 内核层(Linux Kernel)

    • Android 系统是基于 Linux 内核的,这一层为 Android 设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、WifFi 启动、电源管理等
  • 系统运行库层(Libraries + Android Runtime)

    • 这一层通过一些 C/C++ 库来为 Android 系统提供了主要的特性支持。如 SQLite 库提供了数据库的支持,OpenGL/ES 库提供了 3D 绘图的支持,Webkit 库提供了浏览器内核的支持等
    • 同样在这一层还有 Android 运行时库,它主要提供了一些核心库,能够允许开发者使用 Java 语言来编写 Android 应用
    • 另外,Andorid 运行时库中还包含了 Dalvik 虚拟机(5.0 系统之后改为 ART 运行环境),它使得每一个 Android 应用都能运行在独立的进程当中,并且拥有一个自己的 Dalvik 虚拟机实例。相较于 Java 虚拟机,Dalvik 是专门为移动设备定制的,它针对手机内存、CPU 性能有限等情况做了优化处理
  • 应用框架层(Application Framework)

    • 这一层主要提供了构建应用程序时可能用到的各种 API,Androd 自带的一些核心应用就是使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序
  • 应用层(Applications)

    • 所有安装在手机上的应用程序都是属于这一层的,比如系统自带的联系人、短信等程序,或者是从 Google Play 上下载的小游戏,当然还包括开发者自己开发的程序

4. Android 已发布的版本有哪些

版本号 系统代号 API 市场占有率
1.5 Cupcake(纸杯蛋糕) 2 0.5%
1.6 Donut(甜甜圈) 4 0.1%
2.0-2.1 Eclair(闪电泡芙) 6 0.15%
2.2 Froyo(冻酸奶) 8 0.2%
2.3.3-2.3.7 Gingerbread(姜味饼干) 10 1.5%
3.0-3.1 Honeycomb(蜂巢) 12 1.2%
4.0.3-4.0.4 Ice Cream Sandwich(冰淇淋三明治) 15 1.3%
4.1.x Jelly Bean (果冻豆) 16 5.6%
4.2.x Jelly Bean (果冻豆) 17 7.7%
4.3.x Jelly Bean (果冻豆) 18 2.3%
4.4 KitKat (奇巧巧克力) 19 27.7%
5.0 Lollipop (棒棒糖) 21 13.1%
5.1 Lollipop (棒棒糖) 22 21.9%
6.0 Marshmallow (棉花糖) 23 18.7%
7.0 Nougat (牛轧糖) 24 0.2%
8.0 Oatmeal cookie(燕麦饼干) 25 0.4%
-------------------- 本文结束感谢您的阅读 --------------------