獨孤碼農

毕生求一败而不可得 终埋剑于剑冢 诚寂寥难堪也

Android10系统架构和学习总纲

本文为Android10系统架构和学习总纲,会分类列出博主学习android10的所有博文,方便大家查阅

一.Android系统架构 Android系统架构分为五层,从上到下依次是应用层、应用框架层、系统运行库层、硬件抽象层和Linux内核层,下图是一张官网经典的架构分层图 应用层 系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。 应用框架层(Java Framework) 应用框...

Android源码查看和下载

汇总一下android源码下载和在线查看的网站和方法

本文最后更新于 2021-07-25 更新内容:删除了访问不了的网站,更新网站截图,添加新的资源网站    学习研究android系统,最直接最好的方法就是阅读源码(Read The Fucking Source Code),本篇教程汇总一下能够查看android源码的网站和下载源码的方法 一 在线查看 https://source.android.com/source/ 首...

Android10 Binder机制4-获取服务

获取服务是通过ServiceManager中的getService静态方法获取具体的服务,这个流程经历Java层,Native层,Kernel层。

一、概述 本文将介绍系统服务获取的具体流程,如获取ActivityManagerService时,通过ServiceManager中的getService静态方法获取具体的服务,这个流程经历Java层,Native层,Kernel层,其通信流程如下: 1.发起端进程向Binder Driver发送binder_ioct请求后,采用不断的循环talkWithDriver,此时线程处于阻塞状态...

Android10 Binder机制3-注册服务

ServiceManger是Binder IPC通信过程中的守护进程,是一个具体的服务,其功能主要是查询和注册服务。

一、概述 本文将分析系统服务的注册流程,如注册ActivityManagerService时,通过ServiceManager中的静态方法addService注册具体的服务。ServiceManger是Binder IPC通信过程中的守护进程,是一个具体的服务,其功能主要是查询和注册服务。 二、ServiceManager启动 ServiceManager是由init进程通过servicem...

Android10 Binder机制2-AIDL原理

Binder作为Android系统中重要的进程间通信方式,了解其基本的原理,对于分析问题具有重要的作用。

Binder作为Android系统中重要的进程间通信方式,了解其基本的原理,对于分析问题具有重要的作用。由于Binder架构涉及的内容比较多,后面将会从应用层、框架层、Native层、内核层四个层次来说明Binder的原理。首先将从应用层的AIDL开始逐渐深入到内核层。 一、AIDL 在进行进程间通信时,需要将接口定义好,定义好之后创建aidl文件,将接口方法放在文件中。客户端和服务端,a...

Android10 Binder机制1-原理简述

Binder作为Android系统提供的一种IPC机制,无论从事系统开发还是应用开发,都应该有所了解

一、概述 1.1 Binder架构 Android内核基于Linux系统,而Linux系统进程间通信方式有很多,如管道,共享内存,信号,信号量,消息队列,套接字。而Android为什么要用binder进行进程间的通信,主要是从以下几个方面考虑的。 (1)从性能的角度数据拷贝次数 Binder数据拷贝只需要一次,而管道,消息队列,Socket都需要二次,但共享内存连一次拷贝都不需要;从性能角度...

Android10 组件与进程关系分析

android中弱化了进程的概念,取而代之的是四大组件,本篇文章我们就来学习一下组件和进程的关系

一、概述 Android进程对于系统来说非常重要,而Android四大组件是Android应用的基础。在前面分析过Android10进程创建流程,那么对于四大组件来说和进程之间又有什么关联,这里主要看AMS.startProcessLocked方法。 二、四大组件与进程 2.1 四大组件 Activity、Service、ContentProvider、BroadcastReceiver这四...

Android10 进程创建流程分析

每个app在启动前都必须创建一个进程,这个进程是由zygote fork而来

一、概述 每个app在启动前都必须创建一个进程,这个进程是由zygote fork而来,进程具有独立的资源空间,用于app上运行的各种Activity、Service等组件。大多数情况下一个应用运行在一个进程中,除非在AndroidManifest.xml中配置Android:process属性,或者通过Native代码fork进程。相对于线程,线程没有独立的地址空间,与其所在进程之间资源共...

Android10 SurfaceFlinger原理分析

SurfaceFlinger作为负责绘制应用UI的核心,Android平台所创建的Window都是由surface所支持

一、概述 SurfaceFlinger作为负责绘制应用UI的核心,Android平台所创建的Window都是由surface所支持,所有可见的surface渲染到显示设备都是通过SurfaceFlinger来完成的。 SurfaceFlinger进程是由init进程创建,运行在独立的SurfaceFlinger进程。Android应用进程必须和SurfaceFlinger进程交互,才能完成应...

Android10 Choreographer原理分析

Choreographer翻译成中文是编舞者的意思,在Android系统4.1开始加入这个类,主要来控制同步处理输入(input),动画(animation),绘制(draw)

一、概述 Choreographer翻译成中文是编舞者的意思,在Android系统4.1开始加入这个类,主要来控制同步处理输入(input),动画(animation),绘制(draw),在UI显示的时候每一帧完成的只有这三种。在这个类的前面有一行注释,大概意思就是要协调控制三个UI操作的时序,这也和其编舞者名称相符合。 /** * Coordinates the timing of ...

Android10 JNI原理分析

JNI(Java Native Interface,Java本地接口),是连接Android Native层和Java层的纽带

一、概述 JNI(Java Native Interface,Java本地接口),是连接Android Native层和Java层的纽带,这个是Java所特有的,并不是Android系统独有。Java作为跨平台的语言,依靠的是虚拟机,虚拟机采用C/C++编写,适配各个系统,通过JNI为上层Java提供各种服务,保证跨平台性。下面将从Android虚拟机启动开始深入理解JNI的原理。 二、An...

Android10 hook Activity技术分析

在插件化中,hook Activity作为最基本的技术,用来在宿主app中新增Activity

在插件化中,hook Activity作为最基本的技术,用来在宿主app中新增Activity,而通常情况下,Activity必须在Manifest中注册在才可以使用,下面将就Android10.0来分析hook Activity的详细过程。 要hook Activity之前,必须知道Activity的启动过程,才能够选择合适的点进行hook,在前面的文章中有分析Android10Start...