安卓平台架构

一、安卓平台架构简述

  • Android是一种基于Linux的开放源代码软件栈,以下是其平台架构所示图。

  • Android系统采用分层架构的思想,架构清晰,层次分明,协同工作。Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知。

1、Linux 内核

2、硬件抽象层

  • 硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

3、安卓运行时

  • 对于运行 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 Studio已经把Android Device Monitor从菜单栏里移除掉了,如果要查看已连接的安卓设备文件,需要使用设备文件浏览器(Device File Explorer)。

1、启动设备文件浏览器

单击View | Tool Windows | Device File Explorer
提示用USB连接设备或运行安卓虚拟机

运行程序,启动虚拟机

  • 再次启动设备文件浏览器

  • sdcard: secure digital card

  • permissions: 10位权限字符
    1位:文件类型(d:directory 目录;l:link 链接;-:普通文件)
    234位:表示文件所有者(owner/user)具有的权限(r——读;w——写;x——执行)
    567位:表示用户组成员(group)具有的权限(r——读;w——写;x——执行)
    8910位:表示非用户组成员(other)具有的权限(r——读;w——写;x——执行)
    从第2位到第10位,“-”表示不具有该权限。

2、查看内存目录

  • 点开data/data,找到我们运行的安卓程序:net.lh.test

3、查看外置存储卡

  • 点开sdcard

  • 如果我们开发一个音乐播放器,要播放存储卡上的音频文件,我们可以把音频文件上传到Music目录

  • 上传了一首mp3音频文件到music目录

  • 也可以将外置存储卡上的文件下载到本地电脑上

  • 下载到D:\Android目录

  • 查看下载成功的文件

三、安卓调试桥

  • ADB(Android Debug Bridge)工具,我们可以管理设备或手机模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shelI命令等等。实简而言说,就是连接Android手机与PC端的桥梁,- 可以让用户在电脑上对手机进行全面的操作。
  • 查看adb.exe的位置

1、查看连接的设备

执行命令:adb devices

2、查看设备连接状态

执行命令:adb get-state

  • 结果可能有三种情况:offline - 设备连接异常,device - 正常,unknown - 没有连接设备

  • 如果关闭模拟器,再执行该命令,就会报错

  • 为了后续操作,重启安卓应用

3、查看手机日志

  • Ctrl+C结束,可查看手机四个缓冲区日志,包括radio,system,main,event ,其中radio存放通信的日志,比如通话短信等;event是表示手机按键输出等事件日志等;main指的是手机的应用软件的日志,是应用层日志输出;system是系统组件日志。
    执行命令:adb logcat

4、查看所有应用包名

执行命令:adb shell pm list packages

5、进入shell状态

  • Android基于Linux内核,因此在shell状态下可以使用Linux的命令

  • 执行命令:adb shell

  • 执行命令:ls

  • 进入/data/data目录

  • 执行命令:ls

  • 执行exit命令,退出adb shell

  • 查看分辨率,执行命令:adb shell wm size

  • 输出电池信息,执行命令:adb shell dumpsys battery

  • 获取系统版本号,执行命令:adb shell getprop ro.build.version.release

6、杀死服务进程

  • 执行命令:adb kill-server

什么是平台架构?平台架构的用处有哪些?相关推荐

  1. 新思路保障网络安全 基于平台的网络安全架构体系

    新思路保障网络安全 基于平台的网络安全架构体系 新思路保障网络安全 基于平台的网络安全架构体系 如果说我们从技术点出发来建设运维管理平台系统.从业务应用的角度出发来设计应用管理策略,从整个IT管理出发 ...

  2. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  3. 一起谈.NET技术,发布NGuestBook(一个基于.NET平台的分层架构留言本小系统)

    发布NGuestBook的动机说明      大约在半年前,我在博客上发表了一个系列文章:<基于.NET平台的分层架构实战>.当时在讲解过程中用到了一个叫NGuestBook的案例,在那以 ...

  4. 基于.NET平台的分层架构实战(二)——需求分析与数据库设计

    基于.NET平台的分层架构实战(五)--接口的设计与实现 · 基于.NET平台的分层架构实战(四)--实体类的设计与实现 · 基于.NET平台的分层架构实战(三)--架构概要设计 · 基于.NET平台 ...

  5. 基于.NET平台的分层架构实战(一)——综述

    通过浏览博客园的文章发现,很多朋友对分层架构特别感兴趣,刚好我刚做完的毕业设计就是专门研究.NET平台上分层架构的(题目叫"基于.NET平台的分层架构与设计模式应用研究").通过做 ...

  6. 大型集团企业云管平台建设参考架构

    摘要:本文通过对不同的集团企业及国家机构IT治理组织架构提出华为云管平台集中部署.分布式部署.分散独立部署三种方式,实现集团企业IT云时代的治理管控诉求. 本文分享自华为云社区<[华为云Stac ...

  7. (转)微服务架构 互联网保险O2O平台微服务架构设计

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  8. 物联网大数据平台软件开发架构案例解析

    物联网大数据平台软件开发架构案例解析 有人说物联网是引领信息技术的第三次浪潮. 第一次浪潮是个人电脑的出现,开创了信息时代的第一次革命,此次浪潮成就了微软.IBM等巨头. 第二次浪潮是以信息传输为特征 ...

  9. linux中lamp架构搭建,Linux LAMP架构平台搭建

    LAMP架构 LAMP 架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态 Web 站点服务及其应用开发环境.LAMP 是一个缩写词,具体包括 Linux 操作系 ...

  10. X5档案-参加业务架构平台研讨会后记

    我一直工作在行业信息化领域,也就是大家常说的管理软件.有人说是玩增删改的,有人说是玩SQL的,也有人说是玩数据库的.当然,也有人折在了关系销售门槛外,也有人折在了被需求淹没累死耗尽,也有人折在了项目管 ...

最新文章

  1. eclipse下classes文件夹无法发布到tomcat的问题--tomcat发布慢的问题
  2. VTK:可视化之Lorenz
  3. 使用C++实现功能下载文件
  4. AI 到底是怎么「想」的?
  5. 双重for_测试双重图案
  6. Android中常见的MVC/MVP/MVVM模式
  7. 论文浅尝 | 基于多模态关联数据嵌入的知识库补全
  8. gc java root_C#技术漫谈之垃圾回收机制(GC)
  9. 工业机器人演示码垛和卸垛_「成果播报」流水线上的“专家”——智能拆垛装车机器人系统...
  10. 检索计算机中word文件的词,电脑word搜索工具
  11. java 自动生成密码_java 自动生成密码
  12. 技术沙龙之IOS相机管理
  13. C语言手机通讯录系统
  14. base64 decode java_Java实现Base64编解码
  15. 线下停摆,线上狂欢,疫情下“云健身”火了!
  16. 利用python open-cv aimageio完成avi png mp4 gif间的转换
  17. 《PTA——拼题A》之第1016题
  18. 实现支付宝全额退款和部分退款功能
  19. (2)组合数学-拉丁方
  20. 50万中国人数据:每天上厕所超过一次,心衰风险增加33%

热门文章

  1. HTTPS证书转换成PEM格式
  2. linux卸载kodi,在Ubuntu 18.04上,如何安装Kodi
  3. centos php 开启libgdgd_linux gd
  4. 怎样在网上赚钱啊,小编告诉你6种赚钱方式!
  5. 阻止远程截屏_2020年创建优质技术截屏,演示和远程会议指南
  6. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)
  7. 物理建模钢琴-Modartt Pianoteq Pro v6.7.0 WiN
  8. 介绍6款超实用的抖音数据分析工具!
  9. mysql 删除一条数据sql语句_sql删除语句
  10. vue 具名插槽用法