- 博客(225)
- 资源 (71)
- 收藏
- 关注
原创 OpenHarmony下musl编译工具链普法
LLVM 成长之后已成为众多编译工具及低级工具技术的统称,使得这个名字变得更不贴切,所以开发者决定放弃这个缩写的涵义,现在 LLVM 已独立成为一个品牌,适用于 LLVM 下的所有项目,包括 LLVM 中介码、LLVM 除错工具、LLVM cpp 标准库等。对于一个比较大的第三方库,其头文件和库文件的数量是比较多的,如果我们一个个手动地写,那将是相当的麻烦的。事实上,pkg-config只是一个工具,所以不是你安装了一个第三方库,pkg-config就能知道第三方库的头文件和库文件的位置的。
2024-03-06 09:32:45 1116 1
原创 Android minigbm框架普法
因为前端就是gralloc hal的接口定义,都是一致的,然后后端backend抽象出来,然后根据实际的情况,调用具体的gpu用户层接口实现!这里我们可以看到这里抽象出来了几种典型的GPU的backend,然后再根据前面获取到的drm的驱动名称进行匹配,匹配到了则返回合适的backend,没有则返回NULL。这里我们以evdi为例子来进行相关的分析。minig的核心主要是提供gralloc的HAL实现,但是我看它也提供了私有的HIDL service实现,关于HIDL的实现这个暂时不在我们考虑的范围之内。
2024-03-01 16:40:28 1320 2
原创 OpenHarmony下GN语法普法
鉴于无法测试列表项的添加引入,可以这样使用:设置一个文件或标志的主列表,然后根据各种条件删除不适用于当前版本的文件或标志。构建应该做的大多数事情通常都可以在不这样做的情况下来完成,如果你觉得有必要,这可能表明你在元构建中做了太多的工作。一个值可以是一个域。当最终在命令中使用源路径时,它们会转换为对应于操作系统的(OS-appropriate)路径,这些路径是绝对的或相对于构建目录(运行命令的位置)的路径。这意味着,例如,当您定义target目标时,您在块内执行的任何操作都不会“泄漏”到文件的其余部分。
2024-02-20 16:58:06 1117 2
原创 OpenHarmony下gn相关使用
为了提高OpenHarmony下移植vivante gpu的成功率,先得把准备工作做足了,这样后续就好搞了。所以本文档的核心工作介绍GN构建工具在OpenHarmony中的常见使用方法,指导三方库由cmake或者其它的脚本构建到GN构建的转换!好了今天的博客OpenHarmony下gn相关使用就到这里了。当使用GN进行相关的构建时,需要了解如何指定动态库、静态库和可执行文件的构建规则。在GN中,可以使用executable模板来指定可执行文件的构建规则。3.4 GN在OpenHarmony上的扩展。
2024-02-20 16:52:18 950 1
原创 关于Android下gralloc,hwcompoer以及surface模块的重新认识
native_handle/native_handle_t只是定义了一个描述buffer的结构体原型,这个原型是和平台无关的,方便buffer在各个进程之间传递,注意成员data是一个大小为0的数组,这意味着data指向紧挨着numInts后面的一个地址.我们可以把native_handle_t看成是一个纯虚的基类.对于native_handle和native_handle_t,以及private_handle_t这三个类型可以看作是同一个东西,而buffer_handle_t则是指向他们的指针.
2024-02-19 19:06:57 1227 1
原创 Android下SF合成流程重学习之GPU合成
通过上述的代码我们可以看到在启动之初就搭建好了EGL环境,并将当前线程与context绑定,为后面使用gl命令做好准备,然后创建了ImageManager 线程,这个线程是管理输入Buffer的EGLImage,然后创建了GLFrameBuffer,用来操作输出的buffer。当需要GPU合成时,会通过生产者RenderSurface::dequeueBuffer请求一块图形缓存,然后GPU就合成/绘图,把数据保存到这块图形缓存中,通过RenderSurface::queueBuffer提交这块缓存。
2024-02-18 16:30:12 1472 1
原创 Android下SF合成流程重学习之Refresh流程
至此,SurfaceFlinger刷新的主体函数分析完了,可以看出来,如果是走device合成,SurfaceFlinger是直接把layer信息提交给hwc,由hwc去合成.prepareFrame 的作用是根据hwc的能力选择合成方式,如果是device合成则直接走hwc present上屏,如果是GPU合成后面则走hwc validate,然后根据hwc过来的变化改变layer的合成方式。composeSurface的主要核心逻辑是针对GPU合成,对于device合成,则直接return了。
2024-02-18 16:14:56 1183 3
原创 Android下SF合成流程重学习之onMessageInvalidate
handleMessageInvalidate主要作用是执行 latchBuffer 去 acquire 应用queue过来的Buffer,然后拿到queueBuffer时设的Bufferslot一些状态属性给到BufferQueueLayer的mBufferInfo,同时还把这个Buffer做成EGLImage为后面的GPU合成做准备,期间都是数据之间的传递,所以说SurfaceFlinger并未真正触碰Buffer的内容。总之,青山不改绿水长流先到这里了。本篇引用的代码,主要是Android R的。
2024-02-18 16:13:05 1163 1
原创 普法GraphicBuffer诞生以及跨进程传递
SurfaceFlinger进程 和 IAllocator服务进程之间通过 hidl_handle 类型的数据传递 图形buffer共享内存的fd数据传输中对 hidl_handle 类型数据特化处理,并把binder数据类型设置为 BINDER_TYPE_FDAbinder内核对 BINDER_TYPE_FDA 类型数据特化处理同时在 IAllocator.allocate 的回调函数中调用 IMapper.importBuffer 把内存映射到当前进程。
2024-02-18 14:01:08 948 3
原创 repo sync fatal: this operation must be run in a work tree
又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。由于这是一篇实战类型的博客,所以废话不多说,直接上解决办法,其最最核心的逻辑是直接删除.repo内报错的对应的.git文件即可,我们这里以上面的adeb为例,来进行说明。并且注意上述-j4 --fail-fast的参数,是在进行repo sync时候报错会提示执行的,这个也不能解决上述错误!注意,这里发生这个问题通常是在进行APSP下载,执行repo sync的时候异常中断导致的!
2023-05-23 10:17:57 1431 1
原创 OpenHarmony dump渲染和合成图层SurfaceBuffer指南
好了,感慨也发完了,是时候切入正题了。各位读友,千万不要喷我,因为我这也是第一次深入到OpenHarmony显示这块的源码逻辑,为啥我深入到了这块,因为入职了一家原厂。是的,这是因为无论是渲染的图层还是合成之后的图层它们都是通过SurfaceBuffer来进行存储指向的。有的只有是兄弟就砍一刀。其中,我们引用上述封装好的dump函数时候,我们在对应的BUILD.gn中必须,引入如下的库和头文件,如下。然后将获取到的地址中的内容,以一定的格式进行存储,通常是GRB888格式(也可以进行相关的封装)
2023-05-19 10:06:15 1739 11
原创 OpenHarmony下如何打印C/C++调用堆栈
没有关系,因为你看到了这篇,从此可以为你打开新世界的大门,增加一种调试手段,那就是OpenHarmony下打印C/C++调用堆栈。OpenHarmony值路漫漫吾将上下而求索,总之,各位,青山不改绿水长流先到这里了!这里的BUILD.gn必须是你需要跟踪堆栈的文件所对应的BUILD.gn中,而不是随便一个。这里的BUILD.gn必须是你需要跟踪堆栈的文件所对应的BUILD.gn中,而不是随便一个。这里的BUILD.gn必须是你需要跟踪堆栈的文件所对应的BUILD.gn中,而不是随便一个。
2023-05-12 09:14:41 1598 2
原创 普法OpenHarmony送显流程
OpenHarmony送显流程分析OpenHarmony送显流程分析引言本文档主要记录OpenHarmony在渲染完成之后如何进行合成和送显流程的。这个过程牵涉的代码很多,而且流程也是比较繁琐的。所以我一定要坚持下来。千万不能半途而废,也不要想着一口气吃出一个胖子,路漫漫其修远兮吾将上下而求索!一. 应用端发送NextVSnc请求,服务端响应还记得那年大明湖畔的夏雨荷吗!
2023-05-06 17:23:44 2445 5
原创 从bootanimation出发分析OpenHarmony下Gralloc buffer管理机制
从bootamition出发分析OpenHarmony下Gralloc buffer管理机制从bootamition出发分析OpenHarmony下Gralloc buffer管理机制引言这个文档主要记录从bootamition角度出发,分析OpenHarmony下对gralloc buffer的管理!由于OpenHarmony图形子系统过于复杂,且个人由于能力有限,这里我仅从gralloc buffer出发,从整体上对Gralloc buffer进行梳理!虽然过程会很艰辛,但是我一定要坚持下来。
2023-05-06 17:16:08 1233 3
原创 Android/Linux 子系统Graphics图形栈入门普法介绍
GTK+和QT是GUI toolkits,属于软件库,类似c语言的stdio.h,win32,java里import的各种外部包,可以任开发者调用(应该是C/C++使用的库)去创建一些图形界面里面的控件,例如button,下拉菜单,窗口等。而人机交互的本质,是人脑通过人的输出设备(动作、声音等),控制终端的输入设备,终端经过一系列的处理后,经由终端的输出设备将结果输出,人脑再通过人的输入设备接收电脑的输出,最终实现“人脑终端”之间的人机交互。这是一个非常耗时的操作,GPU 的引入就是为了加快栅格化。
2023-01-16 10:17:51 4709 14
原创 Android AOSP和Android-X86源码下载编译终极普法
其实这个说简单也简单,说复杂吗也不复杂。如果仅仅是想获取代码,不需要tag或者git信息,可以有一种更加快速的方法,repo sync --no-tags --no-clone-bundle。在具体的编译过程中,可能会遇到各种错误提示,通常是有一些依赖没有安装造成的,朋友可以在编译的过程中自行安装即可。2.如果使用清华的源下载的速度非常慢的话,建议开发者可以切换到中科大的源进行先关的操作,具体可以详见博客。1.由于国内的环境,此处默认大伙是不能翻墙的情况下进行相关源码的下载,如果能翻墙的话那就比较简单了。
2022-12-08 18:09:16 2306 7
原创 Android R系统aidl文件怎么对应的java文件找不到了?
这不趁着这两天有点空闲时间,准备调试下Android,可是尼玛确突然发现Android的系统aidl文件转换生成的java文件一直找到不,我find,grep找了个寂寞怎么也找不到。这才有了今天的博客。而对于Android R中如果aidl文件被标记为hide,则需要通过aidl命令,手动转换aidl文件到java文件。通常的一个好的命令通常会提供说明使用的命令,它肯定也不例外,我们可以在终端下输入aidl或者aidl --help。对于实战类型的博客,我们不来虚的,必须真刀真枪的实干才可以。
2022-11-11 17:35:18 2083 5
原创 Android R窗口Window的requestlayout过程大揭秘
是的我也有这个感觉,因为我这篇博客是为了后续引出应用Surface创建而添加的一个博客,所以写得简单也是清理之中的,因为该篇博客是一个过渡主要是为了后续的博客不唐突而添加的。虽然这里我提到了了应用绘制三部曲,但是很遗憾我们今天的重点也不是它,我们今天的重点是ViewRootImpl,如何向WMS服务请求relayoutWindow布局,主要是填充Surface,构建对应的Window的BufferLayer。好了,不多说了,我们直接看代码!该系列博客尘封很久很久了,是时候该再续前缘,重新上路了!
2022-11-11 11:28:37 1369 4
原创 普法Android.mk中的一些宏和Android.bp对应关系
陆陆续续有不少小伙伴在后台咨询关于Android.mk怎么转换成Androdi.bp的问题,虽然也解答了不少,但是也有一些当时我没有能够给出及时的答复(不是我不想答复,而是确实有些我当时也没有一个具体的答案)。这里最后留下一个小彩蛋,对于上述的Android.mk读者朋友看看能否正确的转换为Android.bp,当然也希望读者能我一起探讨是最好的了。同时在同一个目录下面的androidmk_test.go,为我们提供了许多Android.mk转换为Android.bp的实例,这个非常值得我们借鉴。.....
2022-08-09 14:44:59 2378 2
原创 普法安利一个调试debug小技巧
博客沉寂很久,肯定不是干坏事被抓吃公交粮食去了!而是最近忙着给OpenHarmony鸿蒙适配GPU渲染加速。尼玛,其中的各种坑啊,填了一个又一个,其中最最拖延了开发进度的事情就是给鸿蒙适配我司的GPU的时候,无法使用鸿蒙自身的hilog调试!不能查看调试相关打印信息,你说这个还能继续下去吗。辛亏最最后想到了一种间接的调试小技巧,通过函数回调OpenHarmony鸿蒙进行相关打印。 当你在一个操作系统上移植第三方库时候,由于种种原因第三方库无法直接使用操作系统的debug接口,那么真的没有办法了吗,这里
2022-07-06 17:36:24 1055 3
原创 Android怎么开发自己底层的NuPlayer音视频播放器框架
Android怎么开发自己底层的NuPlayer播放器框架引言 远离博客好久了,因为一直在忙于新的一个领域那就是Android底层音视频播放器框架的搭建,此时此刻公寓干的差不多了(虽然其中还是有许多的不足,和需要改进的,但是万事开头难吗,还是有一种小有成就的感觉!)。本篇博客不会大书特书音视频领域的相关知识,因为它太庞大了,那我写这篇博客的目的是什么呢,主要是总结概括一下如何搭建自己的Android底层音视频播放器框架。重要的事情说三遍:1.如果多Android音视频领域不感兴趣,可以
2022-05-23 09:43:27 1822 12
原创 Android怎么prebuilt预制动态库和静态库
Android.bp和Android.mk怎么预制so引言 关于Android相关的源码和技术分析博客,停更有蛮久的了。因为一直忙于新的工作和新知识点的学习当中!当然药不能停,错了博客不能停!正好今天偷得一会闲,也恰好有个小伙伴咨询在Android高版本上面(R Q)上面怎么进行预制已经编译好的so。当时就简单的给小伙伴答复了下,这里就简单的安排总结一下,所以没有啥矫揉造作的,直接开干就是了。重要的事情说三遍,重要的事情说三遍,重要的事情说三遍!这里的所说的预制不是简单的把so库简单拷贝
2022-04-07 10:49:17 9188 19
原创 git删除相关历史提交记录,相关文件保持当前状态
git删除相关历史提交记录,相关文件保持当前状态引言 新年新气象,趁着现在新的一年开始项目的事情还不是非常繁忙的时候,多整点下酒菜。这不实战类型的博客记录又开始了!当然实战类型的博客,肯定是有相关的实际需求才会诞生的,这里我们来简单复盘一下实际需求的诞生和由来!场景一:原来我们有一个私有的仓库不对外开放,当开发到一定程度的时候,希望对外开放,在准备开发前当然得检查一番不是,但是在检查的时候,我们误提交了某些隐私文件(肯定不是朋友们想的那种隐私了啊,莫多想。这里的隐私可能牵涉到密码啊,
2022-02-08 17:12:26 1904 1
原创 Android HIDL模型下HAL Service添加SELinux规则实战
Android HIDL模型下HAL Service添加SELinux相关规则实战
2022-02-07 17:19:29 6803 5
原创 Ubuntu git服务器搭建指南
Ubuntu git服务器搭建指南引言 关于Android相关的源码分析博客,停更有蛮久的了。因为一直忙于新的工作和新知识点的学习当中!当然药不能停,错了博客不能停!正好在最近的工作中,需要自己从头开始搭建自己的git服务器供团队使用(不要问我,为啥这个技能一直没有学会,因为以前有专门的小组或者说人员来干这个事情,现在是一穷二白必须自己亲自下场干!)。通过本篇博客,我们将学会如何搭建自己的Git服务器(可以作为共有,或者私有仓库使用,这个就看自己的需求了).那么搭建我们的gi
2021-11-22 11:49:17 1407 5
原创 repo sync repo reset: error: entry ‘comand.py ‘ not uptodate . cannot merge
repo reset: error: entry 'comand.py ’ not uptodate . cannot merge引言 又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。捯饬点啥实战的呢,这不吃着火锅,唱着歌,正准备下载下AOSP的源码来玩一玩,可是当我切换到一台新的服务器上第一次正准备repo sync下载AOSP源码的时候,怎么也不成功,一直提示如下错误:Fetching: 100% (784/784), done
2021-11-15 14:22:00 5516 3
原创 Android dump渲染和合成图层GraphicBuffer指南
Android dump渲染和合成图层GraphicBuffer指南引言 博客停更很久了,提起笔来渐感生疏啊!看来,还是得抽出时间来更新更新啊!好了,感慨也发完了,是时候切入正题了。本篇博客将主要详细介绍如何dump Android渲染和合成图层GraphicBuffer,并通过YUV软件查看流程!通过本篇博客,读者将会至少学会如下两点:通过dump Android渲染图层GraphicBuffer,查看Android渲染结果是否正确通过dump Android合成图层Graph
2021-11-08 18:47:01 6876 31
原创 构建Android AOSP内核
构建Android通用内核引言 本文档将主要详细介绍为 Android 设备构建自定义内核的流程。在该文档中我们将学会选择正确的源代码,构建内核,以及将结果嵌入到根据 Android 开源项目 (AOSP) 构建的系统映像中。当然我们也可以使用 Repo 获取更多最新的内核源代码,并通过在源代码检出的根目录下运行 build/build.sh 来构建这些内核源代码,而无需更多配置。由于我们这里主要说明的是通用内核,所以通过根目录下的build/build.sh来构建内核是不行的
2021-07-08 11:13:05 3346 10
原创 Android Q userdebug模式framework层调试指南
Android Q userdebug模式framework层调试指南引言 随着Android版本的迭代,原来先前的一些调试方法都发生了相应的变化譬如我们常见的framework层的调试,这里我们简单的来说明一下Android Q版本userdebug如何调试framework层!注意这里的Android版本为Q(10),且模式为userdebug!这点需要注意。一.快速调试service.jar 由于这是实战性的东西,没有啥好过多语言性描述的!直接上步骤:1.构建好编
2021-06-29 18:44:21 2254 10
原创 PackageManagerService启动详解(八)之扫描data分区应用安装目录阶段流程分析
PKMS启动详解(八)之BOOT_PROGRESS_PMS_DATA_SCAN_START阶段流程分析Android PackageManagerService系列博客目录:PKMS启动详解系列博客概要PKMS启动详解(一)之整体流程分析PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析PKMS启动详解(四)之Android包信息体和包解析器(上)PKMS启动详解(五)之An
2021-03-26 16:59:37 7375 11
原创 PackageManagerService启动详解(七)之扫描系统应用安装目录阶段流程分析
PKMS启动详解(七)之BOOT_PROGRESS_PMS_SYSTEM_SCAN_START阶段流程分析Android PackageManagerService系列博客目录:PKMS启动详解系列博客概要PKMS启动详解(一)之整体流程分析PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析PKMS启动详解(四)之Android包信息体和包解析器(上)PKMS启动详解(五)之
2021-03-23 17:13:42 2858 6
原创 PackageManagerService启动详解(六)之Android包信息体和解析器(下)
PKMS启动详解(流)之Android包信息体和包解析器(下)引言 通过前面不懈的努力,终于Android包信息体和包解析器要到完结篇了,此处的我们值得掌声(鲜花就算了,我们coder还是很实在的)!在前面的博客PKMS启动详解(五)之Android包信息体和包解析器(中)我们从Android包管理机制的设计者角度出发,着重分析了:Android包管理机制中的Android包解析器的PackageParser成员信息(主要是用于解析Android包的各种配件信息,不是配件信息不是配牛)
2021-03-17 11:39:53 4427 22
原创 PackageManagerService启动详解(五)之Android包信息体和解析器(中)
PKMS启动详解(五)之Android包信息体和包解析器(中)Android PackageManagerService系列博客目录:PKMS启动详解系列博客概要PKMS启动详解(一)之整体流程分析PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析PKMS启动详解(四)之Android包信息体和包解析器(上)引言 ...
2021-03-13 14:29:23 2807 21
原创 Android 11(R)快速开发调试framework和services
Android 11(R)快速开发调试framework和servicesAndroid源码编译系列博客:Android.bp你真的了解吗Android.bp入门指南之Android.mk转换成Android.bpAndroid.bp入门指南之浅析Android.bp语法Android.bp正确姿势添加宏控制编译指南Android高版本P/Q/R源码编译指南如何在线查看Android源码自带学习文档docs引言 在前面的博客Android高版本P/Q/R源码编译指南中,从
2021-03-12 17:03:12 5217 30
原创 PackageManagerService启动详解(四)之Android包信息体和解析器(上)
PKMS启动详解(四)之如何通过PackageParser对Android安装包进行管理Android PackageManagerService系列博客目录:PKMS启动详解系列博客概要PKMS启动详解(一)之整体流程分析PKMS启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析...
2021-03-06 16:22:02 3868 17
原创 解决Android logcat: Unexpected EOF!方法指南
logcat: Unexpected EOF!This means that either the device shut down, logd crashed, or this instance of logcat was unable to read logmessages as quickly as they were being produced.If you have enabled significant logging, look into using the -G option t
2021-03-05 14:24:35 24891 13
原创 PackageManagerService启动详解(三)之开始初始化阶段流程分析
PKMS启动详解(三)之BOOT_PROGRESS_PMS_START流程分析Android PackageManagerService系列博客目录:PackageManagerService启动详解系列博客概要PackageManagerService启动详解(一)之整体流程分析PackageManagerService启动详解(二)之对已安装应用怎么进行持久化存储管理?引言 在前面的博客PackageManagerService启动详解(二)之对已安装应用怎么进行持久化存储管
2021-02-07 17:04:14 3920 14
原创 PackageManagerService启动详解(二)之怎么通过packages.xml对已安装应用信息进行持久化管理?
PackageManagerService启动详解(二)之对已安装应用怎么进行持久化存储管理?Android PackageManagerService系列博客目录:PackageManagerService启动详解系列博客概要PackageManagerService启动详解(一)之整体流程分析引言 在前面的博客PackageManagerService启动详解(一)之整体流程分析中我们概述了PKMS启动的整体流程,按照正常的逻辑本篇博客将要对PKMS启动的第一阶段BOOT_PROG
2021-02-01 15:46:00 2508 15
原创 PackageManagerService启动详解(一)之整体流程分析
终于要拉开PKMS启动详解系列博客的序幕了,当然读者最好能先阅读一下PackageManagerService启动详解系列博客概要对我们的整个系列博客有一个整体的了解。在今天的博客中我们将会从整体上来介绍PKMS的启动流程,所以我们只会重点关注PKMS的整个启动流程,让读者先从整体上有一个认识。至于在源码分析中注释的代码内容,读者可以先有一个概括,在后续的博客中我们会采取庖丁解牛的方式逐一分析。
2021-01-28 10:42:10 5930 20
原创 PackageManagerService启动详解系列博客概要
PackageManagerService启动详解系列博客概要引言 一直在筹划着写一个系列的博客关于PKMS服务启动流程详解的(在本篇以及后续的一系列博客中为了简述统一将PackageManagerService简写为PKMS),但是一直自我感觉功力不够,不是因为本人不够自信,真的是事出有因啊!PKMS的启动涉及到非常多的逻辑,其启动流程是比较复杂的!这里的启动流程复杂并不是说它涉及的原理有多么多么的深奥或者晦涩,而是PKMS作为Android系统中核心服务之一,它管理着所有跟Packag
2021-01-25 20:01:33 2698 10
Android不同版本SELinux的介绍
2019-01-01
谷歌自带文档查看工具.7z
2020-12-23
AsyncChannelFun.zip
2020-07-22
Settings_Framework_ethernet_patch.zip
2020-04-24
JNI_NDK_GUIDE.zip
2020-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人