深入理解Binder机制3-获取服务getService Posted on 2020-02-04 一、概述本文将介绍系统服务获取的具体流程,如获取ActivityManagerService时,通过ServiceManager中的getService静态方法获取具体的服务,这个流程经历Java层,Native层,Kernel层,其通信流程如下: 1.发起端进程向Binder Driver发送b ... Read more »
深入理解Binder机制2-注册服务addService Posted on 2020-01-10 一、概述本文将分析系统服务的注册流程,如注册ActivityManagerService时,通过ServiceManager中的静态方法addService注册具体的服务。ServiceManger是Binder IPC通信过程中的守护进程,是一个具体的服务,其功能主要是查询和注册服务。 二、Ser ... Read more »
深入理解Binder机制1-AIDL原理 Posted on 2019-12-25 Binder作为Android系统中重要的进程间通信方式,了解其基本的原理,对于分析问题具有重要的作用。由于Binder架构涉及的内容比较多,后面将会从应用层、框架层、Native层、内核层四个层次来说明Binder的原理。首先将从应用层的AIDL开始逐渐深入到内核层。整个系列的文章如下: 深入理解 ... Read more »
Android OTA升级流程分析 Posted on 2019-12-10 一、概述目前Android系统终端的升级主要是通过无线进行的(FOTA,Firmware Over-The-Air),主要流程是通过无线方式将升级包下载到终端,而后调用系统的升级接口进行升级。本文主要分析升级包下载后,调用系统升级接口之后的流程。 1.1 升级包结构升级包是用make otapac ... Read more »
Android SystemProperties系统属性分析 Posted on 2019-11-20 SystemProperties.set方法可以设置系统属性,通过设置系统属性可以启动一些服务和操作,如关机,重启、uncrypt服务等。下面将分析为什么设置系统属性,可以做到即时生效某些操作。 下面将以SystemProperties.set(“ctl.start”, “uncrypt”);为例说 ... Read more »
SELinux权限修改 Posted on 2019-11-02 SELinux权限修改 方法一:adb修改SELinuxEnforcing(已打开) Permissive(已关闭) 123getenforce //获取当前seLinux状态setenforce 1 //打开seLinuxsetenforce 0 //关闭seLinux 方法二 ... Read more »
Android四大组件与进程启动间关系 Posted on 2019-10-31 基于Android10.0,分析四大组件与进程启动间的关系 一、概述Android进程对于系统来说非常重要,而Android四大组件是Android应用的基础。在前面分析过Android进程创建的过程,那么对于四大组件来说和进程之间又有什么关联,这里主要看AMS.startProcessLock ... Read more »
Android进程创建流程分析 Posted on 2019-10-20 基于Android10.0,分析进程的创建过程 一、概述每个app在启动前都必须创建一个进程,这个进程是由zygote fork而来,进程具有独立的资源空间,用于app上运行的各种Activity、Service等组件。大多数情况下一个应用运行在一个进程中,除非在AndroidManifest. ... Read more »
开机广播BOOT_COMPLETED发送流程分析 Posted on 2019-10-05 基于Android10.0,分析BOOT_COMPLETED的发送流程 一、概述开机广播在很多应用中都会用到,用来启动应用程序,下面将介绍开机广播的广播过程。这个过程比较复杂,需要和AcitvityManagerService、WindowManagerService、PackageManage ... Read more »
BroadcastCast广播机制原理 Posted on 2019-09-22 基于Android10.0,分析广播机制的原理 一、概述广播(BroadcastCast)用于进程/线程间的通信,广播有发送广播和接收广播两部分组成,其中广播接收者BroadcastReceiver是四大组件之一。 BroadcastReceiver分为两类: 静态广播:通过AndroidMa ... Read more »
ContentProvider原理分析 Posted on 2019-09-10 基于Android10.0,分析ContentProvider原理 一、概述ContentProvider用于提供数据的统一访问格式,封装具体的实现。对于数据的使用无需知道是数据库、文件、网络,只需要使用ContentProvider的数据操作接口,即增(insert)删(delete)改(up ... Read more »
startServie启动过程 Posted on 2019-08-31 基于Android10.0,分析startService的启动过程 一、概述前面已经介绍了详细介绍了管理Android四大剑客Activity、Service、Broadcast、ContentProvider的ActivityManagerService启动的详细流程,这里讲从应用startS ... Read more »
startActivity启动过程 Posted on 2019-08-15 基于Android10.0,分析startActivity的启动过程 一、概述startActivity的整体流程和startService相近,启动后都是通过AMS来完成的。但相比service启动更加复杂,多了任务栈、UI、生命周期。其启动流程如下: 二、启动流程启动Activity,一般 ... Read more »
AMS启动流程分析 Posted on 2019-08-07 基于Android10.0,分析AMS的启动过程 一、概述ActivityManagerService(简称AMS),是Android系统中核心服务之一,负责管理四大组件和应用进程的工作,如四大组件的启动、切换、调度,应用进程的调度等。AMS类图如下: ActivityManager通过Act ... Read more »
WMS启动流程分析 Posted on 2019-07-20 基于Android10.0,分析WMS的启动过程 一、概述WindowManagerService作为Android系统中重要的服务,管理所有的窗口和输入事件的中转站,其相关类如下。 1.1 WMS类族 WMS继承于IWindowManager.Stub,作为Binder服务端 成员变量mSes ... Read more »