android 基础
岁月斑驳7
好好学习,天天向上!
展开
-
android 内存使用详情查询的几种方法
一. /proc/meminfoandroid /proc/ 目录下为我们提供了操作系统几乎所有的状态信息,当然也包含系统的内存使用信息,下面列举了一些对应内存使用情况的目录信息:/proc/meminfo 机器的内存使用情况/proc/pid/maps pid 为进程号,显示当前进程所长用的虚拟地址cat /proc/pid/statm ...原创 2018-07-18 11:02:22 · 9032 阅读 · 0 评论 -
Android 系统 ANR 分析详解
什么是 ANRANR 产生的原因ANR 出现流程分析发生 ANR 如何定位如何避免和解决 ANR附 Google 官网说明链接:Keeping your app responsive1. 什么是 ANRANR:Application Not Responding,即应用无响应为用户在主线程长时间被阻塞Android 系统自身提供的一种检测机制-> ANR 的类型...原创 2019-03-08 10:30:32 · 6292 阅读 · 3 评论 -
Android HIDL HAL 接口定义语言详解
1. HIDL 概述在 Andoird 8.0 版本框架代码中,加入了 HIDL(HAL 接口定义语言),HIDL 的出现是为了将用户层和 HAL 层分割开,它指定了 HAL 和用户之间的接口,让用户能够替换 Android 框架,而无需重新编译 HAL,以便让厂商能够以更低的成本、更快速地将设备更新到新版 Android 版本中。通俗的来说,HIDL 设计了一套通过的框架接口,将 HAL 层...原创 2019-03-11 17:09:41 · 22433 阅读 · 6 评论 -
android zygote 进程分析
1. 概述在 Android 系统中,所有的应用程序以及系统服务进程 SystemService 都是由 zygote 进程孕育 (fork) 出来的。创建 java 虚拟机,加载系统资源应用程序启动过程中负责 fork 出子进程在 Android 应用程序启动时,ActivityManagerService 会通过 socket 与 zygote 进程进行通信,请求它 fork 一个子进...原创 2019-02-28 16:35:58 · 725 阅读 · 0 评论 -
android HAL 硬件抽象层
1. 开发 Android 硬件抽象层1.1 HAL 层模块编写规范Android 系统的硬件抽象层以模块的形式来管理各个硬件访问接口。每一个硬件模块都对应有一个动态链接库文件。在系统内部,每一个硬件抽象层模块都使用结构体 hw_moudle_t 描述,而硬件设备则使用结构体 hw_device_t 来描述。下面分别描述硬件抽象层模块文件的命令规范以及结构体 hw_moudle_t 和 hw...原创 2019-02-28 16:34:14 · 1443 阅读 · 0 评论 -
理解 android 编译系统
前言Android 编译系统用来编译 Android 系统、Android_SDK 以及相关文档。该系统主要由编译文件(mk 文件)、Shell 脚本以及 Python 脚本组成,其中最主要的是 Make 文件众所周知,Android 是一个开源的操作系统。Android 的源码中包含了大量的开源项目以及许多的模块。不同产商的不同设备对于 Android 系统的定制都是不一样的。如何将这些项...原创 2019-01-31 10:45:29 · 1058 阅读 · 1 评论 -
理解和使用 systrace
1. 概述systrace 是 android4.1 中新增的性能数据采集和分析工具,它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger、WindowManagerService、Framework关键模块、服务、View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。systrace 允许你监视和跟踪 android 系统的行为,它会告诉你系统...原创 2019-01-31 09:32:50 · 3064 阅读 · 0 评论 -
Android P 系统新特性概述
1. 引言2018 年 3 月 8 日,谷歌发布了 Android P 的预览版,初步来看给感觉这次大版本似乎并没有什么改变。接下来,将从系统 Treble、System、Framework、Runtime、Security 等多方面来解读一下 Android P 的变化。2. Treble 计划Treble 计划是一个非常重要的变革,对系统层面的影响很大。Google 每发布一个 Andr...原创 2019-01-16 10:02:08 · 2003 阅读 · 0 评论 -
开源 XmlParser expat 使用介绍
1. 概述expat 是使用 C 所写的 XML 解析器,采用流导向的方式(stream-oriented)解析 XML 文件,我们需要首先向解析器注册 callback 函数,在传入文档解析时,对于解析器能够识别的文档部分,它会调用适当的 callback 动作进行解析(在已注册的前提下)。被解析文档是分块传给解析器的,因此在你全部传入文档之前就已经开始解析了。expat 可以分析非常大的...原创 2019-01-24 19:46:16 · 2829 阅读 · 0 评论 -
Android 8.1 开机流程分析(2)
上一篇中讲了 init 进程启动的第一阶段,也就是 init 进程的内核态执行,主要包含的工作内容有: - 挂载分区 dev、system、vendor 等 - 创建设备节点及设备节点热插拔事件监听处理 (ueventd) - 创建一些关键目录、初始化日志输出系统 - 启用 SELinux 安全策略本章节的内容为 init 进程第二阶段执行的内容,也称为 init 进程的用户态执行。...原创 2018-08-24 11:23:39 · 4016 阅读 · 1 评论 -
android 8.1 属性服务源码详解
一、 概述我们知道,在 windows 平台中有一个叫注册表的东西,注册表可以存储一些类似 key/value 的键值对。一般来说,系统或某些应用程序会把自己的一些属性存储在注册表职工,即便系统重启或应用程序重启,它还能根据之前在注册表中设置的属性,进行相应的初始化工作。Android 平台提供了一个类似的机制,称之为属性服务(property service),应用程序可以通过这个属性机...原创 2018-08-27 17:16:22 · 4106 阅读 · 1 评论 -
Android 8.1 开机流程分析(1)
1. 启动过程概述 图:android_boot_process学习任何软硬件系统,研究系统启动过程都是一种非常有效地起步手段。上面的这张图可以帮助理解 Android 系统的启动过程。(1) Boot ROM 阶段Android 设备上电后,首先会从处理器上 ROM 的启动引导代码开始执行,片上 ROM 会需找 Boot loader 的代码,并加载到内存中。这一步由”芯片...原创 2018-07-27 16:48:29 · 14675 阅读 · 8 评论 -
android 8.1 安全机制 — SEAndroid & SELinux
1. SELinux 背景知识详细了解 Android 8.0 SELinux,可以参阅 Google 官方文档1.1 DAC 与 MAC在 SELinux 出现之前,Linux 上的安全模型叫 DAC, 全称是 Discretionary Access Control,翻译为自主访问控制。DAC 的核心思想很简单,就是:进程理论上所拥有的权限与执行它的用户的权限相同。比如,...原创 2018-07-27 16:37:39 · 23525 阅读 · 6 评论 -
android 内存管理基础知识记录
1. android 基础知识1.1 Stack and HeapStack 栈空间由操作系统控制,其主要存储函数地址、函数参数、局部变量等等。栈内存分配运算内置于处理器的指令集中,运算效率很高。存在栈中的数据大小与生存区必须是确定的,由于存储数据的特点,栈空间不需要很大,一般为 几 MB 大小。 Heap 堆空间是使用时由程序员控制的,程序员可以使用 malloc、n...原创 2018-07-18 15:21:02 · 552 阅读 · 0 评论 -
Android HIDL 之 hal 进程启动及服务注册过程
1. 引言前面章节 HAL 接口定义语言详解 中介绍了 HIDL 接口的设计架构,下面一节通过详解 Android 9.0 图形显示合成 Composer HAL 的启动与服务注册过程。我们知道,在 HIDL 的设计理念中,HAL 服务端进程与 frameworks 客户端调用是分离开的,每个 HAL 进程独立运行在自己的地址空间中,客户端通过 binder IPC 与 HAL 进程请求交互...原创 2019-04-10 08:53:18 · 15807 阅读 · 0 评论