<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[learnframework的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/learnframework</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; learnframework]]></copyright><item><title><![CDATA[重学Perfetto浏览器在线抓取trace及高频sql分享]]></title><link>https://blog.csdn.net/learnframework/article/details/161858242</link><guid>https://blog.csdn.net/learnframework/article/details/161858242</guid><author>learnframework</author><pubDate>Wed, 10 Jun 2026 15:18:53 +0800</pubDate><description><![CDATA[上面其实看出，本质上就是下载个tracebox文件，然后执行这个tracebox文件既可以，但是下载这个tracebox文件一般国内网络都不行哈，所以这里可能又会阻碍一批人，不过这里马哥给大家提供一个 ubuntu 64位可以直接执行的文件。但是在实际性能优化中，你看要分析问题可能是一个时间段内的，比如某个线程的调度延时等，这种你抓某个时间点的就没有意义，必须要进行统计量化才可以减少方差波动等。因为抓的trace完全有可能要保存下来，或者等待下次再来分析，发送其他同学分析等，那么到底在哪里进行保存呢？]]></description><category></category></item><item><title><![CDATA[干货技巧：单模块编译再见adb push迎接sync命令]]></title><link>https://blog.csdn.net/learnframework/article/details/161729237</link><guid>https://blog.csdn.net/learnframework/article/details/161729237</guid><author>learnframework</author><pubDate>Sat, 06 Jun 2026 09:54:30 +0800</pubDate><description><![CDATA[我们平时如果是在公司做安卓设备类开发的话，一般我们都是修改某一个模块，比如framework.jar,services.jar,Launcher,SystemUI等，修改这些模块后我们不太可能像模拟器一样方便直接使用一个make方式，因为make方式在实体手机等设备上太慢了，一般采用是单编某个模块如make services等，然后再adb push services xxxx。这种方式有一个比较大的痛点，就是你得非常清楚你make模块是啥，而且make模块后在ubuntu电脑上的out目录具体哪个目录下，]]></description><category></category></item><item><title><![CDATA[安卓车载手机原生多屏闪黑问题分析及修复成果展示]]></title><link>https://blog.csdn.net/learnframework/article/details/161648899</link><guid>https://blog.csdn.net/learnframework/article/details/161648899</guid><author>learnframework</author><pubDate>Wed, 03 Jun 2026 12:23:28 +0800</pubDate><description><![CDATA[注意这里可能会有视频黑屏后图层没有黑屏情况，这个原因前面wms课程blog等中应该讲解过，因为视频的帧率和图层的帧率本事是不一样的，所以二者不能代表每一帧都同步。在多屏启动过程中，主屏幕的task会直接reparent到新的display，但是主屏幕的底部task显示是需要一段时间的，这段时间就会一直黑屏。比如手机刷新率是90帧每秒，但是视频录制的帧率是30帧每秒，所以这块肯定是会有比较大的差异哈。因为底部Task的显示是需要时间的，所以自然在Task还没有显示的这段时间就是黑屏的状态。]]></description><category></category></item><item><title><![CDATA[深入剖析安卓布局uiautomator抓取工具原理]]></title><link>https://blog.csdn.net/learnframework/article/details/161612194</link><guid>https://blog.csdn.net/learnframework/article/details/161612194</guid><author>learnframework</author><pubDate>Tue, 02 Jun 2026 15:34:10 +0800</pubDate><description><![CDATA["伪无障碍服务"的意思是：系统知道它是一个测试工具而非真正的无障碍服务（如 TalkBack），所以不会触发无障碍服务的标准生命周期（如。经常android studio一些布局抓取工具其实本质上都是使用sdk下的uiautomator命令进行的抓取View数据。是全局的"信息中转站"——它维护着所有窗口的 Accessibility 树，并响应无障碍服务的查询请求。在深入代码之前，必须先理解 Android 无障碍框架的核心机制。每个节点都是一个"View 的自我描述"——包含类名、坐标、文本、状态等。]]></description><category></category></item><item><title><![CDATA[系统app开发之桌面调试Launcher3 Dumpsys信息解析]]></title><link>https://blog.csdn.net/learnframework/article/details/161585191</link><guid>https://blog.csdn.net/learnframework/article/details/161585191</guid><author>learnframework</author><pubDate>Mon, 01 Jun 2026 12:27:41 +0800</pubDate><description><![CDATA[这个其实Activity，Service等类本身自带了相关的dump方法：我们只需在自己Activity方法中进行重写dump，然后加入自己的一些自定义想要dump东西。]]></description><category></category></item><item><title><![CDATA[aosp新增窗口层级 Type 完整实现方案（有源码）-wms需求和面试题]]></title><link>https://blog.csdn.net/learnframework/article/details/161534212</link><guid>https://blog.csdn.net/learnframework/article/details/161534212</guid><author>learnframework</author><pubDate>Sat, 30 May 2026 16:47:16 +0800</pubDate><description><![CDATA[/ --- 插入到 TYPE_STATUS_BAR_ADDITIONAL 之后 ---/*** @hide*/// 2042/*** @hide*/// 2043注册到})注册到。]]></description><category></category></item><item><title><![CDATA[aosp16 r4版本的Launcher原生自带2个crash问题分析汇总]]></title><link>https://blog.csdn.net/learnframework/article/details/161431501</link><guid>https://blog.csdn.net/learnframework/article/details/161431501</guid><author>learnframework</author><pubDate>Wed, 27 May 2026 11:46:26 +0800</pubDate><description><![CDATA[最近在调试 AOSP 16 r4 Launcher3 的 Quickstep 模块时遇到两个导致启动即崩溃的1、bug资源类型不匹配导致 Resources$NotFoundException2、Bug 2：TaskView InflateException 如何高效分析呢？特别是bug2属于比较难分析和解决的，各位vip学员欢迎挑战分享你的解决经验，记得留言哈。]]></description><category></category></item><item><title><![CDATA[如何解决国内镜像aosp进行repo sync太慢问题？]]></title><link>https://blog.csdn.net/learnframework/article/details/161308463</link><guid>https://blog.csdn.net/learnframework/article/details/161308463</guid><author>learnframework</author><pubDate>Sat, 23 May 2026 17:43:48 +0800</pubDate><description><![CDATA[有同学反应建议可以使用其他学校镜像进行下载，比如南京大学，但是尝试后发现repo sync都有比较多的错误，最后没有成功。有学员反应花了几天才repo成功，这个情况也确实可能有的，但是最后时间虽然长，也是可以repo sync下来的。参考：https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/注意这个时间也可能较长，我这也花了5个小时，大家不要着急，可以晚上repo第二天早上看。经常repo init半天不动，大家以为repo卡死了，要等待好几个小时才可以完成。]]></description><category></category></item><item><title><![CDATA[带你深入体验Android Performance Analyzer (APA)性能优化工具优缺点]]></title><link>https://blog.csdn.net/learnframework/article/details/161270756</link><guid>https://blog.csdn.net/learnframework/article/details/161270756</guid><author>learnframework</author><pubDate>Thu, 21 May 2026 10:09:26 +0800</pubDate><description><![CDATA[使用Android 生态系统推出的全新性能分析工具，优化您的应用或游戏。简单说就是google专门为了性能优化专门做了一个界面类似android studio的软件，大家可能第一反应是不是有网页版本的Perfetto网站么为啥还要这个APA，整体体验目前来看确实是有一些跟踪视图还提供了自定义选项，以便您在工作流程中最大限度地发挥作用。您可以点击 跟踪视图左上角的 SQL图标来打开SQL选项卡。图 3 ： SQL选项卡的屏幕截图。]]></description><category></category></item><item><title><![CDATA[Windows上如何使用Winscope抓取查看数据？解决Windows无法使用Winscope问题]]></title><link>https://blog.csdn.net/learnframework/article/details/161185489</link><guid>https://blog.csdn.net/learnframework/article/details/161185489</guid><author>learnframework</author><pubDate>Mon, 18 May 2026 12:00:52 +0800</pubDate><description><![CDATA[文章中也说明在aosp15如果直接使用编译好的离线html是有问题的，无法正常显示抓取的Winscope文件。那么这个python文件本身和java文件一样，本身就是跨平台的，可以在ubuntu系统系统上正常运行，那也可以windows上运行。这里会显示无法抓取到相关的数据，所以在windows上直接使用ubuntu上的winscope_proxy.py是行不通的。py文件中可能存在ubuntu上面的一些linux特有的方法，和一些特有的特性，这些方法无法在windows进行运行。]]></description><category></category></item><item><title><![CDATA[fw新学员分享的官方Android 平台架构说明文章]]></title><link>https://blog.csdn.net/learnframework/article/details/161077974</link><guid>https://blog.csdn.net/learnframework/article/details/161077974</guid><author>learnframework</author><pubDate>Thu, 14 May 2026 15:04:00 +0800</pubDate><description><![CDATA[非常感谢新学员朋友在学习马哥安卓的framework入门课程时候，发现了一个官方的安卓架构图的网页，这个官方网页解释安卓架构图也很全面，比我们自己总结的可能还是权威和全面一下，这里分享给大家，虽然对于很多老学员来说内容简单都完全理解了，但是也可以看看google官方的文档是如何描述的，是不是和我们理解都完全一直呢？Android is an open source, Linux-based software stack created for a wide array of devices and form]]></description><category></category></item><item><title><![CDATA[安卓车载手机Framework 最新面试真题（涵盖：fw/性能优化/多屏/Input/Binder/wms）]]></title><link>https://blog.csdn.net/learnframework/article/details/161044190</link><guid>https://blog.csdn.net/learnframework/article/details/161044190</guid><author>learnframework</author><pubDate>Wed, 13 May 2026 12:00:29 +0800</pubDate><description><![CDATA[不过市场上车载相关的岗位其实还算可以，android系统开发（非app开发）的就业还算比较不错，近期有的学员也拿到了好几个公司offer，有的是做手机的，有的是做车机的，也有其他非主流的一些比如pos机，学习平板等。proto工程使用说说背景详细剖析，wms中日志等说明proto优势，有他和没他会怎么样，这个proto主要又是给谁看？wms的层级结构树介绍一下，请问你一般用啥命令看，看他有啥作用？知道这个开机流程，对你有什么帮助吗？遇到问题，卡住了，你的方案是什么？Binder一次拷贝在哪里。]]></description><category></category></item><item><title><![CDATA[WMS/AMS深入WindowState如何正确找到自己在层级结构树中位置进行挂载]]></title><link>https://blog.csdn.net/learnframework/article/details/160962677</link><guid>https://blog.csdn.net/learnframework/article/details/160962677</guid><author>learnframework</author><pubDate>Mon, 11 May 2026 15:23:59 +0800</pubDate><description><![CDATA[以下是一个│▼││ └─ mTokenMap.get(binder) → null (首次添加)││ .build()│ ││ └─[3] WindowToken 构造函数│ ││ ├─ mTokenMap.put(binder, token) // 注册到 DisplayContent│ ││ ├─[4] findAreaForToken(token) // 定位 DisplayArea.Tokens。]]></description><category></category></item><item><title><![CDATA[必学Perfetto实战分析SystemUI调度阻塞案例-官方高级技能]]></title><link>https://blog.csdn.net/learnframework/article/details/160883475</link><guid>https://blog.csdn.net/learnframework/article/details/160883475</guid><author>learnframework</author><pubDate>Sat, 09 May 2026 10:53:29 +0800</pubDate><description><![CDATA[原文：https://gugu-perf.github.io/perfetto-docs-zh-cn/docs/case-studies/scheduling-blockages.html英文原文：https://perfetto.dev/docs/case-studies/scheduling-blockages。]]></description><category></category></item><item><title><![CDATA[AI时代程序员得了过渡依赖“病”应该如何治疗？]]></title><link>https://blog.csdn.net/learnframework/article/details/160849884</link><guid>https://blog.csdn.net/learnframework/article/details/160849884</guid><author>learnframework</author><pubDate>Thu, 07 May 2026 12:17:59 +0800</pubDate><description><![CDATA[AI可以提效，不能代脑；可以帮你干活，不能替你成长。你现在不是能力退步，是惰性被AI养出来了，只要强行给自己定规则、先动脑再用AI、拆小块学习、复盘总结，一两个月就能找回扎实的基本功，再也不会被AI牵着走，也不会学东西一知半解。一定要明确自己的技术能力成长永远放在第一位，你的技术能力才是核心竞争力，AI编程等使用只是一个帮助你提效的技能，绝不是成为你工作完全依赖的全部。AI时代程序员得了过度依赖“病”应该如何治疗？]]></description><category></category></item><item><title><![CDATA[手机大厂Activity嵌套模式及三分屏SplitScreen功能调研报告-独家干货]]></title><link>https://blog.csdn.net/learnframework/article/details/160816995</link><guid>https://blog.csdn.net/learnframework/article/details/160816995</guid><author>learnframework</author><pubDate>Wed, 06 May 2026 16:59:18 +0800</pubDate><description><![CDATA[1、实际上有两个TaskFragment装载了两个ActivityRecord，分别显示在左右两边的区域2、两个TaskFragment的window mode都是MULTI-WINDOW。]]></description><category></category></item><item><title><![CDATA[程序员焦虑：AI Agent开发 VS 传统开发如何选择？]]></title><link>https://blog.csdn.net/learnframework/article/details/160786859</link><guid>https://blog.csdn.net/learnframework/article/details/160786859</guid><author>learnframework</author><pubDate>Tue, 05 May 2026 12:00:29 +0800</pubDate><description><![CDATA[近来也有比较多粉丝朋友问马哥，现在AI火爆是不是可以转去做AI Agent开发工程师？
而且我学了一下感觉还比较简单，现在招聘这个AI Agent开发的岗位也多，传统开发岗位的工作现在很多都可以用AI code完成，想转去AI Agent开发是否可以。

其实要回答这个是否要转AI Agent开发，首先要进行对比解释清楚AI Agent开发岗位和传统开发详细对比情况。
当然上面学员也有一些错误理解，比如认为AI Code来了后传统开发就没有工作了，认为AI Agent开发就还有大量手工古法编程。其实AI C]]></description><category></category></item><item><title><![CDATA[Perfetto官方文档教你分析安卓内存]]></title><link>https://blog.csdn.net/learnframework/article/details/160737048</link><guid>https://blog.csdn.net/learnframework/article/details/160737048</guid><author>learnframework</author><pubDate>Sun, 03 May 2026 12:14:16 +0800</pubDate><description><![CDATA[此数据源在 Linux 和 Android（自 P 起）上可用。它通过 Linux 内核 ftrace 基础架构记录 CPU 电源管理方案的变化。]]></description><category></category></item><item><title><![CDATA[安卓车载手机Framework 面试真题汇总（fw/性能优化/多屏/Input/Binder/wms）-近期v搜集ip学员汇总]]></title><link>https://blog.csdn.net/learnframework/article/details/160622780</link><guid>https://blog.csdn.net/learnframework/article/details/160622780</guid><author>learnframework</author><pubDate>Wed, 29 Apr 2026 14:37:58 +0800</pubDate><description><![CDATA[不过市场上车载相关的岗位其实还算可以，android系统开发（非app开发）的就业还算比较不错，主要就是因为这些年国家大力发展新能源汽车，各个车机大厂车机系统开发岗位需求大大增加，毕竟都把车机系统功能在汽车发布时候进行大力宣传，开的像手机一样的科技发布会。如果副屏显示了一个最近使用app的列表，主屏是你自己开发的 APP，我在最近列表中点击了 APP，希望把主屏中的 APP拿过来，怎么实现？多屏互动项目中，窗口移动到副屏后，有没有考虑音频焦点的管理，比如继续维持主屏扬声器发声还是副屏扬声器发声？]]></description><category></category></item><item><title><![CDATA[AI工具为啥可以分析Perfetto性能？手把手教你常用SQL分析性能问题]]></title><link>https://blog.csdn.net/learnframework/article/details/160584526</link><guid>https://blog.csdn.net/learnframework/article/details/160584526</guid><author>learnframework</author><pubDate>Tue, 28 Apr 2026 11:52:17 +0800</pubDate><description><![CDATA[问题数据严重程度建议threadMain 卡顿最大 175.71ms🔴 严重需深入分析代码RenderThread 掉帧40% 掉帧率🔴 严重优化绘制逻辑Binder 延迟平均 28ms🟡 中等改为异步调用Handler 消息最大 13ms🟢 轻微持续监控参考Perfetto 文档：https://perfetto.dev/docs/SQL 表参考：https://perfetto.dev/docs/analysis/sql-tables。]]></description><category></category></item></channel></rss>