
系统源码
文章平均质量分 79
千里马学框架
安卓架构师,安卓技术专家,android framework
展开
-
systemserver为啥很少同步跨进程调用app/DeadSystemException相关问题分析套路
基于上面分析那就基本上明白了导致系统死锁的直接原因,那就是因为systemserver发起了个同步的跨进程调用,这个跨进程调用半天没有得到对方回应,导致systemserver一直卡在这个同步调用这里。原创 2024-04-30 11:03:01 · 1489 阅读 · 0 评论 -
WMS实战之解决小米等国内桌面被强制横屏布局乱问题
所以就不得不跟着横屏显示。国内手机桌面基本不支持横屏,都是强制竖屏模式,所以对横屏基本没有适配对应的布局,所其实这些桌面是不希望看到有横屏情况展示出来,但是经常又会又一些小场景会导致桌面被强制横屏,所以看起来的体验比较差,就经常容易让测试提bug,用户体验也很糟糕。2、桌面支持横屏显示,这个理论是可以的,但是也不太现实,因为桌面横屏修改等需要波及面还是比较多的,很多都是业务类工作,工作量较大,而且也只是为了修改一个这个体验性bug,性价比低。那下面千里马就带大家开干,,把这个显示异常bug修复了。原创 2023-04-07 22:47:10 · 2079 阅读 · 6 评论 -
android 11/12/13系统屏幕旋转动画分析-车机手机系统工程师必备
然后跟着这个堆栈一直追既可以到startFreezingDisplayLocked,这个方法代表是冻屏,一般要进行屏幕整个旋转,肯定需要冻屏方便让我们整体画面进行动画。明显RotationLayer属于截图Layer,后面Activity属于DisplayContent的Layer,DisplayContent这个图层Layer执行动作是竖屏到横屏旋转,而ShotscreenLayer明显是又是横屏到竖屏的过程,具体可以看课程视频动画,这里blog就不上动画过程了。什么时候开始启动屏幕动画呢?原创 2023-04-05 22:26:40 · 2579 阅读 · 0 评论 -
千里马带你学framework:android 13 WM_SHELL_STARTING_WINDOW相关记录笔记
这里是为啥阿,因为高版本StartingWindow已经移殖到了Systemui进程,让Systemui来负责窗口创建相关,所以自然就wms端处理不了,要跨进程让systemui处理。这里注意,明显用wm开启时候,和正常wm相关的打印输出也是不一样的,明显显示是No IProtoLogGroup named WM_SHELL_STARTING_WINDOW。这个时候logcat -s WindowManager是没有这个shell相关打印,必须要。才可以打印出相关的Proto日志。原创 2023-03-12 13:14:34 · 1772 阅读 · 2 评论 -
android 13 WMS/AMS系统开发-窗口层级相关Task/ActivityRecord/WindowState/WindowToken放置图层创建 第三节
hi,粉丝朋友大家好!上几集已经给大家讲解了如何构建出0-36层的层级树及相关源码分析,这节来分析离我们最近的Task/ActivityRecord/WindowToken/WindowState/等是怎么添加到这个层级树里面去的。原创 2023-02-23 15:42:16 · 2796 阅读 · 2 评论 -
android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer第二节
接着上一节课学习,我们已经清楚的知道了层级结构应该怎么看,根据dumpsys的输出可以完美复原出层级结构树,也理解了结构树对于层级结构的控制作用。但还没有从源码部分对这个结构树进行一个分析,即分析生成这个结构树的源码部分。原创 2023-02-20 16:41:12 · 4844 阅读 · 0 评论 -
android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer
官方注释:给可以直接持有窗口的自己或它的孩子定义了一些公共的方法和属性,像RootWindowContainer、DisplayContent、DisplayArea、DisplayArea.Tokens、TaskDisplayArea、Task、ActivityRecord、WindowToken、WindowState都是直接或间接的继承该类。这里面主要的重要要成员变量就是mParent和mChildren,一个代表父节点一个代表子节点,而且子节点的list顺序代表就是z轴的层级显示顺序,list尾原创 2023-02-18 23:39:42 · 6069 阅读 · 2 评论 -
android 12/13 分屏设置Task的Bounds区域-系统车机开发必学
这里面进行对应分屏相关的一个业务处理, 比如分割线拖拽对两个分屏大小影响等。最后都会通过包装成WindowContainerTransaction对象,再通过WindowOrganizerController的本地代理,跨进程传递到systemserver的WindowOrganizerController类中进行处理.hi,近来研究分屏时候发现android 13上的分屏和以前的分屏代码差别比较大。最后就是调用的windowConfiguration.getBounds。其实Task的Bounds就是。原创 2023-02-13 22:47:32 · 2046 阅读 · 0 评论 -
安卓车机系统adb shell cmd 源码原理分析
这里大家如果学习过跨进程专题应该非常熟悉这个,可以看到最后其实是构造了一个Parcel调用了transact方法进行传递,当transact调用完成后就会到服务端的transact再调用到onShellCommand。然后他就会触发对应服务的onShellCommand方法,这个时候相当于和dumpsys命令非常类似,dumpsys命令是会触发到对应的服务的dump方法。1、解析出cmd命令后面的服务字符,根据这个服务字符去servicemanager寻找对应service,返回对应的BpBinder。原创 2023-01-14 00:05:35 · 2071 阅读 · 0 评论 -
aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚
hi,学员朋友,大家好!前期一直有同学在问我这边,学习framework需要什么额外设备么?这里其实我一直前期也是给学员说的,如果你是个新手,刚刚开始可以不用,完全可以跟着学习,用课程里面的模拟器。哈哈资格模拟器不要钱,也不存在变砖的可能性。原创 2022-12-25 23:10:37 · 5456 阅读 · 2 评论 -
clearCallingIdentity与restoreCallingIdentity-千里马framework系统源码实战详解
hi,粉丝朋友大家好:今天带大家来学习一个系统开发过程中大家即“熟悉”又陌生的两个方法,分别是clearCallingIdentity和restoreCallingIdentity,一般他们是成对出现在我们的framework代码中,但大家平时分析源码时候好像并没有在意他的真正作用是什么?为啥在框架代码分析时候可以看到他的大量出现?原创 2022-10-27 00:20:42 · 1081 阅读 · 0 评论 -
Android 12中系统Wallpaper详解1--锁屏透看壁纸和桌面透看壁纸的切换
那么其实我们可以猜测是不是锁屏window会去动态改变自己的FLAG_SHOW_WALLPAPER属性,在有桌面显示时候锁屏的window实际是没有这个属性,在锁屏状态下是有这个属性。先看桌面情况下壁纸,这个情况应该属于我们最为熟悉的,那么就不用多说,大概就是因为桌面Activity的配置主题xml设置一个类似showallpaper的属性既可以,就可以让桌面后面显示壁纸了。这个窗口在系统中有专门类进行他的显示情况,那就我们的WallpaperController类。前面疑惑中就写到正常应该是桌面。原创 2022-10-24 00:23:59 · 6774 阅读 · 0 评论 -
android 12 framework开发第53节-Activity的reLaunch及onConfigurationChanged android源码分析
今天要给大家分享内容就是我们应用开发时候经常会遇到问题,那就是如果系统一些属性变化了,比如语言,横竖屏幕,深色模式等。就会导致系统当前的TopActivity会进行destory后进行重新create情况。如果不想要reCreate Activity那么我们就需要到AndroidManifest中去声明对应的configChange,这个 时候就会让Activity不重新reCreate,即Activity可以不需要重建,但是Activity就会执行对应回调onConfigurationChanged。原创 2022-08-21 11:08:09 · 2796 阅读 · 2 评论 -
Android跨进程通信Client Crash后Server端onDestroy
hi,粉丝朋友大家好!好久没有给大家写blog了,哈哈,这里说声抱歉!实在家里比较忙,今天就来给大家分享一个跨进程专题课中学员问的一个问题,blog就来解答一下这个问题。原创 2022-07-23 00:51:39 · 1230 阅读 · 1 评论 -
手把手教你aosp android 12 pixel 解锁oem 编译刷入大全
hi,因为同学们学完了我的课程后,开始想玩一下google的pixel实体机,不想一直玩模拟器了,那么千里马老师今天也在咸鱼上掏了一个pixel 3来给大家展示一下这个google的机子怎么玩,其实我自己本身是有小米的lineage系统在玩,为了满足广大粉丝的好奇心也就自掏腰包买了个pixel玩,下面我们正式开始记录整个pixel 3的刷入自己编译修改的aosp代码:入门课,实战课,跨进程专题,input专题ps需要学习深入framework课程和课程优惠新课程优惠获取请加入qq群:422901085原创 2022-06-13 23:58:01 · 10844 阅读 · 0 评论 -
android studio导入android系统源码 development/tools/idegen/idegen.sh执行报错
1、make idegenbuild completed successfully (32 seconds)2、执行 development/tools/idegen/idegen.sh脚本test@test-Lenovo:~/aosp$ development/tools/idegen/idegen.sh find: 'out/target/product/emulator_x86_64/root/d': Permission denied这里大家看到这里Permission denied很原创 2022-05-16 21:25:07 · 3037 阅读 · 1 评论 -
Ubuntu 16G内存在android系统 10/11/12/13编译 framework时候经常oom内存不足,电脑卡死解决办法stubs-docs-non-updatable metalava
hi粉丝朋友们:在android高版本编译时候经常会遇到framework一个相关任务编译时候经常把内存吃满://frameworks/base:system-api-stubs-docs-non-updatable metalava merged导致oom即内存不足这种,那么怎么解决呢在不加内存条情况下Android手机大厂Framework系统-Input系统专题实战课https://ke.qq.com/course/4963459[入门课,实战课,跨进程专题ps需要学习深入framewo原创 2022-05-15 09:56:44 · 3818 阅读 · 10 评论 -
android framework高级开发-多屏异显触摸Presentation相关实战demo
hi,各位粉丝朋友大家好!近来有同学问到对于安卓的多屏异显相关问题,具体有时间也来给大家做个简单的多屏异显demo其他就不多说了,下面就开干:Android手机大厂Framework系统-Input系统专题实战课https://ke.qq.com/course/4963459[入门课,实战课,跨进程专题ps需要学习深入framework课程和课程优惠新课程优惠获取请加入qq群:422901085(获取demo源码)1、双屏模拟因为手机一般没有两个屏幕,所以这种硬件设备还比较难找,但是and原创 2022-05-08 23:32:53 · 2064 阅读 · 2 评论 -
千里马android framework开发解决Accessing hidden method限制,让应用访问隐藏方法(需要可以修改系统源码方案)
hi,粉丝朋友们大家好!今天来给大家分享一下,就是经常大家会做安卓系统开发工作问到一个问题,那就是我如果framework代码中增加了一个方法啥的,但是我又不想公开给第三方应用知道,只想让我系统的应用知道,那该怎么办呢?其实这个时候经常就会用到一个hidden的标签,来代表这个方法是隐藏方法,隐藏方法就是给系统内部用的,意味着第三方app就无法使用。这个其实也很常见,自从android p开始android系统就开始对访问hidden的限制越来越严格,虽然我们网络上有各种奇葩招来逃避不允许调用hidden原创 2022-04-27 00:29:09 · 11154 阅读 · 5 评论 -
Android Framework实战预制packages/apps下应用APK预制使用Android.bp方式
hi粉丝朋友大家好!以前在android framework入门课讲解过第三方应用apk的预制相关内容,那时候是基于Android 8.1的Android.mk,但大家依旧对Android.bp的预制不知道怎么做,所以很多粉丝经常私下问我,干脆这里给大家blog分享,这里我们来使用Android.bp进行预制,因为现在高版本大部分其实都是使用Android.bp,新版本packages/apps下面android 12几乎看不到Android.mk的身影,所以当然我们也需要与时俱进。但是Android.b原创 2022-04-19 12:07:08 · 3151 阅读 · 0 评论 -
Android Framework实战预制packages/apps下应用源码预制使用Android.bp方式
hi粉丝朋友大家好!上节课也给大家讲解了Android.mk方式我们桌面把Android Studio的gradle过程桌面预制到了系统源码的packages/apps下面,这里我们来使用Android.bp进行预制,因为现在高版本大部分其实都是使用Android.bp,新版本packages/apps下面android 12几乎看不到Android.mk的身影,所以当然我们也需要与时俱进。但是Android.bp相对来说资料较少,不像以前的Android.mk可以继承很多linux的makefile,所原创 2022-04-19 00:02:07 · 2898 阅读 · 0 评论 -
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反馈一个问题,那就是课程确实讲解了怎么预制apk的,但是否可以考虑补充讲解一下如果想增加一个app但是不是apk预制,而是源码增加的方式,即相当于我想把工原创 2022-04-16 23:13:33 · 3738 阅读 · 0 评论 -
android framework手机系统改机相关知识简单方案
hi粉丝朋友们大家好!近来有些粉丝朋友问我改机相关怎么玩,其实这个我一直觉得有点拿不出台面,害怕大家干坏事。。。哈哈,也许我想多了,我是个程序员技术上研究而已,我自己不干坏事就行。android手机改机其实是一个比较偏门的领域,但是市场需求好像还比较大,比如很多那种群控工作室。1、主流改机方案主要有2种:1.静态改机即这种就和我们手机一样,刷入出厂厂商就有机型等信息,刷入就不可以改变,这种改变的就是 系统机型相关ro类型的prop,需要改变只能重新编译代码修改都以小米5的lineage版本(这原创 2022-04-15 00:14:18 · 1960 阅读 · 0 评论 -
Android系统Input专题源码分析视频课程/千里马Framework/InputDispatcher/InputReader/模拟触摸事件
hi,亲爱粉丝朋友们:在粉丝朋友们强烈的支持下,千里马的Android Framework实战专题系列的-- Input专题课程已经杀青,千里马依旧坚持着,基础与实战结合的宗旨,让大家切身在实战中学习framework相关知识,配合案例实战训练,来进一步巩固相关知识,减低大家学习framework的难度,也提供给大家真正的企业级别开发的framework实战案例。程序员也唯有脚踏实地去跟着千里马老师课程一步步一节节的学习,跟着课程走一遍,每一步自己也去做了,深刻理解了,有问题问老师了,自己才可以算是真正意原创 2022-04-13 23:00:30 · 1601 阅读 · 1 评论 -
千里马 android framework之MotionEvent.ACTION_CANCEL怎么产生-讨厌的android触摸面试题
hi,粉丝朋友!大家对于MotionEvent.ACTION_CANCEL这个cancel事件是不是感觉又熟悉又陌生,熟悉是因为经常在onTouch识别触摸事件时候会把它和ACTION_UP放在一块处理,基本停留在字面意思理解为 “”取消“”新课程优惠获取请加入qq群:422901085Android手机大厂Framework系统-Input系统专题实战课[入门课,实战课,跨进程专题ps需要学习深入framework课程和课程优惠ACTION_CANCEL触发场景和原因:customTextV原创 2022-04-10 22:35:49 · 1979 阅读 · 1 评论 -
android framework InputManager模拟触摸事件inject详解实战开发-视频课程笔记
我相信触摸事件注入,即模拟触摸事件绝对是最受我们android开发者喜欢的,想想你程序可以自由的模拟出你的点击事件了,你就完全可以不用在手动了,可以帮你干各种各样的事。但是同学们可能对模拟触摸事件使用及其原理其实并不是非常了解,大部分都可能是基于使用级别的居多,至于使用过程中可能出现的问题,及模拟触摸事件本质上在android系统中的一个原理,其实大部分都不是很清楚,所以本节课就来带大家去深入了解这个模拟触摸事件相关的,这个blog当然只是课程的部分课件截图,需要更清楚认真可以看我的相关视频原创 2022-04-03 11:05:50 · 3367 阅读 · 1 评论 -
android framework开发-Input中触摸圆点与触摸轨迹源码分析
触摸圆点在InputReader阶段进行绘制划线是GlobalMonitor接收后绘制窗口,属于一种应用接收全局事件再绘制行为原创 2022-04-03 10:36:30 · 958 阅读 · 1 评论 -
android Input专题- Q/R/S 10/11/12 InputReader源码分析1
上节课已经讲到了InputReaderThread和InputDispatchThread已经启动了,调用了对应的run方法,这里会导致对应的threadLoop方法执行:native/services/inputflinger/InputReaderBase.cppbool InputReaderThread::threadLoop() { mReader->loopOnce(); return true;}这里会调用到mReader的loopOnce方法,这个方法将是非常原创 2022-04-03 10:08:45 · 2279 阅读 · 1 评论 -
android Input专题- Q/R/S 10/11/12 InputManager源码分析
1、SystemServer中InputManagerService创建与启动base/services/java/com/android/server/SystemServer.java private void startOtherServices() { //省略部分 traceBeginAndSlog("StartInputManagerService"); inputManager = new InputManagerService原创 2022-04-03 10:06:28 · 2316 阅读 · 1 评论 -
android多指控制协议详细解答
1.EV_SYN同步事件完,在事件开始或完成会有对应的code:0004:代表一个事件开始(不必要)0005:代表一个事件开始(不必要)SYN_REPORT:代表一个事件的结束 (必要)## 2.EV_ABS事件的一种绝对坐标类型对应code:2.0 ABS_MT_SLOT本质代表者不同手指,它的value代表手指id2.1 ABS_MT_TRACKING_ID原创 2022-04-03 10:04:39 · 2928 阅读 · 1 评论 -
android Input专题-getevent深入分析
hi,本节课我们来讲解一下经常做触摸相关开发同学都必须要掌握的一个命令:getevent下面将通过2个部分来分别讲解1、具体使用方法gemini:/ $ getevent -hUsage: getevent [-t] [-n] [-s switchmask] [-S] [-v [mask]] [-d] [-p] [-i] [-l] [-q] [-c count] [-r] [device] -t: show time stamps -n: don't print newlines原创 2022-04-03 10:02:06 · 3527 阅读 · 1 评论 -
Input专题讲解-简单介绍Input相关课程流程图笔记
基于linux系统的触摸数据流向:InputReader职责图:整体触摸数据流向图:原创 2022-04-03 10:00:10 · 871 阅读 · 1 评论 -
Android input专题--触摸事件中Split相关课程笔记
Android input专题–触摸事件中Split源码分析原创 2022-04-01 22:17:21 · 1163 阅读 · 1 评论 -
千里马Android Framework-input系统专题blog目录集合
千里马Android Framework-input系统专题blog目录集合这里将会列出视频课程中所有的可能用的相关资料集合blog链接原创 2022-04-01 16:30:57 · 1751 阅读 · 1 评论 -
Android 12/13 artifact_path_requirements错误 预制apk/预制bootanimation相关framework实战课程答疑
粉丝朋友在学习我的课程内置应用时候,和bootanimation时候,发现如果在Android 12/13 上预制apk时候发现有编译不过情况,报artifact_path_requirements相关错误这里乍一看估计99%的人都不知道怎么回事,这里其实可以从提示是可以看出来:大概是因为新版本artifact_path_requirements有对预装相关东西进行了规则检测,发现system/app/MyApp/MyApp.apk这种预制到system/app的情况属于违规了。原创 2022-03-17 12:17:49 · 5479 阅读 · 1 评论 -
android framework 系统native c/c++源码查看跳转工具-Ubuntu+VScode搭建
hi,粉丝朋友们大家好!因为之前我的入门课程中已经对android系统源码环境进行了讲解!当时我们用的是as进行的,但是as对于我们java文件确实是比较友好的,跳转和修改代码提示等也非常方便。但是对于我们如果是修改native如c/c++相关代码时候,就显得非常不友好了,连基本的样式颜色变化都没有,所以这里我们如果开发native程序比较多,或分析相关代码比较多的话就还是需要找一个比较好的工具进行,其实普遍比较主流的有2种:1、sourceinsight --这个基本做linux kernel相关使用原创 2022-03-06 00:01:26 · 2352 阅读 · 1 评论 -
android P/Q/R/S 9/10/11/12多任务手势动画OtherActivityInputConsumer情况-第一节
hi,在androi原创 2022-02-21 23:59:13 · 3259 阅读 · 3 评论 -
android framework开发之广播broadcast源码分析2-千里马
hi,上一节我们主要分析了broadcast的发送部分,本节我们来分析一下接受部分,即一般我们作为一个广播接受者是怎么一步步被AMS发送过来的信息的。一般我们注册成为一个广播监听接受者都是调用Context.java中的如下方法: public abstract Intent registerReceiver(@Nullable BroadcastReceiver receiver, IntentFilter原创 2022-02-11 00:28:32 · 1683 阅读 · 0 评论 -
android framework开发之广播broadcast源码分析-千里马
hi,粉丝朋友大家好!今天是2-8号,也是我春节第一天正式开工的日子,在这里首先祝大家新的一年技术进步,与千里马共同学习共同进步,共同升职加薪。今天要给大家分享的一个课题是大家都很熟悉的广播。这里将要分为2个部分来对广播进行分析:1、广播发送部分一般我们正常使用发送广播都会有调用一个context的sendBroadcas,方法原型如下: public void sendBroadcast(Intent intent);这里我们一般就是只想要传递一个intent参数既可以,这里调用conte原创 2022-02-10 00:19:58 · 2202 阅读 · 0 评论 -
Android10Q/11R/12S Service bindService系统源码分析1-千里马framework
背景hi,粉丝朋友们大家好!今天本来是想给大家写一下高级面试问题答案的,题目:如果一个进程自己调用自己的跨进程接口是否会通过binder,但是刚好这部分又要涉及到Service,那么就来给大家刚好源码级别分析一下bindService。首先贴出对应流程图:1、客户端调用bindService源码入门课,实战课,跨进程专题ps需要学习深入framework课程和课程优惠的加我qq:一般我们发起bindService来绑定远程服务Service,调用如下: Intent intent =原创 2022-01-24 00:41:46 · 4213 阅读 · 0 评论