文章目录

  • 零、学习目标
  • 一、安卓平台架构
    • (一)安卓平台架构简述
      • 1、Linux 内核
      • 2、硬件抽象层 (HAL)
      • 3、安卓运行时(Android Runtime)
      • 4、原生 C/C++ 库
      • 5、Java API 框架
      • 6、系统应用
    • (二)安卓分层架构优点
  • 二、安卓设备监视器(ADM)
    • 1、启动安卓设备监视器
    • 2、查看DDMS的File Explorer
  • 三、安卓调试桥(ADB)
    • 1、ADB作用
    • 2、ADB操作演示
    • 3、利用adb杀死和启动服务进程
  • 四、课后作业
    • 1、利用百度脑图绘制安卓体系架构的思维导图
    • 2、按照讲课笔记,完成DDMS与adb基本操作
    • 3、设计用户登录窗口

零、学习目标

  1. 能说出安卓平台架构有哪几层
  2. 会使用安卓设备监视器,尤其是DDMS
  3. 会基本使用安卓调试桥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)
  1. data——内存目录
  2. 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/shared_prefs目录查看ContactsUpgradeReceiver.xml文件内容
  • 键入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(启动服务进程)

四、课后作业

1、利用百度脑图绘制安卓体系架构的思维导图

2、按照讲课笔记,完成DDMS与adb基本操作

3、设计用户登录窗口

  • 涉及的知识点

    1. 用到布局的嵌套实现复杂界面
    2. 居中对齐,利用线性布局的gravity属性
    3. 标签、编辑框、按钮三种控件
    4. 编辑框的提示信息,利用hint属性

安卓学习笔记04:安卓平台架构相关推荐

  1. Android学习笔记之Android平台架构和特性

    一.Android的平台架构及特性 Android系统的底层建立在Linux系统之上,该平台由操作系统,中间件,用户界面和应用软件4层组成.采用一种被称为软件叠层的方式进行构建. 1.应用程序层(Sy ...

  2. 【安卓学习笔记】安卓的事件处理

    安卓提供了两种方式的事件处理:基于回调的事件处理和基于监听的事件处理. 基于监听的事件处理 基于监听的事件处理一般包含三个要素,分别是: Event Source(事件源):事件发生的场所,通常是各个 ...

  3. 安卓学习笔记:安卓11访问/读写 Android/data 目录

    省流提示:采用android studio工具开发,记录一次低级的开发,避免以后忘记或者踩坑. 最近有个业余项目开发到一小半,过程中需要读写 Android/data目录的文件,采用常规的文件操作总是 ...

  4. 2020年安卓学习笔记目录

    文章目录 一.讲课笔记 二.安卓案例 三.安卓实训项目 四.学生安卓学习博客 五.安卓课后作业 (一)界面设计练习 1.制作登录界面 2.制作部队管理界面 3.制作灭火救援界面 4.制作交付界面 5. ...

  5. 安卓学习笔记07:事件处理、窗口跳转与传递数据

    文章目录 零.学习目标 一.三个基本控件 1.标签控件(TextView) 2.编辑框控件(EditText) 3.按钮控件(Button) 二.安卓事件处理机制 (一)安卓事件处理概述 (二)安卓事 ...

  6. xamarin学习笔记A19(安卓AIDL)

    (每次学习一点xamarin就做个学习笔记和视频来加深记忆巩固知识) 如有不正确的地方,请帮我指正. AIDL简介   AIDL(Android Interface Definition Langua ...

  7. 很low的安卓学习笔记(一、实用技巧)

    很low的安卓学习笔记(一.实用技巧) 一.学习了几天的实用技巧小总结: 1.规范的定义内容的格式: 2.一些快捷键 3.将xxx.xml布局改为Activity中可以调用的View视图 4.当左下角 ...

  8. 安卓学习笔记3——登录界面UI

    安卓学习笔记3--登录界面UI 一.登录界面UI 1.根据需求写UI 2.主活动 3.主活动调用的读写文件的工具类 4.效果展示 二.总结与改进 不足: 1.密码分割采用字符串:当密码和用户名包含该字 ...

  9. 安卓学习笔记之骚扰拦截

    安卓学习笔记之骚扰拦截 1.监听电话状态 2.检测来电号码是否匹配拦截条件 3.若匹配,则挂断电话 实例代码: 获取TelephonyManager 对象,并监听来电状态 TelephonyManag ...

最新文章

  1. Gradle入门系列(4):创建二进制发布版本
  2. LeetCode LRU Cache(最近最少使用缓存)
  3. java基础(七) 深入解析java四种访问权限
  4. STL:使用string、vector、complex和limits
  5. c语言二叉树学生成绩,二叉树C语言
  6. 适配器模式和装饰模式
  7. Mysql函数访问oracle,Oracle与MySql函数
  8. java 线程 事件_Java事件调度线程解释
  9. form表单提交中,确定和取消效果的实现
  10. java经典算法50题_JAVA经典算法50题
  11. 产品经理的主要工作职责
  12. FAN73893MX 350mA-650mA 高压600V 用于高压、高速驱动 MOSFET和IGBT 三相半桥栅极驱动 IC
  13. 计算机桌面下方叫什么,电脑最下面一排桌面的小图标不见了
  14. ssh怎么ftp上传文件到服务器,ssh ftp上传文件到服务器
  15. STM32驱动PCF8563,使用模拟IIC
  16. Eclipse创建C++工程并解决“Symbol 'std' could not be solved”
  17. 什么是linux云计算?用来做什么?
  18. 用cesium实现绘制标尺
  19. 2020年全国计算机二级考试大纲改变,2020年3月计算机二级考试大纲内容
  20. 手机制作安卓apk和android studio一样

热门文章

  1. 华为云ModelArts图深度学习,学习知识还能考取微认证
  2. 更适合Pythoner的标记语言Yaml学习总结
  3. 计算机应用无法打开,双击磁盘无法打开?_计算机应用_邹志强个人网站—(www.zouzhiqiang.com)...
  4. 红橙Darren视频笔记 筛选View 属性动画 Adapter模式 组合动画AnimatorSet 观察者模式(对比Android ListView) 练习
  5. 代数学笔记2: 域扩张(二)
  6. sql中如何统计各种零件的总数量_数据蒋堂 | SQL是描述性语言?
  7. 【java基础知识】判断字符串不为空
  8. 学习Scala:使用try-catch表达式处理异常
  9. Vue中computedmethodwatch的区别
  10. 向量距离计算 java_在机器学习中扮演着极为重要角色的向量