1.  起源和发展

Android是由Android公司的创始人Andy Rubin创造的,而后被Google收购,Google的目标是将Android打造成一个标准化、开放式的移动操作系统平台。

Android是开放源代码的移动操作系统软件,提供了丰富的功能和酷炫的用户界面。Google不断优化和改进Android系统,并开放原生的安卓系统源代码允许各个软件厂商或者手机厂商进行定制化的修改。同时Google也提供了丰富的Android API和强大的开发环境,使得在Android平台上开发Android App变得十分便捷。

Android是目前移动端市场占有率最高的手机操作系统,事实上,Android已经不仅仅用在手机端,还广泛用于TV、手表等各种可穿戴设备以及各种智能硬件。

2.  Android平台架构

Android平台是基于Linux内核构建起来的,从上到下主要包含四个层次:

应用程序层,这一层主要包含各种应用程序软件,包括最基本的通话、短信、联系人、浏览器等App,还包括大量开发者开发的各种App;

应用程序框架层,所有的App都是基于应用框架层开发的,应用框架层提供了大量的API供开发者使用,开发者也可以提交自己开发的功能模块;

系统环境层,这一层包含了支持上层功能所需要的大量C/C++函数库,还包括Android运行时环境,Android运行时环境包括Java核心库以及Android虚拟机;

Linux内核层,Android内核建立在Linux 2.6之上,这一层提供最基础的诸如内存管理、进程管理、网络协议栈等操作系统级服务;

关于Android虚拟机,在5.0版本之前使用的是Dalvik虚拟机,而自5.0版本之后使用的是ART。Dalvik虚拟机是一种解释执行的虚拟机,由于其在运行App时进行动态编译,使得运行App的速度比较慢。ART采用AOT(Ahead of Time)的技术在安装App时就进行编译,使得运行App的效率得到较大提升。

3.  Android开发环境

目前主流的Android开发工具主要包括两种:Eclipse + ADT和Android Studio,前者是在Eclipse之上集成了Android Development Tool,后者是Google官方提供的开发工具,正越来越流行。

开发Android程序首先需要下载Android SDK,可以从http://developer.android.com上下载官方安装文件,安装成功后包括Android SDK管理器、AVD管理器、Android系统源码以及工具等。Android SDK管理器用于管理SDK的各个版本的下载。AVD即Android Virtual Device,用于在PC端模拟安卓机器供开发调试使用,AVD管理器即用于管理AVD,由于AVD的启动以及运行非常缓慢,因此实际通常在真机上开发,只需要打开真机的调试模式。

Android提供了另外两个常用的开发工具,即Monitor和ADB(Android Debug Bridge)。Monitor用于监视Android设备的运行状态,包括系统各项资源使用情况以及运行的各个App的线程状态等。ADB是一个功能十分强大的调试工具,可以方便地实现在Android设备和开发电脑之间复制文件、安装卸载App、执行shell命令等功能。

4. Android项目组成结构

一个开发中的Android项目通常主要包含以下几个部分:

res目录,该目录下存放着Android项目使用到的各种资源文件,如layout子目录下存在布局相关的xml文件,values子目录下存放strings.xml、colors.xml、dimens.xml等;

src目录,该目录即保存着项目的java源文件;

AndroidManifest.xml文件,该文件是Android项目的系统清单文件,定义了Android项目的基本属性,如:名称、图标、访问权限等;

libs目录,该目录存放需要用到的第三方jar包;

Android项目中还包括一个R类,该类是由开发环境自动生成的一个工具类,其中定义了Android需要使用的各种资源,为在程序源代码中方便地访问资源文件中定义的各种资源提供了接口。每类资源在R类中都对应着一个内部类,而每个具体的资源都对应着内部类中一个public staic final int型的属性。

5. Android四大组件

Android API提供了大量的开发接口,程序员主要是围绕以下四大组件进行开发:

Activity,Activity负责与用户进行交互,提供了可视化的用户界面,应用程序通常由多个Activity组成,这些Activity保存在Activity栈中,当前活动的Activity位于栈顶;

Service,Service通常在后台运行,负责为其他组件提供后台服务或者监控其他组件的运行情况,Service拥有自己独立的生命周期;

BroadcastReceiver,BroadcastReceiver类似于事件监听器,只是它监听的事件源不是对象,而是其他的Android组件;

ContentProvider,ContentProvider用于多个应用程序之间的数据交互,一个应用程序可以通过ContentProvider接口对外提供数据,而另一个应用程序则可以通过ContentResolver来获取该应用程序提供的数据;

6. App在Android系统中的运行环境

Android是一个基于Linux的多用户操作系统,在Android系统中,每个App就是一个独立用户。

(1) 系统为每个App维护一个User ID(这个UserID的具体值只有系统知道,App本身并不知道),系统为该App所拥有的文件设置权限,确保只有获得该User ID的程序才可以访问;

(2) 与JavaSE平台一样,Android系统中每个应用进程都运行在一个单独的虚拟机中;

(3) 两个App可以拥有共同的User ID,从而可以互相访问对方的文件,拥有共同User ID的App进程还可以运行在一个虚拟机中,从而可以节省系统资源;

(4) App在安装时会向系统申请需要的权限,如调用摄像头、读取联系人等,没有申请相关权限则无法访问系统相关资源;

参考资料 《疯狂Android讲义》

转载于:https://www.cnblogs.com/jqctop1/p/4959133.html

Android平台简单介绍相关推荐

  1. Android 系统简单介绍

    Android 系统简单介绍 2011年11月20日 写这篇文章的目的是为了给那些刚刚入手安 卓手机的新手们一些参考,希望他们能快速的上手 [第一期]ANDROID基础知识1~20 [第二期]继续泡! ...

  2. 英国主要跨境电商平台简单介绍

    小伙伴都知道,要想卖得好,首先就要选对平台,针对相应用户群体卖货.今天我们小编就给大家简单介绍一下英国主要跨境电商平台,这样大家心里就都有一个判断!这是因为英国不仅是全球第三大电商市场,同时英国电子商 ...

  3. android treble,Android Treble 简单介绍.ppt

    Android Treble 简单介绍.ppt Android Treble Brief Introduction Jacky Cai – 2017/09/27 Why Treble ? The An ...

  4. Android NDK 简单介绍、工具安装、环境配置

    NDK全称:Native Development Kit. 1.NDK是一系列工具的集合. * NDK提供了一系列的工具,帮助开发人员高速开发C(或C++)的动态库,并能自己主动将so和java应用一 ...

  5. Android——DDMS简单介绍

    DDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik虚拟机调试监控服务. 它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运 ...

  6. 游戏手机平台简单介绍

    由于手机游戏市场的巨大潜力和无限商机,许多厂商纷纷推出功能强大的手机并提供开放应用平台,而相关手机游戏开发商也是相继投入,与手机厂商或运营商者合作,推出各种跨平台的解决方案.从最早的内嵌式游戏到最新的 ...

  7. Android平台Fastboot介绍

    一.   Fastboot定义及功能 fastboot协议是一种通过USB连接与bootloader通讯的机制.它被设计的非常容易实现,适用于Linux.Windows或者macOS等多种平台.fas ...

  8. android.mk简单介绍

    application.mk简介: 0. 基础知识介绍: Application.mk用来描述应用程序需要哪些modules.Application.mk通常放在:$PROJECT/jni/Appli ...

  9. Android的简单介绍

    定义 Android早期由"Android之父"之称的Andy Rubin创办,Google于2005年并购了成立仅22个月的高科技企业Android,展开了短信.手机检索.定位等 ...

最新文章

  1. 深入浅出Java微服务视频
  2. POI获取WORD信息
  3. Linux 查看文件指定行数 内容
  4. 初步使用计算机学设计,幼儿园计算机教学设计参考
  5. Python机器学习:KNN算法07数据归一化
  6. SpringMVC文件上传(三)异常栈处理
  7. jlink6.80a烧写序列号(serial number)问题记录
  8. Pyinstaller 打包Pyside2 报错qt.qpa.plugin
  9. poi实现word转html
  10. 小武与剑指offer的恩怨情仇
  11. 计算机dns服务器错误或不存在,找不到服务器或 DNS 错误,详细教您找不到服务器或dns错误怎么解决...
  12. Ubuntu18.04安装redmine+mysql+nginx+Passenger
  13. 如何自己搭建一个小程序(步骤详解)
  14. Node.js知识点整理之----Buffer类
  15. 推荐学习产品经理入门知识的5个网站
  16. Vue+SpringBoot图书管理系统前后端分离(教你一步一步搭建)
  17. 20221223英语学习
  18. 组态王怎么做超级曲线_组态王如何将历史曲线导出到电子表格中去?:
  19. 网络工程师从入门到精通(学习总目录——持续更新)
  20. 博士申请 | 香港中文大学(深圳)徐扬生院士团队招收人工智能全奖博士生

热门文章

  1. c1reportviewer html,Winform ReportViewer 动态传入图片显示
  2. Java内存结构与Java内存模型
  3. 项目出现红色叹号或红叉
  4. Parallel Python 并行计算
  5. java recordset 记录数_ADO Recordset 对象
  6. C++之static及其作用域
  7. 2023全国特种设备作业人员(N1)叉车司机模拟一[安考星]
  8. C语言入门(八)——数组
  9. 05-kafka日志保存时间
  10. 疫情期间口罩紧俏,教你用代码实现抢购