安卓手机APP开发__平台的架构

news2024/11/15 12:24:08

安卓手机APP开发__平台的架构

 

目录

概述

安卓软件栈

Linux内核

硬件抽象层(HAL)

安卓运行时

原生的C/C++代码库

Java API框架

系统APP


概述

安卓是一个开源的,基于Linux的软件栈,它创建一个设备和形式因素的很宽的矩阵。
下图展示了安卓平台的所有的主要的组件


安卓软件栈


Figure 1. The Android software stack.

Linux内核

安卓平台的基础是Linux内核。例如,安卓的运行时依赖于Linux内核的功能。
例如,线程和底层的内存管理。

使用Linux内核让安卓利用了关键的安全特性,让设备制造商针对一个知名的
Linux内核来开发硬件驱动。

硬件抽象层(HAL)

硬件抽象层(HAL)提供了标准的接口,来向高层的Java API框架提供硬件设备的功能。
硬件抽象层(HAL)由多个库的模块组成,每一个库模块都为一个特定的硬件组件类型
实现了一个接口,例如,照相机或者是蓝牙模块。当框架的API做了一个调用,来读取
硬件设备时,安卓系统加载了那个硬件组件的库模块。


安卓运行时

对于设备运行在安卓版本5.0 (API 级别 21)或者更高时,每一个APP运行在它自己的
进程中,在安卓的运行时中有自己的实例。安卓运行时是被写成在在很少的内存上运行
时多个虚拟机器,方法是执行Dalvik可执行格式的文件(DEX),这是一个字节码的格式
针对安卓进行了特殊的设计,对于很少的内存中运行进行了优化。构建工具是d8,它编译
Java源代码为DEX字节码,这个字节码能运行在安卓的平台上。

安卓运行时的一些主要的特性包括如下的内容:

预先编译和即时编译
优化过的垃圾回收
在安卓版本9以及更高,一个APP软件包的DEX的优化
有更紧揍的机器码的文件
更好的调试支持,包括一个专用的采样检查器,详细的诊断异常和崩溃报告,
为了监视特定的域的检查点的设置能力

在安卓5之前,Dalvik是安卓的运行时。如果你的APP在安卓运行时运行的很好,
那么它也能在Dalvik运行的好,但是相反可能是不行的。

安卓也包括了一些核心的运行时库,它提供了Java编程语言的绝大部分的功能,
包括了java8的特性,这也是Java API 框架所使用的。

原生的C/C++代码库

许多核心的安卓系统组件和服务,例如安卓运行时,和硬件抽象层都从原生的代码构建出来的,
需要由C和C++写的原生的代码库.安卓平台提供Java框架API来提供这些原生库中的功能给APP
例如,你能通过使用安卓框架的Java OpenGL API来读取OpenGL ES,进而支持在你的APP中
绘制和操纵2D和3D的图形.

如果你正在开发一个APP,需要有C或者是C++的代码,你能使用安卓的NDK来直接读取这些原生的
平台代码库中的一些功能.

Java API框架

通过使用Java编写的API,你能利用安卓操作系统的所有的特性集.这些API形成了你需要的
构建代码块,用来创建安卓的APP,通过简化核心代码的重用,模块化系统组件和服务,包括
如下的内容:

一个富于扩展的视图系统,你能用这个系统来构建一个APP的用户界面,包括列表,表格,文本框
按钮,甚至是一个内嵌的网络浏览器.

一个资源管理器,提供对非代码资源的读取,例如本地化的字符串,图形,和布局文件

一个通知管理器,它能在一个状态条中显示所有的APP的定制化的告警信息.

一个活动管理器,它管理APP的生存周期和提供一个常用的导航返回栈.

内容提供器,它允许一个APP从其它的APP那里读取数据,例如通讯录APP,
或者是共享它们自己的数据.


系统APP

安卓带来了一系列的核心的APP,例如,电子邮件,短消息,日历,网络浏览器,通讯录,等.
平台自带的APP与用户选择安装的APP之间没有特殊的状态.所以,第三方APP能成为用户的
默认的浏览器,短消息,甚至是默认的键盘.一些例外是有的,例如,系统设置APP.

系统APP功能都作为用户的APP,与开发者自己的APP一样提供关键的功能.例如,如果你
要你的APP发送短消息,你不需要自己构建这个功能.你能调用任何一个短消息的APP,来
发短消息到你指定的收件人.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1702358.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis-Plus 从入门到精通

MyBatis-Plus 从入门到精通 前言快速入门创建一个SpringBoot项目导入依赖配置数据库创建一个实体类创建一个mapper接口在SpringBoot启动类上配置mapper接口的扫描路径在数据库中创建表编写一个SpringBoot测试类 核心功能注解CRUD接口Mapper CRUD接口Service CRUD 接口条件构造器…

C字符串和内存函数介绍(二)——长度不固定的字符串函数

前面我们一起学习了strlen,strcpy,strcmp,strcat的使用以及它们的模拟实现,它们的特点是你传参的时候,传过去的是数组首元素的地址,然后无论是计算长度,实现拷贝,相互比较还是进行追…

布局、基本控件

一、as布局 布局文件 layout drawable 设置背景的文件 新建drawable-xhdpi文件 — 放一些item或图片 values: theme app风格,string 字符串(相当于宏定义,可以引用),colors颜色配置(可以引用…

新闻稿推广策略有哪些?建议收藏

新闻稿推广是一种有效的公关工具,它可以帮助企业或组织传递信息、提升品牌知名度、建立权威形象,并最终促进销售。新闻稿推广策略有哪些?接下来伯乐网络传媒就来给大家分享一下。 确定目标受众:在撰写新闻稿之前,明确你…

MATLAB导入导出Excel的方法|读与写Excel的命令|附例程的github下载链接

前言 前段时间遇到一个需求:导出变量到Excel里面,这里给出一些命令,同时给一个示例供大家参考。 MATLAB读/写Excel的命令 在MATLAB中,可以使用以下命令来读写Excel文件: 读取Excel文件: xlsread(filen…

文件加密软件排行榜前十:好用的文件加密软件推荐

文件加密软件是企业保护数据安全的有效手段。 选择文件加密软件时,不仅要考虑加密强度,还要兼顾易用性、兼容性及是否满足特定需求。 下面小编将推荐几款好用的文件加密软件,比如以下十款软件排行榜。 以下十款软件各有所长,有…

全能集成开发平台Team·IDE

三甲医院的床位太难等了。反正也是小手术,老苏周五在附近找了家二甲医院,幸运的是,门诊迅速为我开具了入院证。周六早晨就接受了手术,周日挂了一天水,周一下午就出院了。准备在家先休息两天。 2~4 周之后把支架取出来…

数据挖掘实战-基于余弦相似度的印度美食推荐系统

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

机器人非线性控制系统:相关知识点整理

机器人控制系统本质上是一个非线性系统。引起机器人非线性因素很多,机器人的结构、传动件、驱动元件等都会引起系统的非线性。 机器人控制系统是由多关节组成的一个多变量控制系统,且各关节间具有耦合作用。具体表现为某一个关节的运动,会对…

全球AI新闻速递527

📢📢📢📣📣📣 哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝 一位上进心十足的【Java ToB端大厂…

一文讲清楚SpringBoot项目打包jar后运行报错template might not exist - 第514篇

历史文章(文章累计500) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 《…

机器人回调接口完善

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 免责声明:该工具仅供学习使用,禁止使用该工具从事违法活动,否则永久拉黑封禁账号!!!本人不对任何工具的使用负责&am…

京东面试:SpringBoot同时可以处理多少请求?

面试题大全:www.javacn.site Spring Boot 作为 Java 开发中必备的框架,它为开发者提供了高效且易用的开发工具,所以和它相关的面试题自然也很重要,咱们今天就来看这道经典的面试题:Spring Boot 同时可以处理多少个请求…

拥塞控制的自适应 AQM 探索

拥塞控制面临的几类问题: 网络拥塞时,大象流如何为微突发让路;网络拥塞时,如何只惩罚造成拥塞的流量;网络拥塞时,如何确保小流量不受影响。 既然不想在 host 将流按照大小分类,嫌没意义&#…

内存泄漏案例分享4-异步任务流内存泄漏

案例4——异步任务内存泄漏 异步任务,代指起子线程异步完成一些数据操作、网络接口请求等,通常会使用以下API: Runnbale,Thread,线程池RxJavaHandlerThread 而这些异步任务很有可能操作内存泄漏,下面我们以Rxjava为…

SaaS增长三大策略:从用户获取到留存转化的全链路解析

在SaaS(软件即服务)行业中,增长是企业成功的关键。然而,要实现持续增长并非易事,需要一套从用户获取到留存转化的全链路策略。 首先,用户获取是SaaS增长的第一步。 这要求企业明确目标用户群体&#xff0…

什么是HTTP代理?适用于哪些场景?

HTTP代理是一种网络代理服务器,它主要用于处理HTTP协议的请求和响应。HTTP代理充当客户端(如浏览器)和目标服务器之间的中介,允许客户端通过代理服务器来发送HTTP请求,并接收来自服务器的响应。HTTP代理可以分为正向代…

01-内网基础知识

内网基础知识 一、什么是内网? 内网也指局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内的历程安排、电子邮…

牛顿迭代法与二分法求根

牛顿迭代法 求平方根 数学迭代式&#xff1a;x[n1] (x[n] a/x[n])/2. 初始化&#xff1a;x[0] a/2. 保持&#xff1a;x[n1] (x[n] a/x[n])/2. 终止条件&#xff1a;|x[n1]-x[n]| < 0.00001时&#xff0c;迭代终止。 代码&#xff1a; #include "stdio.h&qu…

Web前端开发技术、详细文章、(例子)html 列表、有序列表、无序列表、列表嵌套

目录 列表概述 列表类型与标记符号 无序列表 语法&#xff1a; 语法说明&#xff1a; 无序列表标记的 type 属性及其说明 代码解释 有序列表 基本语法 属性说明 1、列表 o1标记的属性 2、列表项li标记的属性 有序列表 o1标记的属性、值 代码解释 列表嵌套 基本…