学习目标

零、学习目标

一、概括

二、讲解

(一)安卓平台架构简述

1、Linux 内核

2、硬件抽象层

3、安卓运行时

4、原生 C/C++ 库

5、Java API 框架

6、系统应用

(二)安卓设备文件浏览器

1、启动设备文件浏览器

2、查看内存目录

3、查看外置存储卡

(三)安卓调试桥

1、查看连接的设备

2、查看设备连接状态

3、查看手机日志

4、查看所有应用包名

5、进入shell状态

6、杀死服务进程

零、学习目标

  1. 了解安卓平台架构
  2. 熟悉安卓设备文件浏览器
  3. 会使用安卓调试桥

一、概括

  • Android 是一种基于 Linux 的开放源代码软件栈,为各类设备和机型而创建,作为安卓开发者,应该了解安卓平台架构及其优点,还需要了解设备文件浏览器(Device File Explorer),另外,安卓调试桥也应该了解,利用它可以进入Linux内核进行一些操作。

二、讲解

(一)安卓平台架构简述

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

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

1、Linux 内核

  • Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。
  • 使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

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.fzy.test

内部文件查找

3、查看外置存储卡

  • 点开sdcard

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

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

  • 下载到F:\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

AndroidStudio1.4 安卓平台架构相关推荐

  1. 安卓学习笔记04:安卓平台架构

    文章目录 零.学习目标 一.安卓平台架构 (一)安卓平台架构简述 1.Linux 内核 2.硬件抽象层 (HAL) 3.安卓运行时(Android Runtime) 4.原生 C/C++ 库 5.Ja ...

  2. Android Platform Architecture 安卓平台架构

    Android Platform Architecture 安卓平台架构 Android is an open source, Linux-based software stack created f ...

  3. 安卓讲课笔记1.4 安卓平台架构

    文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)安卓平台架构简述 1.Linux 内核 2.硬件抽象层 3.安卓运行时 4.原生 C/C++ 库 5.Java API 框架 6.系统应用 ( ...

  4. 什么是平台架构?平台架构的用处有哪些?

    安卓平台架构 一.安卓平台架构简述 Android是一种基于Linux的开放源代码软件栈,以下是其平台架构所示图. Android系统采用分层架构的思想,架构清晰,层次分明,协同工作.Android的 ...

  5. 使用 Android NDK 的交叉编译工具链移植 C/C++ 项目到安卓平台

    什么是 NDK? Android NDK 是一套可以让开发者在安卓应用开发中使用 C/C++ 实现特定模块的工具集,不是所有应用都需要用到,但是正确地使用可以有效提高应用运行效率和安全性. 为什么要在 ...

  6. Faraday:微博广告分层实验平台架构

    策略可能需要不断地尝试,并进行合理地流量均匀分流,经过多轮线上 A/B test 实验迭代,才能形成最终的决策值.另外,广告平台上许许多多的策略,有的相互独立,有的相互影响,如何高效地进行大规模的并行 ...

  7. 直播云平台架构如何构建?

    本文根据4月26日 UCloud流媒体研发总监曾凯源于[KVM社区&UCloud技术微信群]线上分享内容整理而成.欢迎关注[KVM社区 & UCloud]线上系列分享 注:每一种架构在 ...

  8. [转]直播云平台架构如何构建? 附PPT

    来源:http://mt.sohu.com/20160505/n447773387.shtml 本文根据4月26日 UCloud流媒体研发总监曾凯源于[KVM社区&UCloud技术微信群]线上 ...

  9. 打造汽车“安卓平台”,大众或亲手干掉传统汽车产业

    干掉传统汽车产业的,很可能是大众,而不是特斯拉. \n 于无声处听惊雷. \n 2019年的日内瓦车展,看起来并没有传出太大的新闻.汽车世界的目光,依然被特斯拉的喧嚣所吸引. \n 然而,大众汽车展台 ...

最新文章

  1. jsonSuggest插件如何在使用前激活
  2. json 反序列化 父子类型_Jaskson精讲第7篇-类继承关系下的JSON序列化与反序列化JsonTypeInfo...
  3. php自定义弹窗,自定义弹窗Style样式
  4. php保存附件到指定服务器,如何在PHP中将电子邮件附件保存到服务器?
  5. 用FadingActionBar实现有头图的ActionBar
  6. [COCI2011-2012#7] KAMPANJA
  7. 删除百度贴吧上的内容
  8. python 正则表达式简介
  9. python快速编程入门课本中的名片管理器_Python-名片管理器
  10. Linux与网络服务(零)从零开始聊聊Linux相关概念(科普向)
  11. 局域网计算机如何传输文件,强烈推荐电脑同一个局域网传输文件的图文教程
  12. Python3之标准库
  13. js删除对象的某个属性
  14. 轻量级神经网络架构综述
  15. mysql数据库的超级管理员名称_MySQL数据库的超级管理员名称是______
  16. 大型情感连续剧,从焫鷄到咸鱼
  17. 中蜂几月份自然分蜂_蜜蜂一年自然分蜂几次?
  18. 大学计算机基础b上机考试题目,大学计算机基础上机考试题库
  19. Python实现斗地主
  20. 服务器重装系统之浪潮服务器

热门文章

  1. cf1281 F. Miss Punyverse
  2. 几个优秀的Wordpress主题汇总(精选免费WP主题)
  3. 巨建华:对未来越有信心,对现在越有耐心 |链捕手
  4. php mysql 星外_教程|ZKEYS公有云系统部署星外迁移程序
  5. 星外php mysql_PHP环境自动安装|星外PHP一键安装包下载 v5.0 For IIS_最火软件站
  6. angular 引入本地图片
  7. 被人伤害了,可以主张哪些赔偿
  8. PINDEL检测结构变异
  9. 青海推动牦牛青稞在内特色产业转型升级
  10. pytorch怎么加入环境变量_Pytorch源码编译简明指南