Android Framework源码
文章平均质量分 91
Android Framework源码走读
guitarjoy
这个作者很懒,什么都没留下…
展开
-
Android 14 - 绘制体系 - VSync(1)
范围,如果用户通过setFrameRate手动指定一个帧率,其可能超出primaryRanges的范围;,主要面向SurfaceFlinger提供VSync相关接口。Scheduler包含对所有屏幕的VSync的控制。期内维护一个不断请求VSYNC的死循环。、针对SurfaceFlinger合成的。SurfaceFlinger的初始化。也就是VSYNC的终端接收者。计算下一次VSync的地方了。VSYNC-app的请求流程。VSYNC-app的分发过程。VSYNC-sf的请求和分发。原创 2024-05-27 23:38:54 · 1193 阅读 · 0 评论 -
Android 14 - 绘制体系 - 概览
从Android 12开始,Android的绘制系统有结构性变化, 在绘制的生产消费者模式中,新增BLASTBufferQueue,客户端进程自行进行queue的生产和消费,随后通过Transation提交到SurfaceFlinger,如此可以使得各进程将缓存提交到SufrfaceFlinger后合并到同一事务后同步提交,在同一帧生效。实际上,从Android12到Android14整个绘制系统在各个环节也都有了或大或小的。原创 2024-05-25 23:25:25 · 618 阅读 · 0 评论 -
Android14 - WindowManagerService之客户端Activity布局
Android14。原创 2024-04-21 17:43:31 · 888 阅读 · 2 评论 -
Android - 深入浅出理解SeLinux
1. 概述1. 概述SeLinux(Security-Enhanced Linux)是一个标签系统(labeling system)。每个进程都有一个label(称为process label),每个文件系统所涵盖的文件/目录、网络端口、设备等对象也有一个lable(称为Object label)。SeLinux通过编写规则来控制一个process label对一个Object label的访问,这个规则称之为策略(Policy)。原创 2024-03-22 16:58:08 · 1259 阅读 · 1 评论 -
Android14 - AMS之Activity启动过程(3)
Android14 - AMS之Activity启动过程(1)-CSDN博客Android14 - AMS之Activity启动过程(2)-CSDN博客上篇中我们梳理完ActivityStarter的startActivityInner,本篇从这里开始:platform/frameworks/base/services/core/java/com/android/server/wm/RootWindowContainer.javaboolean resumeFocusedTasks原创 2024-03-19 22:27:15 · 1048 阅读 · 0 评论 -
Android14 - AMS之Activity启动过程(2)
Android14 - AMS之Activity启动过程(1)-CSDN博客上篇梳理到:TaskDisplayArea和Task的复用与创建TaskDisplayAreaexecuteRequest后,随后调用startActivityUnchecked,进而调用startActivityInner。platform/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java原创 2024-03-15 11:09:26 · 1109 阅读 · 1 评论 -
Android14 - AMS之Activity启动过程(1)
callingPid如果赋值,和realCallingPid一般是相同的,都来自Binder.getCallingPid(),但在使用PendingIntent的场景,callingPid代表创建了PendingIntent的进程,而realCallingPid代表通过使用PendingIntent.send()执行PendingIntent的进程。这里使用了SynchronizedPool--简单的对象池来管理对象的生产,对象池里有3个对象,如果申请时池子里没有可用对象,则直接new一个。原创 2024-03-14 22:37:48 · 1277 阅读 · 2 评论 -
Android14 - Framework- Configuration的创建和更新
这个方法最终会通知到客户端应用的所有Activity、Service等。看ensureVisibilityAndConfig。调用了Display。原创 2024-03-14 22:27:16 · 1052 阅读 · 1 评论 -
Android12 - WMS之WindowContainer树(DisplayArea)
同一个Feature,相邻的Layer所生成的结点相同且共用,比如对于WindowedMagnification这个Feature,0~31 Layer所对应的结点都是[WindowedMagnification, 0, root]将task加入到TaskDisplayArea。如图示表格,按每个Layer所对应的列从上到下,最上面的为根结点root,上面的结点为下面节点的结点点,下面的节点被加入到上面结点的mChildren属性列表中。每个layer的值代表该layer在Z轴中的顺序,值越大的越靠上。原创 2024-03-11 17:44:54 · 990 阅读 · 0 评论 -
Android启动过程 - SystemServer
在startBootstrapServices、startCoreServices、startOtherServices、startApexServices中,对各类服务进行了启动,比如我们常见的ActivityManagerService、PackageManagerService、BatteryService等等,共近百个Service。进行启动时间、日志、heapprofd、严苛模式等性能采集相关的基本设置,以及进程优先级、binder、虚拟机内存等保障SystemServer正常运行的基本设置。原创 2024-01-30 00:54:02 · 877 阅读 · 1 评论 -
Android启动过程 - Zygote
我们知道zygote是app进程的孵化器,被孵化的子进程将继承这个客户端的socket,与服务端通信。Arguments里,将之前的参数“com.android.server.SystemServer”解析了出来,放到了startClass属性里,因此findStaticMain的首个参数就是com.android.server.SystemServer。常用基础类的初始化;在上一篇中,我们知道zygote进程是在`/system/etc/init/hw/init.rc`文件中配置,由init进程启动的。原创 2024-01-26 00:09:50 · 1053 阅读 · 1 评论 -
Android启动过程 - init进程对服务子进程的管理
接上文三、服务子进程的管理1. 监控service异常退出对于init启动的service,如果没有指定oneshort(一次性)的option,则默认为常驻service。在此情况下,当servcie意外退出,init将监控到并重启service首先,在中注册SIGCHLD信号的处理函数,用于监听init子进程的终止。SIGCHLD会监听到子进程的终止、暂停、恢复三个状态。init在注册SIGCHLD时,设置了这个flag,其作用是不监听暂停、恢复状态,只关注终止状态。原创 2024-01-18 01:22:59 · 489 阅读 · 1 评论 -
Android启动过程 - init.rc处理过程(一)
当条件被触发,多个符合条件的action将被按声明顺序依次加入一个“执行队列①”中,并按顺序执行。如果在window指定的分钟数(默认为4)内crash超过4次,则重启进入target指定模式(默认为bootloader,即fastboot)。trigger指的是触发该action的条件,而action指的是触发该条件后,要执行的整个代码段。后期即使通过设置,使得property:true=true,该段代码也不会再执行了, 因为boot已经是一个执行过的event。:设置该service的进程优先级。原创 2024-01-12 01:36:33 · 1521 阅读 · 1 评论 -
Android 启动过程 - 从上电到init进程的建立
这里需要注意的是,上述调动过程中,pid是在kernel_thread(kernel_init...)时创建的,do_execve使用新进程覆盖当前进程,pid不变。LoadBootScripts中依次解析多个rc文件,其中,/system/etc/init/hw/init.rc是主文件。在/system/etc/init/hw/init.rc中,启动一系列核心进程和服务,包括重要的zygote进程。/system/etc/init/hw/init.rc被执行后,其他rc文件会被执行。原创 2024-01-05 23:12:56 · 966 阅读 · 2 评论 -
Android启动过程 - init.rc处理过程(二)
接上文二、init进程执行rc文件rc文件处理的大概表述:将init.rc文件解析后,对于的执行,init进程主要通过以下几个角色实现:Epoll():对的封装,用于事件的分发控制):Action事件的队列管理、事件执行。property_service(core/init/property_service.cpp):Property变化事件的管理首先,我们回顾下,kernel在启动init进程后,依次调用core/init/init.cpp中的。原创 2024-01-12 01:48:38 · 1051 阅读 · 1 评论