自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Android Camera 打开预览流程分析(三)-- Camera 连接到CameraService 过程分析

上篇已经分析了CameraService 的初始化过程,之前分析到ICameraService.connectDevice(…), 通过CameraService建立起cameraID 与CameraDevice的联系,那我们继续往下分析:

2022-02-11 07:03:42 810 2

原创 Android Camera 打开预览流程分析(二)--CameraService中的打开流程

上篇分析了打开Camera 在FW中SDK部分的流程,这篇分析在CameraService中的流程。CameraService 分几个部分:CameraServer定义和初始化 —frameworks/av/camera/cameraserverlibcamera_client 调用库 —frameworks/av/camera/libcameraservice 服务调用库 — frameworks/av/service/camera/libcameraservice...

2021-12-14 06:57:38 944

原创 Android Camera 打开预览流程分析(一)--打开camera的SDK流程

Android系统应用场景中,Camera的使用场景变得越来越重要,在手机端不管是牌照美颜,还是拍小视频上传小视频平台。在其他领域,如车载,倒车视频,360全景影像也同样会用到Camera接口。那我们这个系列就拿Camera来分析了,我们主要就是android camera流程进行一个分析,对于照片美颜,视频上传这些就不在我们关注的范围了。那我们分析还是带着问题去分析吧,Camera就如何打开的,现在一个手机上少则2,3个摄像头,多着5~6个摄像头,那如何去打开想要的那个摄像头呢。另一方面的问题就是Cam.

2021-10-10 07:59:33 1519

原创 Android P update_engine分析(七)--升级核心DeltaPerformer的分析

前面几篇分析了update_engine的启动,update_engine_client的使用,boot_control的AB切换,以及update_engine的4个Action,但始终没有看到核心的部分,如何将payload.bin如何下载到目标分区的。之前一直以为是在PostinstallRunnerAction的做的,后面发现错了,升级包里根本没有Postinstall脚本。重新分析之后发现,核心的升级操作都在DownloadAction 里做的,从而牵扯出一个核心的升级类DeltaPerforme

2021-08-14 09:50:04 1517 1

原创 Android P update_engine分析(六)-- PostinstallRunnerAction的工作

上篇已经分析过了InstallPlanAction、DownloadAction、FileSystemVerityAction 三个Action的工作内容,还有一个PostinstallRunnerAction的在这篇中继续分析,每个Action都是从PerformAction开始的:void PostinstallRunnerAction::PerformAction() { CHECK(HasInputObject()); install_plan_ = GetInputObject();

2021-08-08 18:09:05 880 1

原创 Android P update_engine分析(五) --update_attempter_android 升级与ActionProcessor工作

上篇文章分析了UpdateEngine服务的启动,初始化了四种Action(InstallPlanAction, DownloadAction, FileSystemVerifierAction, PostinstallRunnerAction), 然后将四种Action添加到列表中,最后ActionProcessor的启动InstallPlanAction的工作DownloadAction 的工作FilesystemVerifierAction的工作PostinstallRunnerActio

2021-07-26 07:10:48 1163

原创 Android P update_engine分析(四) --update_engine_client的工作

当AB系统升级时,有两种方式来调用updateengine,来实现升级,一种方法是直接执行shell命令,调用 update_engine_client,带参数来实现升级,另一种方式是应用层直接调用UpdateEngine的applyPayload方法来升级。update_engine_client 带参升级shell命令调用update_engine_client带参数去升级,具体如下:update_engine_client --payload=file:///sdcard/payload.bin

2021-06-13 11:59:16 4924 6

原创 Android P update_engine分析(三) --boot_control的操作

上篇update-

2021-06-05 17:35:45 2658 3

原创 Android P update_engine分析(二) -- update_engine_daemon的启动

上篇我们在update_engine启动时,分析了update_engine日志logging的启动和log文件的操作。这篇我们继续来研究update_engine_daemon的启动过程。因为updateEngineDaemon是继承brillo::Daemon的。从Daemon.Run()可以看到会调用onInit()函数。int UpdateEngineDaemon::OnInit() { subprocess_.Init(this); //父类初始化 int exit_code = D

2021-05-23 18:21:15 1083 1

原创 Android P update_engine分析(一) -- logging启动

UpdateEngine的启动UpdateEngine的启动是从Update_Engine.rc启动的。service update_engine /system/bin/update_engine --logtostderr --logtofile --foreground class late_start user root group root system wakelock inet cache writepid /dev/cpuset/system-backgr

2021-05-19 22:49:49 1134

原创 Android P rescueParty 救援模式 --无法启动时,会进入recovery

rescueParty功能 rescueParty主要是为了处理当系统无法正常进入系统,当systemserver一直重启 或者 persistent app(守护应用)一直挂掉重启 时,当重启的次数达到一定次数时,rescureParty会发挥作用,rescureParty也分为不同级别,先重置简单设置,如果还是无法正常启动,再重置重要设置,如果还是无法正常启动,最后重启系统进入recovery模式,并且询问用户 是否需要擦除data分区。所有分为4个等级。rescueParty功能的开启resc

2021-05-16 16:17:29 2147 1

原创 Android P 显示流程分析--- buffer的生产消费者模式

上篇分析到了FramebufferSurface调用acquireBufferLocked()时,从mConsumer->acquireBuffer 消费者模式中获取的,这篇我们来分析下消费者模式。

2021-05-05 18:30:46 1105

原创 Android P 显示流程分析(五)---界面刷新

上篇分析完了setUpHWComposer(), 这篇就来分析实际图层合成部分了。void SurfaceFlinger::doComposition() { const bool repaintEverything = android_atomic_and(0, &mRepaintEverything); //遍历所有显示屏 for (size_t dpy=0 ; dpy<mDisplays.size() ; dpy++) { const sp&lt

2021-03-23 07:17:20 853

原创 Android P 显示流程分析(四)---界面刷新

上篇分析到SurfaceFlinger.signalRefresh()里会调用到SurfaceFlinger里的handleMessageRefresh(), 现在这里面开始涉及到图层合成了,这里面涉及的流程

2021-03-16 06:49:20 1465

原创 Android P 显示流程分析(三)---EventThread MessageQueue 交互分析

上篇分析SurfaceFlinger的init()里创建了几个线程,主要用于界面刷新。里面涉及了一个EventThread和MessageQueue。我们来看看像界面刷新这种高频的事件通知及处理,Google是如何设计的。EventThread的初始化EventThread::EventThread(VSyncSource* src, ResyncWithRateLimitCallback resyncWithRateLimitCallback,InterceptVSyncsCallback inter

2021-01-30 22:47:18 645

原创 Android P 显示流程分析(二)---获取显示屏配置

Android P 显示管理上已经分析了,SurfaceFlinger初始化的第一部分,并分析了第一块Display设备的插入检测过程。因为里面有众多类,接口 , 分析起来很乱,下面是我总结了一个UML的类图。

2021-01-28 07:04:26 934

原创 Android P 显示流程(一)---Display设备初始化过程分析

Android P 显示流程(一)SurfaceFlinger新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入SurfaceFlingerSurfaceFlinger在Android中是显示的核心部分,所以我们今天从Su

2021-01-09 22:37:28 3291 1

原创 Android P HIDL服务绑定模式与直通模式的分析

  从Android 8.0之后,Android 引入Treble机制,主要是为了解决目前Android 版本之间升级麻烦的问题,将OEM适配的部分vendor与google 对android 大框架升级的部分system部分做了分离,一旦适配了一个版本的vendor信息之后,之后的版本再进行升级时,直接升级system即可,这个就不会给OEM厂商升级带来太大的工作量,直接升级最新功能,可以解决目前市面上Android版本过来凌乱的问题。  首先Treble机制在Vendor分区中有两种模式,一个编译.

2020-06-11 09:51:10 2877 5

原创 Android P HIDL demo代码编写

之前的文章已经分析了HIDL服务的注册和调用,这篇文章来总结下一个HIDL的服务如何编写。缩写HAL文件首先要确认放置文件夹和接口的包名,因为这跟后面使用脚本生成一部分代码有关,一般默认的放在hardware/interfaces目录下,我们写一个简单的IDemo.hal (hardware/interface/demo/1.0/IDemo.hal)package [email protected];interface IDemo { init(int32_t l.

2020-06-11 09:45:34 321

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除