【译】Android 平台架构

Android 系统是一个开源的基于Linux内核的软件堆叠,专为各种设备和外形而设计。

下图展示了 Android 平台的主要组件:

 

 

Linux 内核


Android 平台是以 Linux 内核为基础的。比如Android Runtime (ART) 就是依赖 Linux 内核来实现如线程、低级内存管理等底层功能。

在 Linux 内核基础上,Android 可以使用现成的关键安全特性,各设备制造商可以在知名内核上开发设备驱动程序。

 

Hardware Abstraction Layer(HAL)硬件抽象层


硬件抽象层(HAL)提供一套标准接口,将设备硬件功能暴露给更高级别的Java API 框架。

硬件抽象层由许多库组成,每个库实现了特定类型硬件模块的接口,比如camera 或bluetooth 模块。当框架API 调用访问设备硬件时,Android 系统将加载这种硬件模块对应的库。

 

Android Runtime(ART)运行时


当设备运行 Android 5.0 或以上版本时,每个app 都运行在自己的进程中,并且拥有自己的ART 实例。

编写ART 是为了在小内存的设备上通过执行DEX 文件运行多个虚拟机,且专门为Android 设计了字节码格式,对低内存占用进行了优化。

使用如Jack 的编译链,可以将Java 代码编译成能运行在Android 平台上的DEX 字节码。

一些ART 的主要特性:

  • 提前编译(ahead-of-time AOT)和即时编译(just-in-time);

  • 优化的垃圾回收机制(GC);

  • 在Android 9 及更高版本,可以将app 包的DEX 文件转换成更紧凑的机器代码;

  • 更好的调试支持,包括专用的采样分析器,详细的异常诊断和崩溃报告,还可以对特定字段设置观察点。

 

对于Android 5.0 之前的版本,Dalvik 是Android runtime。如果你的app可以运行在ART 上,那么也可以运行在Dalvik 上,反之可能不行。

Android 还包括一组核心运行时库,它们提供了Java 编程语言的大部分功能,包括Java API 框架使用的一些 Java 8 语言功能。

 

Native C/C++ Libraries


Android 系统的许多核心组件和服务,如ART 和HAL,都是由native 代码构建来的,这些代码需要使用由C/C++ 编写的native 库。

Android 平台为这些native 库提供了Java 框架层的API 供app 使用。

例如,你可以通过Android 框架的 Java OpenGL API 来访问OpenGL ES,从而使你的app 支持2D 和3D 图形的绘制和操作。

如果你正在开发一款需要使用C/C++ 代码的App,你可以使用Android NDK 在你的native 代码中直接访问native 平台库。

 

Java API Framework


Android 系统所提供的全部特性都可以通过Java 编写的APIs 来使用,这些APIs 通过简化核心、模块化系统组件和服务的复用,成为创建Android apps 的基本要素,包括以下内容:

  • 一个丰富的可扩展的View 系统,提供了lists,grids,text boxes,buttons 甚至有可嵌入的web 浏览器,供你构建一个app 的UI;

  • 一个资源管理器,可用来访问非代码的资源文件如字符串,图片,布局文件;

  • 一个通知管理器,供所有app 在状态栏显示自定义通知;

  • 一个Activity 管理器,管理app的生命周期,提供一个通用的导航返回栈;

  • 内容提供者,使一个app 可以访问其他app 的数据,如通讯录app,或者可以共享它们拥有的数据;

开发者可以像Android 系统应用一样访问相同的framework API。

 

System Apps


Android 系统默认带有一些核心的app,如email,短信,日历,浏览器,通讯录等。

自带的应用无区别于用户安装的应用,所以第三方应用也可以成为用户默认的浏览器、短信、甚至输入法(一些特殊的app除外,如系统设置app)

系统app即可当作普通app使用,也可以供开发者在他们自己的app中通过调用使用。

如果你的app想要发送一条短信,你大可不必自己实现这个功能,你可以通过调用已经安装的短信app 来向您指定的收件人发送信息。

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值