文章目录
零、学习目标
- 能说出安卓平台架构有哪几层
- 会使用安卓设备监视器,尤其是DDMS
- 会基本使用安卓调试桥ADB进入安卓的Linxu内核
一、安卓平台架构
- Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建
- Android平台构成的主要组件
(一)安卓平台架构简述
1、Linux 内核
- Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。
- 使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。
2、硬件抽象层 (HAL)
硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。
3、安卓运行时(Android Runtime)
- 对于运行 Android 5.0(API 级别 21)或更高版本的设备,每个应用都在其自己的进程中运行,并且有其自己的 Android Runtime (ART) 实例。ART 编写为通过执行 DEX 文件在低内存设备上运行多个虚拟机,DEX 文件是一种专为 Android 设计的字节码格式,经过优化,使用的内存很少。编译工具链(例如 Jack)将 Java 源代码编译为 DEX 字节码,使其可在 Android 平台上运行。
- 在 Android 版本 5.0(API 级别 21)之前,Dalvik 是 Android Runtime。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。
- Android 还包含一套核心运行时库,可提供 Java API 框架所使用的 Java 编程语言中的大部分功能,包括一些 Java 8 语言功能。
4、原生 C/C++ 库
- 许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。
- 如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。
5、Java API 框架
- 您可通过以 Java 语言编写的 API 使用 Android OS 的整个功能集。这些 API 形成创建 Android 应用所需的构建块,它们可简化核心模块化系统组件和服务的重复使用,包括以下组件和服务:丰富、可扩展的视图系统,可用以构建应用的 UI,包括列表、网格、文本框、按钮甚至可嵌入的网络浏览器;资源管理器,用于访问非代码资源,例如本地化的字符串、图形和布局文件;通知管理器,可让所有应用在状态栏中显示自定义提醒;Activity 管理器,用于管理应用的生命周期,提供常见的导航返回栈;内容提供程序,可让应用访问其他应用(例如“联系人”应用)中的数据或者共享其自己的数据;开发者可以完全访问 Android 系统应用使用的框架 API。
6、系统应用
- Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。
- 系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。
(二)安卓分层架构优点
- Android系统采用分层架构的思想,架构清晰,层次分明,协同工作。
- Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知。
二、安卓设备监视器(ADM)
Android Device Monitor是 Android 开发环境中虚拟机调试监控服务。 它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat
、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
1、启动安卓设备监视器
- 进入安卓SDK目录里的tools子目录,找到monitor.bat
- 双击monitor.bat,启动安卓设备监视器
- 启动安卓应用【HelloWorld】
- 查看安卓设备监视器,查看文件浏览器(File Explorer)与日志捕获(LogCat)
2、查看DDMS的File Explorer
- DDMS(Dalvik Debug Monitor Service)
- data——内存目录
- mnt——外存目录
-
单击data,目前无法查看其内容
-
模拟器目前采用Android 7.0(
API 24
),改成Android 6.0(API 23
)
-
点开data/data,找到我们运行的安卓程序:net.hw.helloworld
-
屏幕截图的最后一行就是我们自己的安卓应用:net.hw.helloworld
-
单击mnt,查看其内容
-
sdcard: secure digital card
-
permission: 10位权限字符
1位:文件类型(d
:directory 目录;l
:link 链接;-
:普通文件)
234位:表示文件所有者具有的权限(r
——读;w
——写;x
——执行)
567位:表示用户组成员具有的权限(r
——读;w
——写;x
——执行)
8910位:表示非用户组成员具有的权限(r
——读;w
——写;x
——执行)
从第2位到第10位,“-”表示不具有该权限。
三、安卓调试桥(ADB)
1、ADB作用
利用adb shell进入Linux内核进行相关操作。
2、ADB操作演示
- 启动DOS,进入adb程序所在目录
D:\Android\sdk\platform-tools
- 输入adb shell命令,出现命令提示符
#
(如果是Android 7.0,那么提示符就是$
)
- 进入/data/data目录
- 查看该目录下的内容
- 进入data/data/com.android.providers.contacts目录
利用 cd 命令修改当前目录
利用 ls 命令查看当前目录下的文件信息
然后再利用 cat 命令查看文本文件内容
- 键入exit命令,退出adb shell
3、利用adb杀死和启动服务进程
遇到问题:The connection to adb is down, and a severe error has occured.
- 首先关闭Android Studio集成开发环境
- 启动DOS,进入安卓SDK的platform-tools目录
- 键入adb kill-server (杀死服务进程)
- 再输入 adb start-server(启动服务进程)