自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(230)
  • 资源 (3)
  • 收藏
  • 关注

原创 分享常见selinux相关命令

SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制。DAC的核心思想很简单,就是:进程理论上所拥有的权限与执行它的用户的权限相同。比如,以root用户启动Browser,那么Browser就有root用户的权限,在Linux系统上能干任何事情。显然,DAC太过宽松了,所以各路高手想方设法都要在Android系统上搞到root权限。那么SELinux如何解决这个问题呢?

2024-05-23 11:43:27 678

原创 android app转framework应该如何选模块?

想入坑Framework开发,如果你之前没有比如上面的多媒体,和外设模块相关经验加buffer,那么强烈建议你选着Framework rom开发模块方向,这个方向相对就业比较好,岗位很多,公司绩效也较好,当然肯定比其他模块就累一些,但是属于公司核心业务自然发展比冷门边缘化模块好,比如其他wifi,蓝牙模块,那可能整个大公司就几个人在负责这块业务,因为这些业务其实新需求很少,大部分都是维护稳定性为主,很多时候还依赖芯片方案商。

2024-05-20 11:40:24 656

原创 黑屏实战之横屏情况下分屏黑边问题bug-学员提供

hi,粉丝朋友们,学员们学习了wms、ams专题后,那么整个系统的闪黑,黑屏,部分黑等问题,说实话大部分这类问题对于大家来说都没有太大难度了。该问题其实属于比较常见的部分黑问题场景,这个比较好一点就是他可以在刘海屏幕下面是必现而且非刘海屏幕不复现,而且在稍微拖动分割线后,分屏又可以恢复正常,所以前后异常对比都很方便。大家自己尝试解决,找出原因哈,相关问题提供的学员,已经使用马哥课程的黑屏相关解决追踪方法找到了根本原因而且也修复,希望大家独立拿这个来练手哈,体验真正企业级别实战。环境aosp14 r15。

2024-05-17 09:58:57 436

原创 InputWindowHandle的token怎么实现和InputChanel的token一样?-学员答疑

token是在InputChannel创建时候就有构造----》传递给WindowState的InputWindowHandleWrapper中------》InputMonitor遍历传递给Sf---------》Sf传递给InputDispatcher本文章更多详细代码和资料需要购买课程获取私聊作者+v(androidframework007)其他课程七件套专题:点击这里。

2024-05-10 23:11:23 1002

原创 framework工作中遇到陌生窗口怎么高效找代码?-vip学员疑问解答

经常在实际开发过程中会遇到系统中各个不同的窗口,特别是系统中的各个窗口,种类非常非常多,不同应用不同场景等,有时候需要对相关的窗口进行修改等需要,就需要找到对应的窗口代码,然后修改相关的需求。上面从window名字线索只获取了个popupwindow名字,这个window名字线索平时对于一些系统窗口有自己独特名字的是非常有作用的哈,但是今天这个明显不太行啊,因为popupwindow太多了,没办法靠window的名字就准确找到窗口的源码位置。那估计系统中这样的多如牛毛,如同大海捞针,下面来详细介绍方法。

2024-05-10 10:40:16 646 2

原创 perfetto结合源码分析input输入的iq,oq,wq部分

其实这个在input专题的源码分析时候就有讲解过,不过那时候是完全基于源码分析的,没有和systrace或者perfetto结合起来分析,今天马哥就来补充一下这块知识。同学们经常在分析systrace或者perfetto时候,都会面临一个分析iq,oq,wq的问题,这个iq,oq,wq,到底是指的什么呢?这里3个过程中,离我们app处理最近的当然是第三个步骤,经常说的iq,oq,wq其实也是属于InputDispatcher类里面的变量。注意啦,这里的oq是带着有具体的目标窗口的。

2024-05-07 13:20:52 722

原创 android.anim和android.anim.lf两个线程解析

在学员群中有学员朋友在分析systemserver的systrace和perfetto时候,提出了关于android.anim和android.anim.lf两个线程的相关疑问,主要是android.anim和android.anim.lf两个线程分别用于什么,有啥区别。其实上面的注释也讲的比较清楚了,核心就是为了动画更加流畅,改进成了动画不需要在单独依赖windowmanagerservice的大锁,所以独立出来了一个单独的动画独立线程android.anim.lf。android.anim还干些啥?

2024-05-04 17:07:16 687 1

原创 systemserver为啥很少同步跨进程调用app/DeadSystemException相关问题分析套路

基于上面分析那就基本上明白了导致系统死锁的直接原因,那就是因为systemserver发起了个同步的跨进程调用,这个跨进程调用半天没有得到对方回应,导致systemserver一直卡在这个同步调用这里。

2024-04-30 11:03:01 1021

原创 Ubuntu 20.04上Android NDK编译FFmpeg 5.1全程笔记

上面就是ndk编译ffmepg的64位库简单过程哈,同理32位库也是一样,只需要改动一点config参数既可以,具体也给出对应sh脚本。然后对它进行解压既可以,这里也可以使用as自带的版本,或者不是ndk的r22版本试试,最好就下载和这里一样的版本。这些库和include的头文件放好,然后开始编写对应的CMakeList进行相关的修改。一般上面脚本可以直接拷贝使用,只需要改如下两项和路径直接关联的。有了相关的so和include后,既可以把它们用于开发app啦。建立一个简单的native c++的工程。

2024-04-28 23:49:15 1015

原创 Vsync之app层面深入分析

前面文章和视频课程都是直接从SurfaceFlinger层面开始讲解Vsync部分的,当然vsync的主要核心逻辑也确实在SurfaceFlinger,但是一般vsync都是由app层面发起请求的,这一部分也还是有必要带大家了解清楚。createDisplayEventConnection方法,这个方法app发起跨进程调用后会到服务端BnSurfaceComposer,这个SurfaceFlinger是继承这个BnSurfaceComposer的。

2024-04-23 23:37:47 931

原创 System Alert /Overlay系统悬浮窗口被隐藏原理剖析

在使用系统悬浮窗口时候发现有一个问题,那就是悬浮窗口在其他应用上面显示的好好的。一旦打开设置界面后,就发现悬浮窗口直接被隐藏了,退出设置画面后悬浮窗口又展示了

2024-04-20 08:00:00 426

原创 安卓投屏延时数据如何测试,测试工具如何写?

这种跨设备的投屏场景,流畅的体验是最重要的,这里就会要求投屏中最重要的一个性能指标,那就是投屏的延时。说到了有延时,那么如何科学的评估或者测量延时到底多少呢,人的感觉其实是最不靠谱的,因为我们一般很难感知几十毫秒的差异,除非有几百毫秒以上的差异才可能可以感知到?针对延时测量,首先的知道一个测量延时的数量级,这个延时其实一般都是在毫秒级别,所以测量工具开发时候就需要有一个毫秒表进行展示。2、进入复杂的游戏画面,比如王者荣耀,和平精英等画面,这里需要把毫秒表变成一个悬浮窗口,然后测量延时。

2024-04-18 11:02:28 597

原创 aosp13/14命令行进入分屏相关实战

明显可以看出这个代表移动taskId到分屏的sideStagePosition,注意了,这个命令只需要指定一个taskId和他的position既可以,那么这里大家会有疑问那么另一个分屏该显示谁?代表成对显示的意识,即吧taskId1和taskId2进行成对显示,即分屏,但是这个分屏和桌面进入的分屏是不一样的,核心不一样的点就是层级结构树都不一样,具体看如下实战。当前task层级结构树的最顶部符合分屏要求的task,一般就是最顶端的task。这个时候就需要有一个可以直接通过命令行拉起分屏的需求是最好的。

2024-04-16 18:35:11 1155

原创 车机手机互联模拟Overlay屏幕竖屏显示适配分析

这里setMatrix和setPosition一般都是客户端进程的Transaction相关对SurfaceControl进行的设置,所以这里可以考虑去对应的SurfaceControl加入对应追踪,这个课程已经讲解很多遍了,就不需要多讲解。横屏情况比较好理解,因为只需要对录屏的数据进行等比例缩放既可以,但是竖屏数据就明显需要额外处理,让竖屏居中显示,不然直接等比例缩放,肯定会产生形变。大家可以看到手机屏幕自身是竖屏,但是模拟屏幕是横屏情况,这里看到会有一个自动的竖屏数据放到横屏中间,然后两边啥也不显示。

2024-04-12 11:00:00 750

原创 车机手机互联不同屏幕尺寸大小解决方案成果展示

大家好!上一篇文章分享了一个云手机车机互联实现的简单demo,文章链接如下:[https://mp.weixin.qq.com/s/lihQHSd-zBIPeVa0WiP1pg](https://mp.weixin.qq.com/s/lihQHSd-zBIPeVa0WiP1pg)这个主要实现是同一个屏幕大小尺寸的投屏情况,即和车载互联的屏幕显示手机镜像一样,以及很多市场上的投屏。

2024-04-11 11:03:15 275

原创 android投屏程序线程无故卡死不执行,如何分析?

在针对线程无故卡死情况,日志方面也不打印输出情况,需要考虑多个手段来尝试定位分析出目前的线程状态

2024-04-08 14:49:47 661

原创 某手机大厂安卓framework开发面试机试经验分享

大家好!刚好现在处于一个金三银四的时间,很多同学都希望找个好的工作,这边刚好也有相关同学近期拿到了某手机大厂,具体啥大厂这里就不透露了,哈哈大家也很容易知道,需要机试的手机厂商就一两个,不给自己找麻烦,文章里面统一用某手机大厂。这里因为和该学员朋友进行了深入的沟通,把相关的一些经验写成了文章blog分享给各位要找高薪水大厂工作的朋友们。符合条件兄弟们又想要去的赶紧冲。。。

2024-04-02 11:43:36 1132

原创 手把手教你aosp13/14上实现PRODUCT_BOOT_JARS/boot jar(有源码)-千里马framework

每个平台都会有不同的实现,但是对于Tv这个app来说并不关心,因为他只依赖一个公共接口jar就行,至于你这个接口jar具体实现自己根据平台自己来实现。类似依赖是中间件jar,中间层,apk只依赖中间层接口,具体差异中间层自己去平台对接。经常设备厂商可能开发一些功能时候会有一些和芯片厂商打交道,比如mtk,海思,amlogic,高通啥的。1、系统应用的情况,这种最为简单,因为不需要考虑相关权限访问的问题。

2024-03-28 00:16:51 708

原创 实时刷新率Fps实现相关知识讲解

1、利用FrameTimeLine来获取实时fps的数据2、直接使用SurfaceFlinger中的RefreshRateOverlay这个图层类来负责显示这个实时fps数据本文章更多详细代码和资料需要购买课程获取私聊作者+v(androidframework007)其他课程七件套专题:点击这里。

2024-03-25 23:39:29 788

原创 安卓/aosp14上userdebug版本无法进行as调试debug问题

模拟器其实并不是persist.debug.dalvik.vm.jdwp.enabled控制的,哪怕模拟器上这个属性设置0,也一样是可以见到debug的所有进程。这个就需要进一步看看,难道是14模拟器目标默认编译persist.debug.dalvik.vm.jdwp.enabled就是为1?注意啦,这个就是为啥aosp13上没有问题,14有问题原因,疑问这个ENABLE_JDWP变量属于新加入的,在13代码上并没有。为啥aosp13上面可以,aosp14不可以,还有为啥aosp14的模拟器可以?

2024-03-20 17:56:20 985

原创 SurfaceFlinger实战dump获取单个Layer图像方案学员改进成果

学员朋友们拿到后也进行了认真的实战开发,而且针对马哥提供方案也做了一些改进,下面就分享一下两个学员朋友等改进建议。

2024-03-20 00:18:11 812

原创 c++基础知识之父类地址和基类地址一定相同?

是不是可以认为这里RefBase在incStrong of后面打印的this肯定和上面的LayerHandle打印的this一样?

2024-03-11 13:53:50 954

原创 ActivityRecordInputSink深入剖析全网独家分析

dumpsys input可以看到一个ActivityRecordInputSink在Activity的下面

2024-03-06 12:56:26 1012

原创 安卓14/aosp14相比安卓13录屏多了MirrorRoot深入剖析解密-千里马android framework实战开发

到这里,就把学员提出的录屏时候Mirror问题前后版本出现与不出现的原因搞清楚了,整体其实探索出来了结果后并不是很复杂,但是如果要自己去探索还是有一定的难度的。虽然有难度,马哥还是希望大家平时遇到相关的技术疑问时候不要轻易放弃或者完全不管,应该努力用自己学习知识应用起来,结合起来,去分析实际开发中遇到一些问题。只有这样不断探索,技术才会不断成长,成长到有一天你发现你对这个模块理解深入程度基本上也不输给任何人的时候,你就是这方面的顶级专家。本文章更多详细代码和资料需要购买课程获取。

2024-03-02 17:15:48 1022

原创 lineageos 21/aosp14环境搭建小米,nubia手机差异补充

马哥这边也是一直密切关注着lineageos这边是否有及时升级到最新的android 14,今天去官网一看已经确实升级了,马哥这边也第一时间进行环境搭建编译,但是期间也发现了有一些差异相比原来的版本,这里就需要进行一些记录补充方便各位学员们参考,不至于无法搭建成功,有马哥在前面给大家采坑搭建就可以节省很多时间。访问的地址还是有比较大差别,那么这里尝试用老版本的vendor/lineage/build/tools/roomservice.py。2、从上一套编译通过的代码吧webview.apk拷贝。

2024-02-29 12:57:25 1215

原创 SurfaceFlinger实战dump获取单个Layer图像方案及成果展示-千里马学框架

今天来给大家分享一下如何实现单独获取某个Layer的图片,而不是整个屏幕的图片。

2024-02-27 16:52:15 1207

原创 android input命令支持多指触摸成果展示-千里马framework实战开发

hi。

2024-02-22 16:11:45 1228

原创 深入理解input命令只支持单指,是否可以修改实现多指?-千里马android framework实战开发

执行完成后手机画面一般就会响应一个click事件,这里发现一般都是一个手指,一直寻找看看input命令是否可以支持多个手指通过命令同时按下操作的情况,发现并没有这种多指的触摸的命令。pointId1 x y --pointId0代表具体手指索引,可以区分不一样手指,一般0开始,x,y代表是触摸事件的坐标位置。input tap命令只是进行传递了x,y坐标值,并没有传递多指相关的任何id,所以是不支持的多指的。考虑设置一个可以多指点击命令项,暂时命名叫做multiple-tap。看看这里sendTap。

2024-02-20 16:28:45 1049

原创 hal/SurfaceFlinger/perfetto实战需求问题探讨作业-千里马framework开发

截图分享可以选定某个特定窗口进行,这个和上面的录屏其实基本上类似一个场景,就是截图时候有会存在只需要截图固定窗口window的,不需要其他window的情况,同样游戏主播进行直播这个情况,截图时候希望只有游戏画面就可以,游戏画面上面的其他app的窗口不希望在截图中。经常分析一些显示问题时候,会想要dumpsys各个图层,但是dumpsys SurfaceFlinger命令一般来说只是有相关的图层信息,是文本类的信息,所以有时候黑屏或者显示 异常情况就比较难看出来是不是自己图层本身上帧有问题。

2024-02-19 12:03:00 914

原创 c++之function和bind详解-SurfaceFlinger学习必备语法基础

function是一个通用的函数对象容器,可以存储任意可调用对象(函数、函数指针、成员函数、成员变量、lambda表达式,任何function对象,比如一个类,定义了operator()),并提供了一致的接口来调用这些对象。通过function,可以将一个函数或函数对象作为参数传递给其他函数或存储在容器中,大大提高了灵活性。参数解释:Ret:代表调用function的返回结果的类型Args:代表是参数的类型。demo展示:1、function存储函数指针方式return a*2;

2024-02-16 20:10:13 955

原创 Ubuntu上VScode编译c++基础学习指南-SurfaceFlinger实战必备基础知识

1、使用vi、gedit等代码编辑工具进行编辑,然后使用命令gcc或者Makefile等进行编译,即编写代码和编译是分开的,一般编写代码也没啥代码错误提示等,只有命令编译时候才可以发现错误,这种方式相对来说适合少量修改代码,不适合大量写代码的情况。aosp相关native模块,比如input,SurfaceFlinger等,经常阅读会遇到一些陌生库函数或者类,可能这个时候想要查询这个库函数相关的详情进行学习,类似课程讲解linux库函数有个man手册一样东西。选着第一个GDB既可以,选着后又弹出如下。

2024-02-06 23:28:49 1077

原创 c++基础语法之future,promise,async详细讲解-SurfaceFlinger学习必备c++知识

std::promise用来包装一个值将数据和future绑定起来,为获取线程函数中的某个值提供便利,取值是间接通过promise内部提供的future来获取的,也就是说promise的层次比future高。这个问题回答其实可以考虑一下future的获取,future都是需要几个固定的异步线程调用方式,比如async这种,但是很多时候不喜欢用这种异步方式,那么自然也就没办法获取future,所以为了future的获取更加灵活方便,就需要有这个promise对象。

2024-02-05 23:52:25 1042

原创 MirrorLayer可以正常触摸屏幕原理分析

在多屏互动时候有一个屏幕的画面是一个MirrorLayer,另一个屏幕画面是真实的,即2个屏幕上有一个是MirrorLayer,这个时候疑问就来了,经过在aosp13上体验发现,两个屏幕画面都可以正常接受触摸事件进行正常的事件响应。到这里就可以理解为啥两个屏幕各自的mirrorlayer和正常layer都可以正常接受触摸事件的原因,因为在input派发选择窗口,遍历window时候,都对应是同一个windowinfo。这里的inputInfo就是最为关键的信息,也就是最后传递给input端的关键点。

2024-02-01 23:54:40 936

原创 skia实现动态差异录屏截图logo添加-千里马SurfaceFlinger专题实战项目背景介绍

大家好!因为前面一直忙于讲解surfaceflinger层面到的原理和源码分析部分,一直没有一个系统的项目来给大家练手实现,今天来实现一个sf层面的一个小项目。具体项目背景信息如下

2024-01-30 11:49:36 422

原创 HAL/SurfaceFlinger专题之HWC和GPU合成部分更新通知

hal/surfaceflinger/perfetto专题,马哥经过若干天的努力,终于把sf最重要合成部分搞定

2024-01-22 10:39:55 544

原创 OutputLayer的析构方法解读

看到了finalizePendingOutputLayers明显好像没啥啊,没看到有调用destroyLayer啊,但是Trace中确实有展示对应destroyLayer,这个是为啥?赋值时候就会导致mCurrentOutputLayersOrderedByZ析构,从而一系列的析构方法回调。执行collectVisibleLayers时候具体还会触发destroyLayer操作,还是个跨进程的。明显属于在finalizePendingOutputLayers触发的调用。堆栈打印出来就很明显啦,那就是在。

2024-01-11 12:33:46 425

原创 SurfaceFlinger的commit/handleTransaction分析

hi,粉丝朋友们:大家好!本节我们来讲解一下SurfaceFlinger主要合成工作的第一个阶段任务commit一般SurfaceFlinger端的合成工作主要有两个1.commit主要就是处理app端发起的一系列transaction的事务请求,需要对这些请求进行识别是否当前帧处理,处理过程就是把事务中的属性取出,然后更新到Layer中,偶buffer更新的还需要进行相关的latchbuffer操作。

2024-01-08 14:03:02 1612

原创 Ubuntu上安装VMware+win11系统手册

Linux 版下载地址:https://www.vmware.com/go/getworkstation-linux。再出现下面界面其实也没问题,等一会就行,然后会出现如下界面。剩下其他步骤一步步点击既可以,最后上传成功的图片。出现如下界面其实没有关系,等一会。按一下enter其实就可以继续。

2024-01-08 09:46:08 1547

原创 BLAST深入源码剖析

进行queue动作完成后,紧接着就是runInSync执行,这个方法参数非常关键,代表是一个同步事务等待同步后进行回调执行的部分,而且这个时候会有一个Transaction的参数,里面就包含了相关WindowContainer的绘制相关事务。注意对于prepareSync属于WindowContainer的基类方法,Task没有实现那就是默认WindowContainer实现的,所以一直会调用到有自己实现的WindowState的。

2024-01-04 15:43:40 1008

原创 千里马2023年终总结-android framework实战

2023年开始全职做课程后,有了更多时间投入到framework的课程研发,可以把在公司里面的很多丰富经验都放到课程中来分享给大家。大专题课程都是经过非常严格的调研,主要调研因素有以下几个:1、这个专题课程马哥自己是不是有这方面比较深入的经验分享,比如马哥经常在公司里面处理wms闪黑等疑难问题,这类经验属于不太可能从网络学得到的,也基本上很少程序员知道也不可能外传的有用“绝招”,这种在我课程里会毫无保留地分享给大家。

2023-12-31 02:38:46 1773 2

千里马android framework学习课程资料下载

千里马android framework学习资料下载 车载车机系统开发,android 系统源码 aosp 11/12/13/ wms学习,android系统闪黑问题解决 车载多屏互动实战项目经验 surfaceflinger图层实战应用 input全局触摸实战 冻屏触摸问题分析实战 深入理解framework重点模块wms 胜任wms相关的需求开发 掌握系统闪黑,冻屏疑难问题解决 成为业界wms/ams模块专家打下基础

2023-06-28

新加一个app源码到packages/apps编译Android.mk

Android Framework开发之新加一个app源码到packages/apps编译Android.mk配置 hi,粉丝朋友们大家好! 近来有朋友反馈在看我的android framework实战开发合集课程时候 (https://download.csdn.net/combo/detail/2202) 需要购买可以参考直接找千里马最优惠:https://blog.csdn.net/learnframework/article/details/124086882

2022-04-16

haxm-windows_v7_5_1新版本github.zip

Enable VT-x in your BIOS security settings, ensure that HAXM is installed properly. Try disabling 3rd party security software if the problem still occurs.问的解决方法 原文链接:https://blog.csdn.net/learnframework/article/details/117537868

2021-06-04

Android Framework学习资料,系统开发,Framework开发

千里马android framework学习资料下载 车载车机系统开发,android 系统源码 aosp 11/12/13/ wms学习,android系统闪黑问题解决 车载多屏互动实战项目经验 surfaceflinger图层实战应用 input全局触摸实战 冻屏触摸问题分析实战 深入理解framework重点模块wms 胜任wms相关的需求开发 掌握系统闪黑,冻屏疑难问题解决 成为业界wms/ams模块专家打下基础

2021-05-21

空空如也

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

TA关注的人

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