Android常见模块流程分析
文章平均质量分 81
第一序列丶
脱离了高级趣味的码农,Log分析员,工具人,打工人,Bug制造者,接锅侠
展开
-
Android -- WiFi的NUD检测机制浅析
Android -- WiFi的NUD()Neighbor Unreachable Detection,邻居不可达检测检测机制浅析原创 2021-12-13 09:45:00 · 3217 阅读 · 1 评论 -
Android -- Bootanimation是如何触发退出的
目录Android -- Bootanimation是如何触发退出的 Android -- Bootanimation是如何触发退出的ActivityManagerService启动的末尾阶段,会启动Launcher来作为系统的第一个App展示出来,主要调用在SystemServer中调用ActivityManagerService::systemReady(): public ...原创 2021-04-26 20:50:55 · 1434 阅读 · 1 评论 -
Android -- IPC通信机制之一Binder简介
Android -- IPC通信机制之一Binder简介 随着慢慢进入Android Media模块,遇到了很多新的知识和难点,其中之一就是native代码中使用频繁的Binder通信机制。Binder是Android中使用最频繁的一种IPC通信机制,底层基于内核的binder驱动。谷歌大神在native层封装了一套Binder API,供我们实现自己的Binder服务。Binder是...原创 2017-01-01 10:19:38 · 1203 阅读 · 1 评论 -
Android -- 使用Binder API实现一个简单服务
Android -- 使用Binder API实现一个简单服务在上一篇博客中,我们借助ServiceManager从源码的角度简要分析了一下Binder的使用机制;接下来,我们就可以按照ServiceManager的实现套路,实现一个自己的Binder服务。先列出代码目录结构:1、服务业务接口:/mybinder/extra/IMyService.cpp原创 2017-01-04 22:43:00 · 2003 阅读 · 3 评论 -
Android -- PackageManagerService初始化分析
Android -- PackageManagerService初始化分析PackageManagerService主要负责Android系统的应用管理,它提供对各种APK文件的安装、卸载、优化和查询服务。PackageManagerService在系统启动时会扫描所有存在的APK文件和Jar包信息,并将它们读取、保存起来;这样系统在运行时,就能很快的查询到各种应用和相关组件的信息原创 2017-06-17 16:35:45 · 2330 阅读 · 0 评论 -
Android -- PackageManagerService APK扫描流程解析
Android -- PackageManagerService APK扫描流程解析PackageManagerService(PKMS)构造中触发APK扫描的函数调用是:scanDirTracedLI(),它会遍历我们传入的文件路径,然后循环解析其中存在的APK文件,并将信息解析出来存入PKMS内部,供后续的运行时信息管理。PKMS这一部分的函数调用很深,我们这里只看其中的几个关键函原创 2017-06-24 20:14:10 · 1936 阅读 · 0 评论 -
Android -- PackageManagerService APK安装流程简要分析
Android -- PackageManagerService APK安装流程简要分析在Android系统下,我们一般会使用"adb install -r"命令来安装应用;此时应用会被安装到/data/app/下。这篇文章,我们就从adb命令入手,简要分析PackageManagerService安装apk的中间处理过程。在android中,adbd以后台进程运行。当我们原创 2017-07-01 18:04:42 · 5874 阅读 · 2 评论 -
Android -- Vold机制简要分析
Android -- Vold机制简要分析Vold是用于管理和控制Android外部存储介质的后台进程,这里说的管控,主要包括SDK的插拔、挂载/卸载和格式化等;它是Android平台外部存储系统的管控枢纽。原创 2016-12-04 11:38:03 · 8935 阅读 · 3 评论 -
Android -- Android.mk简介
Android -- Android.mk简介主要来源:Secrets of Android.mk (翻译+整理)Android.mk简介这篇文档描述了用于向Android NDK解释你的C/C++源文件的Android.mk构建文件的语法。为了理解接下来的内容,我们假设你已经阅读了解释它们角色和使用场景的文档。编写Android.mk文件是用来向编译系翻译 2017-12-10 16:22:46 · 1583 阅读 · 0 评论 -
Android -- sp、wp智能指针的原理简介
Android -- sp、wp强弱指针的原理简介我们知道,Android的native层代码基本都是C/C++的天下;基于这种特点,在native层中大量使用指针来操作对象就在所难免了。由于C/C++需要程序员手动操作管理内存,这就使程序出现内存管理问题的概率大大特高。所以,在Android中就提出了一种新的指针概念:强指针(sp)、弱指针(wp)来代替普通的指针;这种指针基于引用计原创 2016-12-18 15:10:27 · 6488 阅读 · 0 评论 -
Android -- Handler消息机制简析
Android -- Handler消息机制简析Android系统是消息驱动的。说到Android中的消息机制,就一定离不开这四个类:Handler、Message、Looper和MessageQueue,它们是Android消息机制的主要实现部分。我们首先先明确这四个类在消息机制扮演的角色,然后再一一对它们进行分析。熟悉Android的同学应该知道了:Handler:原创 2016-10-23 16:33:48 · 651 阅读 · 0 评论 -
Android -- 系统进程Zygote的启动分析
Android -- 系统进程Zygote的启动分析 我们知道,Android系统是基于Linux内核的。Linux中,所有的进程都是由init进程创建出来的,即所有的进程都是直接或间接被init进程fork产生的。Android进程的孵化器Zygote同样如此,它在系统启动过程中,被init进程创建出来。Android系统启动时,会解析init.rc初始化文件,我们先看init.rc中对...原创 2016-10-23 14:41:01 · 7267 阅读 · 0 评论 -
Android -- 源码平台下JAR包的引入与编译
Android -- 源码平台下JAR包的引入与编译 在应用开发过程中,常常需要引入第三方JAR包,或将自己的一些代码打包为JAR包以供其他应用使用,以下将描述这些操作的过程。需要注意的是,本文所述方法皆是在源码平台下的操作。 1.引入第三方JAR包 图1 测试程序根目录 如图1,在应用AppsAut中需要引入第转载 2017-03-21 22:16:40 · 6500 阅读 · 1 评论 -
Android -- 系统网络时间更新NetworkTimeUpdateService服务解析
Android -- 系统网络时间更新NetworkTimeUpdateService服务解析Android系统时间更新主要涉及到两种时间:NITZ时间和NTP时间。NITZ时间与手机服务运营商关系密切;而NTP网络时间则较为独立,访问某个服务器,获取时间即可。NTP时间获取的过程较为单一,且由于工作中主要是涉及到Android NTP时间的获取;所以这里先只介绍Android系统获取原创 2017-05-28 20:22:04 · 8257 阅读 · 0 评论 -
Android -- Android设备的启动流程概述
Android -- Android设备的启动流程概述最近回过头来在看Android系统的启动、及初始化流程,先把一些内容记录下来,以供自己后续回忆、查阅。Init进程是Linux内核启动后创建的第一个用户进程,地位非常重要。Init进程在初始化过程中会启动很多重要的守护进程。从系统角度看,Android的启动过程可分为bootloader引导、装载和启动Linux原创 2017-02-12 10:46:05 · 604 阅读 · 0 评论 -
Android -- init.rc配置文件简介
Android -- init.rc配置文件简介 这篇文章的目的是记录近期从书中看到的内容,供后续查阅。一个完整的init.rc脚本由四个部分组成:Actions-动作 Commands-命令 Services-服务 Options-选项它有一些通用的语法规则:注释以"#"开头 关键字和参数以空格隔开,每个语句以行为单位 C语言风格的反斜杠转义字符("\")可以用来...原创 2017-02-12 11:00:33 · 2977 阅读 · 1 评论 -
Android -- Android Init进程的处理流程分析
Android -- Android Init进程的处理流程分析在Android中,Init进程是Linux内核启动后创建的第一个用户进程,地位非常重要。Init进程的可执行文件在/system/core/init/目录下,我们直接看Init进程的main()函数,该函数的代码处理流程较长,我们分两大段来分析。首先看第一大段:int main(int argc, char** argv原创 2017-02-12 18:15:18 · 1639 阅读 · 0 评论 -
Android -- Init进程对信号的处理流程
Android -- Init进程对信号的处理流程在Android中,当一个进程退出(exit())时,会向它的父进程发送一个SIGCHLD信号。父进程收到该信号后,会释放分配给该子进程的系统资源;并且父进程需要调用wait()或waitpid()等待子进程结束。如果父进程没有做这种处理,且父进程初始化时也没有调用signal(SIGCHLD, SIG_IGN)来显示忽略对SIGC原创 2017-02-17 08:52:51 · 2360 阅读 · 2 评论 -
Android -- Init进程对属性系统的处理流程分析
Android -- Init进程对属性系统的处理流程分析在Android中,我们大量使用属性来保存、传递一些简单的标志、判断信息。属性包含属性的名称和属性值两部分,属性的名称一般是由"."分割的字符串组成,但这些名称的前缀都有特定的含义,我们不能随意改动;前缀后面的字符串则可以有我们自己指定。属性的值则只能是字符串形式。每个进程都可以使用属性,我们对属性的操作有读写之分。每个进程原创 2017-02-20 09:57:13 · 2815 阅读 · 0 评论