安卓系统框架介绍(安卓常用框架)

一、什么是Android?Android是由谷歌公司开发的一种基于Linux的开源的操作系统。——源码地址1:https://android.googlesource.com/——源码地址2:http://androidxref.com/起初专为移动设备开发的一个操作系统,如手机,平板电脑,车载系统,智能电视等。Android第一个版本2008年11月发布,至今有超过…

大家好,又见面了,我是你们的朋友全栈君。

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

安卓系统框架介绍(安卓常用框架)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/129739.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 恐怖黎明修改器|恐怖黎明十四项修改器小斧头版下载 v1.4最新版

    恐怖黎明修改器|恐怖黎明十四项修改器小斧头版下载 v1.4最新版点击下载来源:恐怖黎明十四项修改器小斧头版v1.4最新版恐怖黎明修改器是针对一款高燃的硬盒制游戏《恐怖黎明(GrimDawn)》量身打造的游戏辅助工具,通过它可让你随心所欲的修改游戏设定,把控好游戏难度,让你体验到最酸爽的游戏乐趣。它为你带来了HP不减、无技能CD、MP不减、最大攻速、无限虔诚点等十四项十分好玩的游戏辅助功能,再次踏入这是非之地,原先那些欺负的野蛮BOOS将轻易的拜倒在你的…

    2022年5月5日
    2.9K
  • eclipse运行java程序_如何在Eclipse中运行简单的Java程序?「建议收藏」

    eclipse运行java程序_如何在Eclipse中运行简单的Java程序?「建议收藏」正如您可能从问题本身可以理解的那样,我是Java的新手。我进行了一个练习,编写一个Java程序,该程序接收一个字符,将其打印并输出Unicode表中的下一个字符。现在,我有解决此问题的方法:publicstaticvoidmain(String[]args){charc=args[0].charAt(0);charc1=(char)(c+1);System.out.prin…

    2022年7月8日
    20
  • C语言中数据的输出格式有哪些?

    C语言中数据的输出格式有哪些?C语言中数据的输出格式有哪些?(1)d(或i)格式符。用来输出十进制整数,有以下几种用法:①%d,按整型数据的实际长度输出。②%md,m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。③%ld(%mld也可),输出长整型数据。例如:longa=123456;printf("%ld",…

    2022年7月24日
    29
  • MySQL日期格式化

    MySQL日期格式化示例date_format(now(),’%Y-%m-%d%H:%i:%S’)点位符详解%Y:年,4位%y:年,2位%M:月名%m:月,数值(00-12)%D:带有英文前缀的月中的天%d:月的天,数值(00-31)%e:月的天,数值(0-31)%H:小时(00-23)%h:小时(01-12)%I:小时(01-12)%i:分钟,数值(00-59)%S:秒(00…

    2022年6月3日
    41
  • 易语言调用大漠把血蓝内力体力转化为进度条

    易语言调用大漠把血蓝内力体力转化为进度条把游戏角色的体力、血值、内力、经验通过进度条组件动态读取显示出来,并且通过api函数SendMessage来实现进度条颜色的变化,这里我们设置了血,体力,内力,经验的不同颜色,会根据游戏时时变化百分比例,调用大漠的OCR先把数值读出来,然后换算成进度调的百分比。第18课511遇见易语言大漠内力体力判断时时显示易语言源码:.版本2.子程序体力变化.局部变量str,文本型.局部变量a,双精度小数型.局部变量b,双精度小数型.局部变量c,双精度小数型.局.

    2022年7月13日
    19
  • ArasPLM安装

    ArasPLM安装1 首先 Windows 服务器已经安装 IIS 和 NETFramework 7 1 至少 4 5 版本以上 2 安装 SQLServer 上一篇博客中有介绍如何安装 3 申请 License https www aras com support LicenseKeySe 4 下载安装 https www aras com support downloads 5 汉化

    2025年6月5日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号