一、什么是Android?

Android是由谷歌公司开发的一种基于Linux的开源的操作系统。  

——源码地址1: https://android.googlesource.com/  

——源码地址2:http://androidxref.com/

起初专为移动设备开发的一个操作系统,如手机,平板电脑,车载系统,智能电视等。

Android第一个版本2008年11月发布,至今有超过10年的历史,几乎每一年都会更新一个版本,下一个版本Anroid Q计划于今年10月23日发布。 API版本

 

二、Android系统分层

应用层

JAVA API Framework

Lib库及Android运行环境

HAL层

Linux内核

三、Android应用开发

需要具备哪些知识?

开发参考手册:https://developer.android.google.cn/

IDE:Android Studio 或者Eclipse

语言:JAVA

基本知识点

四、Android四大组件

Activity: 通常一个activity指的就是一个屏幕

屏幕或者窗口需要布局,布局通常在Android manifest.xml中设置

生命周期

Service

Service又叫服务,主要处理较长时间的任务

运行不依赖用户界面,在后台运行

生命周期及用法

启动类型的服务: onCreate()- >onStartCommand()->Service running--调用context.stopService() ->onDestroy()

绑定类型的服务: onCreate()->onBind()->Service running--调用>onUnbind() -> onDestroy()

 

Broadcast Receiver: 翻译过来就是广播接收器,用于消息传递

当事件触发时发送广播,注册了广播的对象就能接收到消息

注册广播分为动态注册及静态注册

静态注册在Android manifest.xml中注册,动态在代码中注册

Content Provider

内容提供者

通过content provider为不同的应用提供数据存储和读取

通过Uri来标识唯一的访问入口

Content Provider通常会跟数据库(Sqlite)一起使用,也有网络、文件、XML的形式。

Android自带的Content Provider包括:Browser、CallLog、Contacts、MediaStore、Settings等

五、Android进程间通信

六、Context

Context是个抽象类,而Activity、Service、Application等都是该类的一个实现。在面向对象语言里面绝大多数的操作需要以对象为基础,这个时候就需要context。

七、JAVA API Framework

SystemServer:是framework中最重要的一个进程,它是在虚拟机启动后运行的第一个java进程,SystemServer启动其他系统服务,这些系统服务都是以一个线程的方式存在于SystemServer进程中。

最常用的几个服务介绍:

ActivityManagerService :AMS,管理Acvitity生命周期和事件处理

PackageManagerService :PMS,程序安装及包管理

WindowManagerService:WMS,窗口管理包括显示、View、尺寸等

Telephony Manager :通话管理

八、Android Runtime & Library

library路径:/system/lib/

So库一般是由C/C++编译成的动态库,上层的Java程序通过JNI调用

主要包含:Lib c ,OpenGL,SSL ……

Android应用都是用JAVA语言开发的,JAVA是一门解释性语言,它需要运行在虚拟机的环境下, Android Runtime和Dalvik都是解释器,Dalvik是Android 4.4以前的版本使用,ART是4.4以后的版本。

 

九、Android 代码是怎么执行的?

在 Android 中,Java 类被转换成 DEX 字节码。DEX 字节码通过 ART 或者 Dalvik runtime 转换成机器码。这里 DEX 字节码和设备架构无关。 Dalvik 使用 JIT(Just in time)编译而 ART 使用 AOT(Ahead of time)编译。

十、HAL层

HAL:HARDWARE ABSTRUCT LAYER,简单来说,就是对Linux内核驱动程序的封装,向上提供接口,屏蔽低层的实现细节。HAL 可定义一个标准接口以供硬件供应商实现,这可让 Android 忽略较低级别的驱动程序实现。

部分硬件厂商不愿意将自己硬件相关一些核心的东西开源出去,假如将对自己硬件的驱动程序全部放入内核空间驱动程序实现,那么必须遵循GPL协议,是必需开源的。有了HAL层之后,他们可以把一些核心的算法之类的东西的实现放在HAL层,而hal层位于用户空间,不属于linux内核,和android源码一样遵循的是appache协议,这个是可以开源或者不开的。

十一、Linux内核

Android驱动包含两部分,一部分是HAL层,另一部分是linux内核驱动 HAL层提供上层调用的接口,同时对接Linux内核,采用IOCTRL或者一些框架的形式来访问内核驱动 Linux内核提供各种驱动:USB,COM,WIFI,BT,CAMERA,AUDIO,FLASH

十二、AP和BP

通常来说一个Android手机包含两个处理器AP和BP

AP:Application Processor,运行操作系统和应用数据处理

BP:Baseband Processor,无线通信,信道调制,编码,包括通话,语音,短信数据业务,在此芯片上进行。

 

更多相关文章

  1. -----------Android(安卓)Support v4、v7、v13的区别和应用场景
  2. 由编译一个android开源项目, 学习如何解决AndroidStudio编译问题
  3. iWidsets公告
  4. android4.2 webkit 中的jni
  5. BlueStacks 进入 beta 1 阶段,给 Windows 带来了 45 万 Android(
  6. Android中使用Build获取当前系统SDK版本
  7. iWidsets公告
  8. Android(安卓)内核源代码交叉编译
  9. android studio 更新 Gradle错误解决方法

随机推荐

  1. android通话记录的查询与删除
  2. Android GridView的使用方法
  3. Android 5.X新特性详解
  4. Activity之间传递对象
  5. android通过USB的MTP模式下,禁止用户在根
  6. 我的Android之旅——UI界面六大布局之认
  7. android Can't create handler inside th
  8. Android中main.xml界面参数笔记
  9. android 2.3 wifi (二)
  10. [转]android animation的应用实例