一、什么是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,无线通信,信道调制,编码,包括通话,语音,短信数据业务,在此芯片上进行。

 

GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐