
framework教程
文章平均质量分 80
千里马学框架
安卓架构师,安卓技术专家,android framework
展开
-
安卓窗口wms/input小知识NO_INPUT_CHANNEL剖析
NO_INPUT_CHANNEL主要给一些窗口完全不需要消费任何输入事件的情况,经典使用该flag窗口有SnapshotStatingWindow,ActivityRecordInputSink等。原创 2024-10-19 01:02:17 · 688 阅读 · 0 评论 -
android app执行shell命令视频课程补充android 10/11适配-千里马android
hi,有学员在学习跨进程通信专题课程时候,在实战app执行一个shell命令的项目时候,对课程本身的android 8.1平台没有什么问题,但是学员想要自己适配到android 11上,估计也是目前最新的android版本,因为普遍android S厂商都还没有发布,因为android 的大版本升级适配本身工作也不小,这里就对android app执行shell命令这一部分进行一个升级适配的补充,尽量让买课的学员可以直接用于最新的android版本。具体项目代码和详细视频讲解可以购买我的相关视频。原创 2024-10-16 14:39:30 · 979 阅读 · 0 评论 -
android系统中data下的xml乱码无法查看问题剖析及解决方法
高版本安卓主要是考虑到使用二进制xml1、二进制xml的性能方面速度比传统xml快2、占用数据体积比传统xml要小以上两个优势就是使用二进制xml根本原因,系统默认二进制xml也是可以通过标志位修改变成普通xml,但是要清除数据重新生成,想要二进制xml直接变成普通xml需要对原来的二进制xml进行解析后重新写入新的普通xml更多framework详细代码和资料参考如下链接其他课程七件套专题:点击这里更多framework假威风耗:androidframework007。原创 2024-08-07 14:56:41 · 1249 阅读 · 0 评论 -
android投屏程序线程无故卡死不执行,如何分析?
在针对线程无故卡死情况,日志方面也不打印输出情况,需要考虑多个手段来尝试定位分析出目前的线程状态原创 2024-04-08 14:49:47 · 1064 阅读 · 0 评论 -
手把手教你aosp13/14上实现PRODUCT_BOOT_JARS/boot jar(有源码)-千里马framework
每个平台都会有不同的实现,但是对于Tv这个app来说并不关心,因为他只依赖一个公共接口jar就行,至于你这个接口jar具体实现自己根据平台自己来实现。类似依赖是中间件jar,中间层,apk只依赖中间层接口,具体差异中间层自己去平台对接。经常设备厂商可能开发一些功能时候会有一些和芯片厂商打交道,比如mtk,海思,amlogic,高通啥的。1、系统应用的情况,这种最为简单,因为不需要考虑相关权限访问的问题。原创 2024-03-28 00:16:51 · 1555 阅读 · 1 评论 -
android studio platform使用体验分享(as无法跳转c/c++等native源码的福音,强烈推荐)
可以直接点击下载(提示目前只有ubuntu可以哈,其他没有,所以说跟着马哥使用ubuntu开发还是有很大优势,尝鲜方便)看看相关的官方介绍:languagesettings官方的介绍就以上一小段文字,总结如下:ASfP是专门用于开发aosp的ide工具,有着 Soong build system.,主要有以下几个特点语言支持部分:同时支持:C++, Kotlin, and Java 同时使用在ide中编程设置部分:可以配置你的编译target和具体的模块。原创 2023-09-13 11:38:33 · 2352 阅读 · 3 评论 -
android framework实战开发之WINDOWING_MODE_FREEFORM自由窗口相关
aosp默认并没有公开自由窗口模式,如果需要体验自由窗口模式必须要用如下命令进行开启输入完成后,可以在多任务的menu中发现freeform:点击这个freeform按钮即可以进入到自由窗口模式。原创 2023-06-25 23:41:12 · 3855 阅读 · 1 评论 -
android 13分屏源码分析之分割线拖动过程
hi,上一节已经分析完分屏的启动过程,本节开始来介绍分屏使用过程中对分割线的拖动过程。原创 2023-06-07 23:49:51 · 1792 阅读 · 0 评论 -
android T分屏流程systemserver端操作
2、针对task相关的2类操作,reorder和startTask两类都是包装成了HierarchyOp,对这类也是调用了applyHierarchyOp方法来进行处理。总体来看这个reorder相对来说操作还是比较简单,就是一个把RootTask放到第一位,即显示再最前面。的话这个看起来也很简单,对上面3个步骤也非常好理解,甚至可以自己写出相关的代码。可以看看通过下图先有个大概的Task区域及结构的了解,其实这个如果前期学习过。这里其实也可以猜想出systemserver端也一样要有类似的3步操作。原创 2023-06-01 15:45:09 · 1009 阅读 · 0 评论 -
android T 分屏流程之systemui部分/android framework车载车机手机实战开发
这里注意最后桌面调用了mSplitScreen.startIntentAndTaskWithLegacyTransition,这里的mSplitScreen就是一个binder代理,会调用到systemui的服务端。已经计算好了分屏的bound后,就需要把bound设置到WindowContainerTransition中进行传递,到了关键的:updateWindowBounds(mSplitLayout, wct);刚开始是SplitLayout的init。这个和reorder没啥区别。原创 2023-05-30 22:46:55 · 1777 阅读 · 0 评论 -
android T分屏 Launcher RecentsView部分介绍/android framework手机车机系统开发
其他TaskView动画就不进行相关的介绍了,都在这调用堆栈里面,到此时分屏在桌面多任务完成了第一步,把TaskView放到顶部(上屏),接下来要等待用户来手动选择一个下屏app,才可以构成真正意义的分屏。这里createTaskDismissAnimation其实就是上面那个短信应用上半屏幕部分显示的动画构建。点击后会动画进入如下图一样状态,这个短信app放到上面,下面多任务依旧是多任务,位置确实变化了。原创 2023-05-27 23:32:23 · 1074 阅读 · 0 评论 -
PipMenuView原理讲解-车载车机手机安卓framework系统开发
上面代码已经清楚到了ViewRootImpl已经把对应的PipMenuView设置到了ViewRootImpl,但是好像并没有看到PipMenuView这个图层有添加到SurfaceFlinger图层,其实核心还是在ViewRootImpl。上面就已经讲解清楚了PipMenuView这个画面是怎么一回事,为啥dumpsys window看不到,但是surfaceflinger结构树可以看到。这里又发现是调用了PerDisplay的addView。是否发现又多了3个按钮,但是这个窗口到底是啥呢?原创 2023-05-25 01:02:00 · 432 阅读 · 0 评论 -
Pip小窗模式到全屏模式源码分析-android framework车载车机手机系统开发
这里发现较为简单,功能就是响应一下onClick,然后启动hideMenu,会启动一个动画进行hide。原创 2023-05-25 18:23:13 · 578 阅读 · 0 评论 -
安卓车机手机系统开发--多窗口模式之PIP详细讲解
1、进入pip时候,即进入pip的动画过程,是属于fullscreen的状态,但是task已经是pip了,所以需要ActivityRecord自己对应的override。大概意思就是在进入pip动画过程种要禁止activity进行显示上面的变化,所以要设置为fullscreen的mode,等待动画完成才可以变化windowmode。因为小窗pip虽然进入了pasued状态,但是visible还是可以显示的true状态。systemui进程进行动画结束以后,会进行对应的setBound的设置。原创 2023-05-24 21:17:02 · 1374 阅读 · 0 评论 -
WinScope实现录制视频与是Timeline时间轴同步设置方法-千里马framework车载手机系统开发实战
用到winscope工具,提出一个疑问,就是google官网说的有录屏可以结合起来一起看原创 2023-04-25 00:40:14 · 1486 阅读 · 2 评论 -
aosp11/12/13 framework源码开发IDE工具之idegen/aidegen/AIDEGen详细使用
近期又粉丝朋友聊到了如果做aosp系统应用开发,有什么工具或者方式来导入代码可以正常跳转和代码提示等?原创 2023-04-14 16:56:42 · 4090 阅读 · 4 评论 -
Android Framework最难模块WMS实战作业-手机车机系统开发必备
0-课程整体介绍1-window-container.mp4 窗口层级树实战启动篇2-displayarea-feature.mp4 窗口层级树源码分析相关3-displayarea-draw-feature.mp4 窗口层级树绘制实战14-displayarea-draw-leaf.mp4 窗口层级树绘制实战25-displayarea-draw-leaf-2.mp4 窗口层级树绘制实战3。原创 2023-04-10 17:34:49 · 3691 阅读 · 0 评论 -
WMS实战之解决小米等国内桌面被强制横屏布局乱问题
所以就不得不跟着横屏显示。国内手机桌面基本不支持横屏,都是强制竖屏模式,所以对横屏基本没有适配对应的布局,所其实这些桌面是不希望看到有横屏情况展示出来,但是经常又会又一些小场景会导致桌面被强制横屏,所以看起来的体验比较差,就经常容易让测试提bug,用户体验也很糟糕。2、桌面支持横屏显示,这个理论是可以的,但是也不太现实,因为桌面横屏修改等需要波及面还是比较多的,很多都是业务类工作,工作量较大,而且也只是为了修改一个这个体验性bug,性价比低。那下面千里马就带大家开干,,把这个显示异常bug修复了。原创 2023-04-07 22:47:10 · 2020 阅读 · 6 评论 -
android 11/12/13系统屏幕旋转动画分析-车机手机系统工程师必备
然后跟着这个堆栈一直追既可以到startFreezingDisplayLocked,这个方法代表是冻屏,一般要进行屏幕整个旋转,肯定需要冻屏方便让我们整体画面进行动画。明显RotationLayer属于截图Layer,后面Activity属于DisplayContent的Layer,DisplayContent这个图层Layer执行动作是竖屏到横屏旋转,而ShotscreenLayer明显是又是横屏到竖屏的过程,具体可以看课程视频动画,这里blog就不上动画过程了。什么时候开始启动屏幕动画呢?原创 2023-04-05 22:26:40 · 2519 阅读 · 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 · 1737 阅读 · 2 评论 -
android车机手机黑屏闪黑终结者-Winscope工具使用介绍
在开发过程中,经常会遇到各种各样的窗口问题,比如动画异常、窗口异常、闪屏、闪黑、黑屏、错位显示…对于这些问题,添加日志,调试分析代码等手段去解决,但这些 UI 问题往往出现在一瞬间,很难把握出现的时机,录制下来的日志往往也是巨大的,从海量的日志中提取有效的信息是一个枯燥且繁琐的事情,而且也根本没有办法把显示时间戳和日志时间戳完全对好。Android 也意识到了这个问题,WinScope 的出现有效的帮助我们跟踪窗口和显示问题。它向开发者提供一个可视化的工具,让开发者能使用工具跟踪整个界面的变化过程。原创 2023-03-09 22:42:03 · 5011 阅读 · 0 评论 -
android 13 WMS/AMS系统开发-WindowManagerService相关relayout操作
主要就有2个最关键步骤:1、创建对应Window的SurfaceControl2、计算出对应的window区域等,把inset和config传递回去。原创 2023-03-03 17:48:01 · 1337 阅读 · 0 评论 -
android 13 WMS/AMS系统开发-窗口层级相关Task/ActivityRecord/WindowState/WindowToken放置图层创建 第三节
hi,粉丝朋友大家好!上几集已经给大家讲解了如何构建出0-36层的层级树及相关源码分析,这节来分析离我们最近的Task/ActivityRecord/WindowToken/WindowState/等是怎么添加到这个层级树里面去的。原创 2023-02-23 15:42:16 · 2743 阅读 · 2 评论 -
android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer第二节
接着上一节课学习,我们已经清楚的知道了层级结构应该怎么看,根据dumpsys的输出可以完美复原出层级结构树,也理解了结构树对于层级结构的控制作用。但还没有从源码部分对这个结构树进行一个分析,即分析生成这个结构树的源码部分。原创 2023-02-20 16:41:12 · 4747 阅读 · 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 · 5921 阅读 · 2 评论 -
android 12/13 分屏设置Task的Bounds区域-系统车机开发必学
这里面进行对应分屏相关的一个业务处理, 比如分割线拖拽对两个分屏大小影响等。最后都会通过包装成WindowContainerTransaction对象,再通过WindowOrganizerController的本地代理,跨进程传递到systemserver的WindowOrganizerController类中进行处理.hi,近来研究分屏时候发现android 13上的分屏和以前的分屏代码差别比较大。最后就是调用的windowConfiguration.getBounds。其实Task的Bounds就是。原创 2023-02-13 22:47:32 · 2019 阅读 · 0 评论 -
安卓车机系统adb shell cmd 源码原理分析
这里大家如果学习过跨进程专题应该非常熟悉这个,可以看到最后其实是构造了一个Parcel调用了transact方法进行传递,当transact调用完成后就会到服务端的transact再调用到onShellCommand。然后他就会触发对应服务的onShellCommand方法,这个时候相当于和dumpsys命令非常类似,dumpsys命令是会触发到对应的服务的dump方法。1、解析出cmd命令后面的服务字符,根据这个服务字符去servicemanager寻找对应service,返回对应的BpBinder。原创 2023-01-14 00:05:35 · 1979 阅读 · 0 评论 -
aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚
hi,学员朋友,大家好!前期一直有同学在问我这边,学习framework需要什么额外设备么?这里其实我一直前期也是给学员说的,如果你是个新手,刚刚开始可以不用,完全可以跟着学习,用课程里面的模拟器。哈哈资格模拟器不要钱,也不存在变砖的可能性。原创 2022-12-25 23:10:37 · 5329 阅读 · 2 评论 -
clearCallingIdentity与restoreCallingIdentity-千里马framework系统源码实战详解
hi,粉丝朋友大家好:今天带大家来学习一个系统开发过程中大家即“熟悉”又陌生的两个方法,分别是clearCallingIdentity和restoreCallingIdentity,一般他们是成对出现在我们的framework代码中,但大家平时分析源码时候好像并没有在意他的真正作用是什么?为啥在框架代码分析时候可以看到他的大量出现?原创 2022-10-27 00:20:42 · 1063 阅读 · 0 评论 -
Android 12中系统Wallpaper详解1--锁屏透看壁纸和桌面透看壁纸的切换
那么其实我们可以猜测是不是锁屏window会去动态改变自己的FLAG_SHOW_WALLPAPER属性,在有桌面显示时候锁屏的window实际是没有这个属性,在锁屏状态下是有这个属性。先看桌面情况下壁纸,这个情况应该属于我们最为熟悉的,那么就不用多说,大概就是因为桌面Activity的配置主题xml设置一个类似showallpaper的属性既可以,就可以让桌面后面显示壁纸了。这个窗口在系统中有专门类进行他的显示情况,那就我们的WallpaperController类。前面疑惑中就写到正常应该是桌面。原创 2022-10-24 00:23:59 · 6702 阅读 · 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 · 2762 阅读 · 2 评论 -
android 11/12的 framework 框架systemserver源码中的AMS和WMS部分ProtoLog相关log的开放命令
在高版本android源码中,在分析AMS和WMS源码时候经常会看到如下的log打印:这里看着也是个log打印,但是它又不是我们常见的Log.i(“”,“”);或者Slog.i(“”,“”)是可以直接通过logcat命令就可以看到对应的log打印,但是这种ProtoLog类型的log我们发现logcat并不可以直接看到那具体要怎么样才可以看到呢?下面我们就来讲解一下ProtoLog相关的log如果要通过logcat方式查看要怎么操作呢?1、使用wm相关命令这里XXX_TAG要替换成ProtoLog原创 2022-06-12 22:53:35 · 2139 阅读 · 0 评论 -
android P/Q/R/S 9/10/11/12多任务手势动画OverviewInputConsumer情况-第二节
hi,多任务手势分析了OtherActivity的情况,这一节来分析一下在桌面本身就是前台情况下,进入多任务的源码及情况分析。首先来看看原生aosp上多任务的2个过程:[入门课,实战课,跨进程专题,input专题](https://ke.qq.com/course/package/51285?tuin=7d4eb354)ps需要学习深入framework课程和课程优惠新课程优惠获取请加入qq群:422901085(获取demo源码)这个过程就是我们还处于手指底部上划过程,这个还是用个自己绘制的图好展原创 2022-06-02 23:46:31 · 1665 阅读 · 1 评论 -
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 · 2996 阅读 · 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 · 3776 阅读 · 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 · 2055 阅读 · 2 评论 -
千里马android framework开发解决Accessing hidden method限制,让应用访问隐藏方法(需要可以修改系统源码方案)
hi,粉丝朋友们大家好!今天来给大家分享一下,就是经常大家会做安卓系统开发工作问到一个问题,那就是我如果framework代码中增加了一个方法啥的,但是我又不想公开给第三方应用知道,只想让我系统的应用知道,那该怎么办呢?其实这个时候经常就会用到一个hidden的标签,来代表这个方法是隐藏方法,隐藏方法就是给系统内部用的,意味着第三方app就无法使用。这个其实也很常见,自从android p开始android系统就开始对访问hidden的限制越来越严格,虽然我们网络上有各种奇葩招来逃避不允许调用hidden原创 2022-04-27 00:29:09 · 11025 阅读 · 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 · 3138 阅读 · 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 · 2882 阅读 · 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 · 3724 阅读 · 0 评论