草庐IT

Android 操作系统简介

乾行lovemn 2023-04-04 原文
Android 操作系统简介
目标
 系统简介
 发展历程
 发行版本
 体系架构
 系统结构
 应用组件
 平台优势

01. 系统简介

1.1 Android 名词

        Android 一词的本义指 机器人 ,同时也是 Google 2007 11 5 宣布的基于 Linux 平台的开 源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。
        Android 一词最早出现于法国作家利尔亚当( Auguste Villiers de l'Isle-Adam )在 1886 年发表的科 幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为 Android

1.2 Logo

        Android logo 是由 Ascender 公司设计的,诞生于 2010 年,其设计灵感源于男女厕所门上的图 形符号,于是布洛克绘制了一个简单的机器人,它的躯干就像锡罐的形状,头上还有两根线, Android小机器人便诞生了。

02. 发展历程

2.1 历程简介

      2003 10 月, Andy Rubin 等人创建 Android 公司,并组建 Android 团队。
      2005 8 17 日, Google 低调 收购 了成立仅 22 个月的高科技企业 Android 及其团队。 安迪 鲁宾 成为 Google 公司工程部副总裁,继续负责 Android 项目。
       2008 年,在 GoogleI/O 大会上,谷歌提出了 AndroidHAL 架构图,在同年 8 18 号, Android 获得了美国联邦通信委员会(FCC )的批准,在 2008 9 月,谷歌正式发布了 Android 1.0 系 统,这也是Android 系统最早的版本。
      2009 9 月,谷歌发布 Android 1.6 的正式版,并且推出了搭载 Android 1.6 正式版的手机 HTC Hero G3 ,凭借着出色的外观设计以及全新的 Android 1.6 操作系统, HTC Hero( G3 )成为当时全球最受欢迎的手机。 Android 1.6 也有一个有趣的甜品名称,它被称 为Donut (甜甜圈)
      每年陆续更新版本 .....................................
      2022 年, Android 12

03. 发行版本

3.1 版本简介

1.1
2008 9 月发布的 Android 第一版
1.5
Cupcake (纸杯蛋糕) 2009 4 30 日发布
1.6
Donut (甜甜圈) 2009 9 15 日发布
2.0
2009 10 26 日发布。
3.0
Honeycomb (蜂巢) 2011 2 2 日发布。
4.0
Ice Cream Sandwich (冰激凌三明治) 2011 10 19 日在香港发布。
5.0
Android 5.0Lollipop (棒棒糖) :美国太平洋时间 2014 10 15
6.0
Android 6.0Marshmallow (棉花糖) 2015 9 30
7.0
Android 7.0Nougat (牛轧糖) 2016 8 22
8.0
Android 8.0Oreo (奥利奥) 2017 8 22
9.0
Android 9.0Pie (派) 2018 5 9
10.0
Android 10.0 2019 , 今年的 Android Q 的正式名称是 Android 10
11
。。。。。。

04. 体系架构

采用了分层的架构

Android 系统架构图,如下

Linux 内核

        Android 平台的基础是 Linux 内核。例如, Android Runtime (ART) 依靠 Linux 内核来执行底层功 能,例如线程和低层内存管理。使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备 制造商为著名的内核开发硬件驱动程序

硬件抽象层(HAL

       Android HAL (硬件抽像层) 是能以封闭源码形式提供硬件驱动模块。 HAL 的目的是为了把 Android framework Linux kernel 隔开 ,让 Android 不至过度依赖 Linux kernel ,以达成
Kernel independent 的概念,也让 Android framework 的开发能在不考量驱动程序实现的前提
下进行发展

Android Runtime

      对于运行 Android 5.0 API 级别 21 )或更高版本的设备,每个应用都在其 自己的进程中运行 ,并 且有其自己的 Android Runtime (ART) 实例。 ART 编写为通过执行 DEX 文件 在低内存设备上运行 多个虚拟机 DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编 译工具链(例如 Jack Java 源代码编译为 DEX 字节码 ,使其可在 Android 平台上运行

原生C/C++

      许多核心 Android 系统组件和服务(例如 ART HAL )构建自原生代码,需要以 C C++ 编写 的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以 通过 Android 框架的 Java OpenGL API 访问 OpenGL ES ,以支持在应用中 绘制和操作 2D 3D 图形 。如果开发的是需要 C C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某 些原生平台库

Java API框架

       您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应 用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用包括以下组件和服务
1. 丰富、可扩展的视图系统,可用以构建应用的 UI ,包括列表、网格、文本框、按钮甚
至可嵌入的网络浏览器
2. 资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件
3. 通知管理器,可让所有应用在状态栏中显示自定义提醒
4. Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈
5. 内容提供程序,可让应用访问其他应用(例如 联系人 应用)中的数据或者共享其自己
的数据
      开发者可以完全访问 Android 系统应用使用的框架 API

系统应用

      Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的 核心应用 。平台随附的应 用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览 器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的 设置 应用)。 系统应用可用作用 户的应用 ,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。

05 应用组件

Android开发四大组件

活动 (Activity)

        Android 中, Activity 是所有程序的根本,所有程序的流程都运行在 Activity 之中, Activity
以算是开发者遇到的 最频繁 ,也是 Android 当中最基本的模块之一。 一般一个Android 应用是由多个 Activity 组成的。这多个 Activity 之间 Android 的应用 可以进 行相互跳转。

服务 (Service

        Service android 系统中的一种组件,它跟 Activity 的级别差不多,但是他不能自己运行,
只能 后台运行 ,并且可以和其他组件进行交互。 Service 没有界面 的长生命周期的代码。
       举个例子,打开一个音乐播放器的程序,这个时候若想上网了,那么,打开 Android 浏览
器,这个时候虽然已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继
续一首接着一首的播放。其实这个播放就是由播放音乐的 Service 进行控制。

广播接收器 (BroadcastReceiver

      在Android 中,Broadcast是一种广泛运用的在应用程序之间传输信息的机制

内容提供者 (Content Provider

      Content Provider Android 提供的 第三方应用数据的访问方案
      在Android 中,对数据的保护是很严密的,除了放在 SD 卡中的数据,一个应用所持有的数据 库、文件等内容,都是不允许其他直接访问 的。 Android 当然不会真的把每个应用都做成一 座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider

06 平台优势

开发性

       在优势方面, Android 平台首先就是其开放性,开发的平台允许任何移动终端厂商加入到 Android 联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平 台也将很快走向成熟。
       开放性对于 Android 的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者 来讲,最大的受益正是丰富的软件资源 。开放的平台也会带来更大竞争,如此一来,消费者将可以 用更低的价位 购得心仪的手机

丰富的硬件

       这一点还是与 Android 平台的开放性相关,由于 Android 的开放性,众多的厂商会推出千奇百怪, 功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容,如同 从诺基亚Symbian 风格手机一下改用苹果 iPhone ,同时还可将 Symbian 中优秀的软件带到 iPhone 上使用、联系人等资料更是可以方便地转移。

方便开发

      Android 平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰,可 想而知,会有多少新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏 如何控制正是留给Android 难题之一。

Google应用

      在互联网的 Google 已经走过 10 年度历史,从搜索巨人到全面的互联网渗透, Google 服务如地图、 邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android 平台手机将无缝结合这些优秀的 Google服务。

有关Android 操作系统简介的更多相关文章

  1. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  4. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  5. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  6. ruby - 如何使用 Selenium Webdriver 根据 div 的内容执行操作? - 2

    我有一个使用SeleniumWebdriver和Nokogiri的Ruby应用程序。我想选择一个类,然后对于那个类对应的每个div,我想根据div的内容执行一个Action。例如,我正在解析以下页面:https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=puppies这是一个搜索结果页面,我正在寻找描述中包含“Adoption”一词的第一个结果。因此机器人应该寻找带有className:"result"的div,对于每个检查它的.descriptiondiv是否包含单词“adoption

  7. ruby-on-rails - 如何处理 Grape 中特定操作的过滤器之前? - 2

    我正在我的Rails项目中安装Grape以构建RESTfulAPI。现在一些端点的操作需要身份验证,而另一些则不需要身份验证。例如,我有users端点,看起来像这样:moduleBackendmoduleV1classUsers现在如您所见,除了password/forget之外的所有操作都需要用户登录/验证。创建一个新的端点也没有意义,比如passwords并且只是删除password/forget从逻辑上讲,这个端点应该与用户资源。问题是Grapebefore过滤器没有像except,only这样的选项,我可以在其中说对某些操作应用过滤器。您通常如何干净利落地处理这种情况?

  8. ruby-on-rails - 在 Ruby on Rails 中发送响应之前如何等待多个异步操作完成? - 2

    在我做的一些网络开发中,我有多个操作开始,比如对外部API的GET请求,我希望它们同时开始,因为一个不依赖另一个的结果。我希望事情能够在后台运行。我找到了concurrent-rubylibrary这似乎运作良好。通过将其混合到您创建的类中,该类的方法具有在后台线程上运行的异步版本。这导致我编写如下代码,其中FirstAsyncWorker和SecondAsyncWorker是我编写的类,我在其中混合了Concurrent::Async模块,并编写了一个名为“work”的方法来发送HTTP请求:defindexop1_result=FirstAsyncWorker.new.async.

  9. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  10. ruby - 在 Ruby 中是否有一种惯用的方法来操作 2 个数组? - 2

    a=[3,4,7,8,3]b=[5,3,6,8,3]假设数组长度相同,是否有办法使用each或其他一些惯用方法从两个数组的每个元素中获取结果?不使用计数器?例如获取每个元素的乘积:[15,12,42,64,9](0..a.count-1).eachdo|i|太丑了...ruby1.9.3 最佳答案 使用Array.zip怎么样?:>>a=[3,4,7,8,3]=>[3,4,7,8,3]>>b=[5,3,6,8,3]=>[5,3,6,8,3]>>c=[]=>[]>>a.zip(b)do|i,j|c[[3,5],[4,3],[7,6],

随机推荐