安卓讲课笔记1.4 安卓平台架构
文章目录
- 零、学习目标
- 一、导入新课
- 二、新课讲解
- (一)安卓平台架构简述
- 1、Linux 内核
- 2、硬件抽象层
- 3、安卓运行时
- 4、原生 C/C++ 库
- 5、Java API 框架
- 6、系统应用
- (二)安卓设备文件浏览器
- 1、启动设备文件浏览器
- 2、查看内存目录
- 3、查看外置存储卡
- (三)安卓调试桥
- 1、查看连接的设备
- 2、查看设备连接状态
- 3、查看手机日志
- 4、查看所有应用包名
- 5、进入shell状态
- 6、杀死服务进程
- 三、归纳总结
- 四、上机操作
零、学习目标
- 了解安卓平台架构
- 熟悉安卓设备文件浏览器
- 会使用安卓调试桥
一、导入新课
- 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.hw.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
三、归纳总结
- 回顾本节课所讲的内容,并通过提问的方式引导学生解答问题并给予指导。
四、上机操作
- 形式:单独完成
- 题目:完成设备文件浏览器和adb基本操作
- 要求:按照讲课笔记完成设备文件浏览器和adb基本操作
安卓讲课笔记1.4 安卓平台架构相关推荐
- 安卓讲课笔记4.3 安卓手势编程
文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)安卓手势操作原理 (二)安卓手势类与接口 1.MotionEvent 2.GestureDetector 3.OnGestureListene ...
- 安卓讲课笔记4.2 安卓触摸事件
文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)安卓触摸事件概述 1.触摸分类 (1)单点触摸 (2)多点触摸 2.触摸动作 3.触摸监听器 4.触摸方法 5.触点个数与坐标 6.安卓触摸事 ...
- 安卓学习笔记04:安卓平台架构
文章目录 零.学习目标 一.安卓平台架构 (一)安卓平台架构简述 1.Linux 内核 2.硬件抽象层 (HAL) 3.安卓运行时(Android Runtime) 4.原生 C/C++ 库 5.Ja ...
- Android Platform Architecture 安卓平台架构
Android Platform Architecture 安卓平台架构 Android is an open source, Linux-based software stack created f ...
- AndroidStudio1.4 安卓平台架构
学习目标 零.学习目标 一.概括 二.讲解 (一)安卓平台架构简述 1.Linux 内核 2.硬件抽象层 3.安卓运行时 4.原生 C/C++ 库 5.Java API 框架 6.系统应用 (二)安卓 ...
- 基于android平台的云记事本软件,安卓记事本毕业论文--基于Android平台记事本的设计与实现...
安卓记事本毕业论文--基于Android平台记事本的设计与实现 毕业设计(论文) 题目基于 Android 平台记事本的设计与实现 姓 名 学 号 系 (院) 信息工程系 班 级 指导教师 职 称 讲 ...
- win10 android8,安卓平板刷Win8 ARM平台将支持Win10
原标题:安卓平板刷Win8 ARM平台将支持Win10 在本次台北2015电脑展中,我们首次发现了一款采用ARM架构的windows平板电脑.众所周知,windows平板一直以来仅能安装在x86架构的 ...
- 安卓讲课笔记1.1 安装Android Studio
文章目录 零.学习目标 一.导入新课 二.新课讲解 (一)Android Studio概述 (二)下载Android Studio 1.Android Studio下载地址 2.Android Stu ...
- React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台
React Native 模仿网易云音乐手机客户端,兼容安卓和IOS两个平台. GitHub 完整源码地址https://github.com/yezihaohao/NeteaseCloudMusic ...
最新文章
- python如何进入文件夹_python之文件的读写和文件目录以及文件夹的操作实现代码...
- jq调用android方法,Android端JQueryMobile使用教程(一)
- 51单片机之音乐代码
- php中$stu_by,PHP基础案例二:计算学生年龄
- stl之queue队列容器
- python结构体数组传出接收c动态库_使用Python向C语言的链接库传递数组、结构体、指针类型的数据...
- 锅炉的计算机控制系统设计,余热锅炉计算机控制系统设计与开发
- 2370. 最长理想子序列(每日一难phase2--day6)
- vue+element+springboot前后端分离项目整合pageoffice实现在线编辑Word和Excel跟签章等
- Screen Snapshot for Mac(屏幕截图工具)
- CMU 15213:attack实验
- 用网络求t图的几篇论文框架图
- 上传附件,附件类型问题
- li+li:before是什么意思
- 猿学~Google I/O 最全记录,看完我们睡不着了!
- idea如何创建工作空间和项目
- c语言程序设计答案第6章,C语言程序设计答案(黄保和编)第6章
- 2022-2-24 MIT 6.268 lab:Booting PC Part 3: The Kernel —— exercise7-8
- 基于Cohesive单元的二维水力压裂
- 软件工程毕业设计课题(89)微信小程序毕业设计PHP医院预约挂号小程序系统设计与实现
热门文章
- Scrapy入门教程(2)——保存数据
- 理解“像元”、“波段”与“通道”
- 阅读Skeleton.css源码,改善睡眠质量(尽管它只有419行代码)
- 入门网安学习之路第一天
- [渝粤教育] 山东体育学院 体育教学论 参考 资料
- C语言中的 |= 意思
- Jquery ajax, Axios, Fetch区别之我见 https://segmentfault.com/a/1190000012836882
- Word,Excel的文件如何对比.新旧版本
- 把超星阅览器的文件转换为PDF文件
- yii2.0 中文手册 php,Yii2.0 高级版开发指南