Android 是什么

一、 概述

Android 本义 “ 机器人 ” , Google 于 2007 年 11.5 日发布的开源手机 OS (在华注册商标名为 “ 安致 ” ) ,该平台由操作系统、中间件( SQLite 等)、用户界面和应用软件组成。 Android 不存在专有权障碍, 目前版本是 Android2.0 。

Android 采用软件堆层( software stack ,又名软件叠层)架构,底层以 Linux 内核工作为基础,提供基本功能;其他应用软件则由各公司自行开发,以 Java 编程。 2010 年 1 月, Google 发表自家品牌手机电话的 Nexus One 。

2008 年 9.22 日,美国 T-Mobile USA 在纽约发布第一款 Google 手机 T-Mobile G1 (台湾宏达电代工制造),是世界上第一部使用 Android 操作系统的手机,支持 WCDMA/HSPA 网络,理论下载速率 7.2Mbps ,并支持 Wi-Fi 。

 

二、 基本情况

Android 早期由 Google 开发,后由 开放手机联盟 开发, 这个联盟由包括 中国移动 、 摩托罗拉 、高通、 宏达电 ( HTC )和 T-Mobile 在内的 30 多家领军企业组成。 Google 通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。

 

三、 团队成员

Google 、 HTC 、 PHILIPS 、 T-Mobile 、高通、魅族、中国联通、华为、联想、摩托罗拉、三星、 LG 及中国移动在内的 34 家企业,都将基于该平台开发手机业务,应用之间的通用性和互联性将在最大程度上得到保持。 这 34 家企业中并不包含 诺基亚 、苹果公司、 AT&T 、 Verizon 、微软及加拿大 RIM ( Blackberry )。

   < 手机制造商 > HTC 、摩托罗拉、三星、 LG 、中国移动、日本 KDDI 、日本 NTT DoCoMo 、美国 Sprint Nextel 、意大利电信、 T-Mobile 。

< 半导体公司 > Audience Corp (声音处理器)、 Broadcom Corp (无线半导体提供商)、英特尔、 Nvidia (图形处理器公司)、 SiRF ( GPS 技术提供商)、 Synaptics (手机用户界面技术)、德州仪器、高通、惠普 HP 。

< 软件公司 > Aplix 、 Ascender 、 eBay 的 Skype 、 NMS Communications 、 Noser Engineering AG 、 Nuance Communications 、 SkyPop 、 PacketVideo 、 Sonix Network 、 TAT-The Astonishing Tribe 、 Wind River Systems 。

 

四 架构

Ø        应用程序框架:支持组件的重用与替换;

Ø        Dalvik 虚拟机:专门为移动设备做了优化;

Ø        内部集成浏览器:该浏览器基于开源的 WebKit 引擎;

Ø        优化的图形库:包括 2D 和 3D 图形库, 3D 图形库基于 OpenGL ES 1.0 (硬件加速可选);

Ø        SQLite :用作结构化的数据存储;

Ø        多媒体支持:包括常见的音视频和静态印象文件格式 (如 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF );

Ø        GSM 电话(依赖于硬件);

Ø        Bluetooth, EDGE, 3G, and WiFi (依赖于硬件);

Ø        照相机, GPS ,指南针,和加速度计 (依赖于硬件);

Ø        丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse 集成开发环境插件。

五、 架构剖析

1.   核心应用程序包(基本应用程序)

包括 email 客户端、 电话本、 SMS 短消息程序、日历、地图、浏览器、联系人管理程序等,所有的应用程序都是用 Java 编写的。

2.   应用程序 框架(应用程序到可以用的基本内容)

开发者完全可以访问核心应用程序所使用的 API 框架。该应用程序架构用来简化组件软件的重用。任一应用程序都可发布它的功能且任何其它的应用程序都可使用其所发布的功能块。该应用程序重用机制使得组建可以被用户替换。

  以下所有的应用程序都由一系列的服务和系统组成,包括:

Ø     一个可扩展的视图 ( Views ) 可以用来建应用程序,包括列表 ( lists ) ,网格 ( grids ) ,文本框 ( text boxes ) ,按钮 ( buttons ) ,甚至包括一个可嵌入的 web 浏览器

Ø     内容管理器 ( Content Providers ) 使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

Ø     一个资源管理器 ( Resource Manager ) 提供非代码资源的访问,如本地字符串,图形,和分层文件 ( layout files ) 。

Ø     一个通知管理器 ( Notification Manager ) 使得应用程序可以在状态栏中显示客户通知信息。

Ø     一个活动类管理器 ( Activity Manager ) 用来管理应用程序生命周期并提供常用的导航回退功能。

3.   程序库

被系统中各种组件所使用的 C/C++ 库集。该库通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库:

Ø     系统 C 库: 从 BSD 继承的标准 C 库,专为 嵌入式 linux 设备定制。

Ø     媒体: 基于 PacketVideo OpenCORE ;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态影像文件。( openmax 就在这)

Ø     Surface Manager 对显示子系统的管理,并且为多个应用程序提供 2D 和 3D 图层的无缝融合。

Ø     LibWebCore 一个最新的 web 浏览器引擎用来支持 Android 浏览器和一个可嵌入的 web 视图。

Ø     SGL :一个内置的 2D 图形引擎

Ø     3D libraries 基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D 加速(如果可用)或者使用高度优化的 3D 软加速。

Ø     FreeType 位图 ( bitmap ) 和向量 ( vector ) 字体显示。

Ø     SQLite :一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

4.   Android 运行库

Android 包括了一个核心库,该库提供了 Java 编程语言核心库的大多数功能。每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。

Dalvik 是针对于同时高效地运行多个 VMs 来实现的。 Dalvik 虚拟机执行 .dex 的 Dalvik 可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有类都由 Java 汇编器编译,然后通过 SDK 中的 dx 工具转化成 .dex 格式由虚拟机执行。 Dalvik 虚拟机依赖于 linux 的一些功能,比如线程机制和底层内存管理机制。

5.   核心系统服务

依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。

 

六、 Android 平台手机优势

1.   开放性

2.   挣脱运营商束缚

3.   硬件选择丰富

4.   开发商不受任何限制

5.   无缝结合 Google 应用

 

七、 Android 开发

1.     Android 关键类

视图类,ContentProviders 应用交互管理类、ResourceManager 非编码资源管理类、NotificationManager 通告管理类、ActivityManager 生命周期管理类。

2.   界面开发

组件的初始化抽取出来放到配置文件中,组件更新用编码方式来处理。

3.   应用构成

Android 的应用一般由以下四个关键部分构成:

Ø        Activity 每个应用都是必须的, Activity 代表一个应用的一个具体的界面管理类,其本身并不显示。

Ø        IntentReceiver 可使应用对外部事件做出响应,比如,当应用正在执行,突然有了来电,这个时候可使用 IntentReceiver 做出处理是应用更健壮。

Ø        Service Android 应用生命周期是由 Android 系统来决定的,不由具体的应用线程左右。当应用要求在没有界面显示的情况还能正常运行,(要求有后台线程,而后台线程是不会被系统回收,直到线程结束)这个时候就需要用到 Service 。

Ø        Content Provider 可以说 Content Provider 封装很多 Android 当中的上下文环境,包括 SQLite ,这就使得在不同应用之间交互成为可能。

4.   布局管理

Ø        FrameLayout :左上角只显示一个组件。

Ø        LinearLayout :线性布局管理器,分为水平和垂直俩中,只能进行单行布局。

Ø        TableLayout :任意行和列的表格布局管理器。其中 TableRow 代表一行, TableRow 的每一个视图组件代表一个单元格。

Ø        AbsoluteLayout :绝对布局管理器,坐标轴的方式,左上角是( 0 , 0 )点,往右 x 轴递增,往下 Y 轴递增。

Ø        RelativeLayout :相对布局管理器,更具最近一个视图组件,或是顶层父组件来确定下一个组件的位置。

5.   Activity 交互方式

Ø        Intent 方式 : 用来在 Activity 之间做交互。 Intent 有个意图说明,值得深究,举个简单的例子,有种叫 Intent.ACTION_CALL ,可直接拨打电话。

Ø        SharedPreferences : 是 Android 平台上一个轻量级的存储类,主要是保存一些常用的配置。 SharedPreferences 类似过去 Windows 系统上的 ini 配置文件,但是它分为多种权限,可以全局共享访问,最终是以 xml 方式来保存,效率不如 Intent ,但是由于可共享,所有可以在 Acitivity 之间交互。其效率比 SQLite 高。

Ø        SQLite 也就是数据库,这种方式不推介,因为其效率问题,如果是在不同应用之间交互,可以考虑 SQLite 。或是永久存储的情况下。

6.   Android 生命周期

理解Android 生命周期非常重要,主要有以下几点:

Ø        每一个 Android 应用都是以一个进程的方式运行的,其生命周期不是有自身控制,而是由系统根据运行的应用的一些特征来决定。

Ø        理解 Android 生命周期对你的应用什么时候会被系统回收很重要。

Ø        理解好生命周期可提高应用的健壮性。比如应用的初始化应该放到 onCreate 方法中,应用暂停的时候应用重写 onPause 方法来保存当前应用操作结果。

7.   SQLite

SQLite 是Android 中提供的内置数据库,据说比MySql 更轻巧。SQLite 也是开源产品。数据库的操作方式:

SQL 语句 直接操作,插入、更新、删除都可以直接写SQL 语句,调用execSQL 就可以,而查询需要使用rawQuery ()来完成,查询结果返回是一个可滚动的结果集,Cursor 在对Cursor 操作前,需要将其游标移动到第一位,每取一个结果向下移一位。

8.   Android 实际开发经验分享

自定义组件的显示问题,在写自定义View 的时候经常要对视图的X 、Y 调整,以达到预期的理想位置。可以讲每个组件的X 、Y 坐标值画到组件旁边,这样很直观,一看就知道该怎样调整。

使用Log 来打印日志和进行调试。

使用LogCat 视图,在showView 中有LogCat 视图,LogCat 视图会显示一些Android 仿真器打印出的堆栈信息,对应用的调试非常有帮助,另外Log 打印的日志也在这边显示。

使用Emulator Control 视图,Emulator Control 可以完成一些简单的设备操作,比如,模拟来电,短消息。

活用tools 目录下的工具,该目录在Android SDK 中都有提供,通过这些工具可以操作Android 仿真器,比如,创建一个虚拟SD 卡,将系统中的文件移动到虚拟SD 中,Android 都有提供相应的工具,相关命令可以上网查阅。

 

八、 未来发展

Android 采用 WebKit 浏览器引擎(与 iPhone 相似),具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等。但其最震撼人心之处在于 Android 手机系统的开放性和服务免费。

Android手机操作系统(转)相关推荐

  1. 学习android操作系统,学习Android手机操作系统笔记总结

    比如,一张你要发布的图片.所有的子元素将会固定在屏幕的左上角:你不能为FrameLayout中的一个子元素指定一个位置.后一个子元素将会直接在前一个子元素之上进行覆盖填充. 把它们部份或全部挡住(除非 ...

  2. android手机操作系统 刷机,安卓怎么刷机 安卓系统刷机图文教程

    准备工作: 1)首先在电脑上下载相对应的刷机包,然后把手机连接到电脑,把刚才下载的刷机包复制到SD卡上. 2)刷机之后数据会全部清空,所以大家要先把手机上的资料备份一下. 3)刷机之前,一定要保持手机 ...

  3. android 壁纸制作教程,[教程]怎样制作Android手机壁纸/桌面

    谷歌的Android手机操作系统正在迅速成为最流行的手机平台之一.这是非常容易自定义的,包括更改墙纸,只是可自定义的其中一部分. 这篇文章可以教你如何DIY制作属于自己的手机壁纸,下面直接进入主题. ...

  4. 基于android手机相册,基于安卓的手机图片分类软件的设计与实现.pdf

    ELECTRONICS WORLD ・技术交流 基于安卓的手机图片分类软件的设计与实现 武警工程大学研究生管理大队12队 张 鑫 武警广州指挥学院 姜 波 [摘要] 本文针对安卓手机中图片浏览器的快速 ...

  5. JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面...

    JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { ...

  6. 移动端:判断是否微信端、判断手机操作系统(ios或android)

    http://caibaojian.com/browser-ios-or-android.htmlfunction is_weixin() { var ua = window.navigator.us ...

  7. Android 10 vs iOS 13,逐鹿手机操作系统之王!

    两大操作系 Android 和 iOS 大比拼. 作者 | Harshit Ameta 译者 | 风车云马,责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 以下为译文: 几十年来,And ...

  8. 获取Android 手机设备信息:包括机型、操作系统版本号、手机分辨率、运营商、当前联网方式、IMEI、MEID、MAC地址

    获取Android 手机设备信息:操作系统版本号.手机分辨率.运营商.当前联网方式.IMEI.MEID.MAC地址 包括双卡机型上的两个IMEI信息 /*** Created by Administr ...

  9. Google手机操作系统Android将100%开源

    Google 最近宣称,他们未来的手机 操作系统"Android ",包含核心平台组件和开发设备所需的库,都将采用常用的开源协议来授权. 换句话说,Google Android将1 ...

最新文章

  1. freemarker 学习笔记
  2. ElasticSearch-安装以及常见错误(自己测试过yum install -y log4j* )
  3. P7443-加边【博弈论】
  4. MySQL Connector/ODBC 5.2.4 发布
  5. 60-100-032-使用-MySQL大小写敏感的解决方法
  6. webvie使用--官方api
  7. SQL Server 数据库中的 MD5 和 SHA1
  8. 强制卸载Lync Server脱机的CMS并在新位置重建
  9. 增值电信业务许可证 年审年报 教程 icp sp idc年审年报
  10. Gerrit搭建与代码下载
  11. matlab ode45 二阶微分,matlab用ode45求解二阶微分方程为题 - 数学 - 小木虫 - 学术 科研 互动社区...
  12. rancher报错Not using `--random-fully` in the MASQUERADE rule for iptables because the local version of
  13. 【实习日报】2019年4月下半月 前端开发实习工作日报汇总
  14. 关于UNI-APP微信小程序订阅信息订阅获取失败的问题处理
  15. 《智能制造时代的研发智慧:知识工程2.0》一第3章 隐性知识的显性化
  16. 通过Python来调用Chrom浏览器,进入设定网页
  17. 不看别后悔,关于小儿夜啼、踹被、食欲差和积食,虫妈原创,55首发
  18. Ollydbg的断点设置
  19. Hbaseshell scan多种过滤操作
  20. 用Swift搭建API Server,Vapor + PostgreSQL + Docker + ECS + OSS

热门文章

  1. 有源电力滤波器matlab仿真, 并联型apf仿真fft分析 谐波电流检测ipiq法
  2. MySQL5.7免安装版图文教程
  3. MySQL 免安装版配置教程
  4. php字典,php框架的一些常用后台字典
  5. 手机摄影从小白到大师 泼辣修图编著 第一章 构图和色彩原理
  6. 考勤刷卡 蓝桥杯 python
  7. 什么是微信防火墙_09年奔驰E280有什么通病?月入多少能盘它?【诺诺情报站】...
  8. 自媒体文章怎么写?学会这3个写作方法,让你轻松写出好文章
  9. 修改Emlog验证码机制,有效防止恶意识别/解决恶意评论灌水
  10. Z3 Solver中Tactic的使用