注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的个人博客

欢迎访问我的网站www.shaccp.cn,学习软件编程

 
 
 

日志

 
 

android基本概念  

2012-04-13 23:22:02|  分类: android学习笔记 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
android 简介

Android是基于Linux开放性内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统。 Android早期由原名为"Android"的公司开发,谷歌在2005年收购"Android.Inc"后,继续对Android系统开发运营,它采用了软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能,其他的应用软件则由各公司自行开发,部分程序以Java编写。   2011年初数据显示,仅正式上市两年的操作系统Android已经超越称霸十年的塞班系统,使之跃居全球最受欢迎的智能手机平台。现在,Android系统不但应用于智能手机,也在平板电脑市场急速扩张,在智能MP4方面也有较大发展。采用Android系统主要厂商包括台湾的HTC,(第一台谷歌的手机G1由HTC生产代工)美国摩托罗拉,SE等,中国大陆厂商如:魅族(M9),华为、中兴、联想、蓝魔等。

Android系统具有如下5个特点:

1.开放性。Google与开放手机联盟合作开发了android,Google通过与运营商、设备制造商、开发商和其他有关各方结成深层次的合作伙伴关系,希望通过建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。
2.应用程序无界限。Android上的应用程序可以通过标准API访问核心移动设备功能。通过互联网,应用程序可以声明他们的功能可供其他应用程序使用。
3.应用程序是在平等的条件下创建的。移动设备上的应用程序可以被替换或扩展,即使是拨号程序或主屏幕这样的核心组件。
4.应用程序可以轻松的嵌入网络。应用程序可以轻松的嵌入HTML、JavaScript和样式表,还可以通过WebView显示网络内容。
5.应用程序可以并行运行。Android是一种完整的多任务环境,应用程序可以在其中并行运行。在后台运行时,应用程序可以生成通知以引起注意。

Android的系统框架
android基本概念 - cml15000352380 - cml15000352380的博客
 
1.应用层
应用是用java语言编写的运行在虚拟机上的程序,Google在Android系统中捆绑了一些核心应用,比如E-mail客户端、SMS短消息、日历、地图、浏览器、联系人管理程序等等。
2.应用框架层
  开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其 它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统, 其中包括;
Views System:丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。
Content Providers(内容提供器):使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )
Notification Manager(通知管理器):使得应用程序可以在状态栏中显示自定义的提示信息。。通知列设定在手机的顶部,像短信(short Message),Voice mail都会在此进行提示。
Activity Manager(Activity管理):用来管理应用程序生命周期并提供常用的导航回退功能。

3.系统运行库(C/C++库以及Android运行库)层
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是一些核心库:
System C library – 一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。
Media Libraries – 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
Surface Manager – 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
LibWebCore – 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
SGL -底层的2D图形引擎。
3D Libraries -基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。
Free Type - 位图(bitmap)和矢量(vector)字体显示。
SQLite – SQLite是一套开放源码的关系数据库,一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
SSL – Secure Socket Layer用于保护网页通讯的协议。


4.Linux内核层
 
Android平台的操作系统用的是Linux,内核版本为2.6版,包含的主要功能有安全(Security)、内存管理(Memory Management)、进程管理(Process Managemen)、网络协议栈(Network Stack)、硬件驱动(Driver Model)等,Linux内核也同时作为硬件和软件栈之间的抽象层。
关于 Android  kernel 的修改,Google 的简报还提供了两个重点:
       Binder (IPC):提供有效率的程序间沟通管道(Inter-Process Communication)Android 系统中有很多服务,而上层的应用程序经常要取用这些服务,一般的 Linux 系统已经提供了不少 IPC 的方式,不过 Android 还是搞了套自己的。虽说文件中解释原因为「一般 IPC 会造成额外资源花费,以及安全问题」,但其实这些都是可以基于原有架构在kernel 外头解决的,为何要改在 kernel 里头,笔者对此存疑,也只能等找时间去研究程序代码才知了。
       Power Management
:与桌上型计算机或笔记型计算机不同,手持装置的电源一向相当有限,必须无所不用其极的去想办法省电,但又不损及顺畅的使用经验。Android 在此采取了颇为积极的作法:「没有人说要用,就关掉」。例如某程序在放 MP3 音乐,于是此程序会需要 CPU 的计算能力,那就得开口要。如果与此同时没其它程序在执行,那么 LCD 显示器就可能被关掉,藉以省电。另一特别处,是在于 Linux kernel 一般考虑的都是在计算机上的作法,所以多半只有进入暂停、休眠等等的选择,而不会如此细致的去控制到各个小装置的电源供应。
系统函式库

这里说的系统函式库是指 native libraries”,是跑在系统里头的函式库,采用的语言不是 Java,提供一些基础建设。里头有几个值得一提的组件:

       Bionic
:这是 Android 版的 libclibc  GNU/Linux 以及其它类似 Unix 系统上最基础的函式库,一般最常用的是glibc,就是 GNU 做的 libc。不然在比较小型的装置上也可以用 uclibc。不论是 glibc or uclibc,版权都是LGPL (GPL 的略为弱化版)。看到这大概可以猜到了吧,又是 Copyleft 问题。官方的说法是,除了版权问题以外,还考虑必须轻量以及快速,所以才做了自己的 libc。不过轻量、快速,本来就是小型装置用的 uclibc 一开始的目标,因此,最主要的恐怕还是版权问题。
       Webkit
:鼎鼎大名的 Apple Safari 浏览器背后的引擎就是 WebkitAndroid 也包含进去了。离线使用的 html 配上html 5 的一些新发展,产生了各种有趣的可能,这部分值得另文介绍,这里就不再赘述。
Surface Flinger
:提供把各种”surface”组合在一起的能力。在这里 surface 解释为程序想要显示在屏幕的东西,可能同一屏幕上有来自不同程序的内容,而这些内容有可能是 2D 显示或是 3D 显示等等之类。Surface flinger 就是把这些东西结合起来,一起送到屏幕上。目前程序代码还没公布,不过 2D  3D 的混合显示一直都是问题,根本原因是我们通常告诉 3D 显示卡的东西都是一些「我要在哪里哪里画上什么形状,贴上某某材质然后旋转多少度」之类的事情,也就是说,我们并不知道最后显示出来会长什么样子,那是显示卡上头的 GPU 去算出来的。一般这些东西是显示在一个有装饰的窗口里头,这装饰通常是 2D 效果。接下来假定我们想要旋转这整个窗口,而且里头的东西还要继续动,那等于要随时把握 3D 窗口里的东西长什么样子,然后把它跟 2D 的窗口框框结合,然后再开始转动。目前在一般 GNU/Linux 上这件事情还没有处理的非常好,Android 怎么做,值得在程序代码公布之后注意。
      硬件抽象层 (Hardware Abstraction Libraries):这就是前文所述的 userspace 驱动程序,如果想要将 Android 在某硬件平台上执行,基本上完成这些驱动程序就行了。其内定义了 Android 对各硬件装置例如显示芯片、声音、数字相机、GPSGSM 等等的需求。
  评论这张
 
阅读(72)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017