- 博客(578)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
转载 AI工具为啥可以分析Perfetto性能?手把手教你常用SQL分析性能问题
AI分析Perfetto的本质是将自然语言指令转化为SQL查询,通过标准SQL对Trace文件中的多表数据进行精准检索与统计。Perfetto统一存储性能数据,支持高效关联查询,使卡顿定位、耗时分析等操作可量化、可对比。掌握其表关系(slice→thread_track→thread→process)及正确JOIN方式,是实现高效分析的关键。学习Perfetto SQL,能突破黑盒分析瓶颈,真正理解AI背后的逻辑。
2026-11-06 16:17:31
6
转载 干货分享:sf中Layer泄露问题分析修复实战方法--直播总结
本文总结了ImageWallpaper图层泄露问题的排查流程与修复方案。通过dumpsys SurfaceFlinger定位OffScreen异常增长,发现ImageWallpaper未释放SurfaceControl。对比ViewRootImpl中正常窗口的release机制,确认问题源于壁纸服务缺少mSurfaceControl.release()调用。进一步分析指出,AOSP15版本已通过官方提交(9c1d6b4)修复,直接在detach时释放SurfaceControl,从而消除泄漏。
2026-11-06 16:14:16
6
转载 SurfaceFlinger中Layer泄露如何排查解决?-vip学员作业
在AOSP 13中,切换壁纸时出现ImageWallpaper Layer内存泄漏,导致mOffscreenLayers持续增长,可能突破4096层上限引发新图层创建失败。问题根源在于壁纸销毁后未正确从offscreen集合移除,因Layer无父级但未被及时清理。与其他窗口不同,壁纸生命周期管理特殊,且未主动释放。修复需在壁纸销毁时显式从mOffscreenLayers移除对应Layer。排查流程包括dumpsys分析、代码追踪offscreen添加逻辑、定位异常残留。建议在WallpaperService
2026-11-06 16:10:35
5
转载 台湾framework学员疑问:如何通过进程名映射出对应源码路径?
在AOSP系统中,定位进程源码需区分Native进程与APK进程。Native进程(如surfaceflinger)可执行文件路径对应源码目录,如/system/bin/surfaceflinger对应frameworks/native/services/surfaceflinger/,可通过grep搜索Android.bp/Android.mk确认编译配置。APK进程则根据包名(如com.android.settings)在packages/apps/或frameworks/base/packages/中
2026-11-03 14:15:50
5
转载 Android Automotive CarService 和 CarManager 源码剖析
CarService 启动时,System Server 加载 CarServiceImpl,通过 VehicleStub 连接 Vehicle HAL,构建 ICarImpl 核心服务。ICarImpl 采用 Builder 模式按依赖顺序初始化 30+ 子服务(如属性、音频、驾驶状态等),并注册至 ServiceManager。应用通过 Car.createCar() 获取 Car 实例,调用 getCarManager() 获取具体服务管理器,实现对车载功能的访问。整个流程确保服务按序初始化、依赖安全
2026-11-03 13:01:00
7
转载 分享Claude进行AI编程的相关技巧及程序员未来发展方向
其实提高AI Coding的准确性,核心就几点:精准指令、选对场景、人工校验,精准识别AI在自己业务中的能力,不让AI跑偏,不让一直让AI浪费时间干它搞不定的事。对于咱们安卓开发者来说,不用追求“AI生成完美代码”%100直接交付,而是要学会“指挥AI生成高质量代码及一些平常耗时的业务代码”。
2026-11-03 12:55:48
6
转载 剖析安卓App调用Runtime.exec背后原理
摘要: 本文深入剖析了安卓开发中Runtime.getRuntime().exec()执行系统命令的底层原理。该流程始于Java层封装,通过Runtime.exec()委托至ProcessBuilder.start(),最终进入Native层的UNIXProcess_forkAndExec。关键步骤包括:创建4个管道实现父子进程通信,通过fork()生成子进程并重定向I/O,最终由execve系统调用加载/system/bin/sh解析命令。子进程继承App的用户权限,依次启动shell和input进程完成
2026-05-28 11:03:52
50
转载 Ubuntu 24 搭建aosp源码环境详细笔记
本文介绍了在Ubuntu 24系统上搭建AOSP开发环境的完整流程。主要内容包括:Ubuntu 24系统安装指南、必要的软件包安装(如OpenJDK 8、Python 2等)、AOSP源码下载方法(使用清华镜像源)、编译步骤及常见问题解决(如JackServer错误处理)。同时提供了将代码导入Android Studio的方法,并附有相关资源链接。文章特别针对新硬件用户需要使用Ubuntu 24版本的情况,详细说明了环境配置的注意事项和替代方案,为Android系统开发提供了全面的环境搭建指导。
2026-05-28 11:00:30
67
转载 安卓系统log日志分析都有哪些高效工具notepad++?
本文对比了多款文本/日志编辑工具在Ubuntu系统下的使用体验。Notepad++(3星)因需Wine运行且不稳定;国产跨平台工具Notepad--(5星)完美替代Notepad++;klogg(5星)支持大文件快速处理和二次过滤;网页工具alog(5星)免安装但依赖网络;VSCode(4星)复用方便但功能有限。特别感谢学员推荐,这些工具显著提升了日志处理效率,其中Notepad--、klogg和alog的综合表现最优。更多资源可通过文末链接获取。
2026-05-28 10:43:39
60
转载 Android Automotive 15/16车载模拟器如何调多屏多音区功能?
本文介绍了如何编译支持多屏多音区的Android Automotive车载模拟器。针对车载开发硬件门槛高的问题,作者通过源码调研发现multi-display目录下的配置可实现多屏功能。详细讲解了在Ubuntu20.04环境下,基于AOSP16源码的编译步骤,包括环境配置、依赖安装和特定目标(sdk_car_md_x86_64)的编译方法。最终成功运行出包含驾驶舱、副驾驶舱等多屏界面的车载模拟器,并提供了避免热启动问题的解决方案。该方案为车载系统开发者提供了便捷的多屏多音区调试环境。
2026-05-28 10:18:51
38
转载 干货分享:车载音频audio调试开发之dumpsys CarAudioService剖析
摘要 车载音频系统在手机音频架构基础上增加了CarAudioService模块,负责车载特有的多音区配置、路由和音量调节等功能。开发调试时可通过adb shell dumpsys car_service --services CarAudioService命令查看服务状态。该命令输出包含系统配置、当前状态和音量优先级等关键信息。其中,音量优先级配置(priority值越小优先级越高)决定了不同音频源的播放顺序,如导航(priority=0)优先于通话(priority=1),而紧急广播虽显示priority
2026-05-28 10:13:21
26
转载 如何给你的apk进行瘦身-Google官方文档教你
本文介绍了缩减Android应用大小的多种方法。首先建议使用Android App Bundle格式上传应用,让Google Play根据设备配置生成优化APK。其次分析了APK文件结构,指出可优化的部分。重点阐述了资源优化策略:移除未使用资源、减少库资源依赖、支持特定屏幕密度、使用可绘制对象替代图片、重复利用资源等。还推荐了图片压缩技术,包括PNG无损压缩、WebP格式转换等。这些方法能有效减小应用体积,提升下载成功率,特别适合网络条件受限的新兴市场用户。
2026-05-13 11:53:26
47
转载 strace安卓linux系统调用跟踪神器相关实战案例
strace是一个集诊断、调试、分析于一体的Linux系统工具,它可以拦截并记录进程发起的所有系统调用(system call)以及接收到的信号。简单来说,它能让你“看见”一个程序在运行时,向内核发出了什么请求,内核又是如何响应的。系统调用是用户态程序与内核交互的唯一入口,比如读写文件(openreadwrite)、创建进程(forkclone)、网络通信(socketconnectsend)等。通过观察这些调用,我们可以精准地定位程序在哪个环节出现了问题。
2026-05-13 11:50:34
38
转载 aospc/c++的native 模块VScode和Clion
本文对比了VSCode和Clion在AOSP框架开发中的使用体验。VSCode适合快速阅读多模块耦合的源码,即开即用但跳转准确性稍逊;Clion依赖CMake项目模型,代码跳转精准且编写提示完善,更适合单一模块的深度开发和代码编写。VSCode适用于多模块源码分析场景,而Clion则更适合对特定模块进行频繁代码修改的开发需求。开发者应根据具体需求选择工具:多模块阅读选VSCode,专注单一模块开发选Clion。
2026-05-13 11:46:37
77
转载 AAOS车载开发GOOGLE官方培训文档Car Framework Core
本文介绍了Android车载系统(Car Framework)的开发指南。针对新手开发者,文章指出官方文档较为零散难懂,推荐使用Google合作伙伴提供的培训资料。重点解析了Car Framework架构,说明其在手机安卓架构基础上增加了Car Service服务模块,用于处理车载相关功能。详细阐述了Car Service与系统服务(System Server)的通信机制、Car API的工作原理,以及各类Car Manager的管理方式。文章还提供了Car Service启动流程、权限检查等核心功能的说明
2026-05-11 10:13:29
39
转载 app开发转framework系统工程师窗口显示方向面试真题
【摘要】本文分享了Android Framework开发岗位的面试经验与技巧。正值3-4月求职旺季,多位学员成功转岗Framework开发。文章列举了13道典型面试题,涉及分屏原理、ShellTransition、性能优化等核心技术点,并提供了面试官视角的5点建议:1)简历模块需真实掌握;2)要求深度技术理解而非泛泛而谈;3)注重岗位匹配度与综合能力;4)突出疑难问题解决案例;5)性能优化经验是加分项。特别强调应详细描述技术问题的分析解决过程,包括工具使用、原因定位及验证方法等。
2026-05-11 10:09:42
42
转载 audio干货分享:车载audio开发必知必会的调试命令
摘要 车载音频系统在手机音频基础上扩展了CarAudioService等组件,调试时需结合通用和车载专用命令。通用命令包括:dumpsys media.audio_flinger(音频数据处理)、dumpsys media.audio_policy(路由策略)和dumpsys audio(综合信息)。车载专用命令主要通过dumpsys car_service实现,支持模块化输出(如--services CarAudioService)和动态控制,包括: 音量管理:设置分组音量(0-100)、静音状态……
2026-05-11 10:06:02
50
转载 车载音频动态路由AudioMixingRule匹配深入剖析
本文深入分析了安卓音频系统中AudioMix的匹配机制,重点剖析了AudioPolicyMixCollection::getOutputForAttr方法的实现逻辑。该方法通过遍历AudioPolicyMixCollection中的每个policyMix,首先判断其mRouteFlags类型,然后调用mixMatch方法将policyMix与track的AudioAttribute属性进行匹配。匹配成功后,根据primaryOutputMix标志将policyMix赋值给primaryMix或放入secon
2026-05-08 11:12:42
42
转载 audio动态策略剖析之AudioPolicy,AudioMix,AudioMixingRule深入剖析
本文分析了Android音频系统中的动态路由策略实现,重点介绍了AudioPolicy框架。传统音频设备路由采用静态编码方式,在Engine.cpp中硬编码实现,灵活性差。为解决这一问题,Android引入了AudioPolicy机制,通过AudioPolicyConfig、AudioMix和AudioMixingRule等类实现动态路由策略管理。AudioPolicyConfig包含多个AudioMix对象,每个AudioMix对应一个设备选择策略,包含匹配规则AudioMixingRule。系统支持多种
2026-05-08 11:00:38
56
转载 Winscope高级疑问“Invisible due to”是如何来的呢?
摘要 本文分析了Winscope工具中"Layer不显示"问题的原因定位机制。当出现"Invisible due to: null visible region"提示时,表明该Layer没有可显示区域,可能由于自身无显示区域或被完全覆盖。通过源码分析发现,Winscope通过SurfaceFlinger获取原始Layer数据,前端HTML代码会基于Layer属性(如isHiddenByPolicy、visibleRegion等)自动计算并显示不可见原因。
2026-05-08 10:57:33
31
转载 分析WM Shell中线程相关的官方帮助文档
本文介绍了Android WM Shell中的线程管理机制。主要包括ShellMainThread(默认优先级为THREAD_PRIORITY_DISPLAY)、ShellBackgroundThread(后台优先级)和ShellAnimationThread等专用线程的使用场景。文章强调了最佳实践:避免在构造函数中初始化组件,慎用同步机制以防死锁,回调需发布到Shell主线程。同时警告不要使用Looper.getMainLooper(),而应通过依赖注入获取正确的Executor。测试时可使用TestSh
2026-04-20 11:02:52
57
转载 如何实现AudioRecord内录r_submix模式系统Speaker正常发声?-学员作业
这篇文章探讨了安卓系统声音录制功能的实现方案。需求是同时录制系统内部声音和麦克风输入,且系统播放声音时扬声器需正常发声。作者分析了三种实现途径:通过两个AudioRecord分别采集音源后合成;利用AOSP现有功能避免修改系统源码;以及参考AudioPolicyManager中设备配置的解决方案。文章特别指出常规REMOTE_SUBMIX方案会导致扬声器静音的问题,并强调在保持系统完整性的前提下实现该功能的挑战。最后提供了三个具体的研究方向:非源码修改方案设计、AOSP现有功能调研,以及相关实现原理分析。
2026-04-20 10:51:11
61
转载 重学SurfaceFlinger之View绘制到Surface过程剖析
摘要:本文详细剖析了Android应用中View绘制到SurfaceFlinger上屏的全过程。首先介绍了应用通过Surface对象获取"画布"的过程,包括RenderProxy和RenderThread的交互机制。重点分析了UI线程在收到VSync信号后启动的绘制流程,从View树的遍历到DisplayList的生成,解释了RenderNode与View的对应关系以及DisplayListData的组织结构。通过代码分析和时序图展示了从应用主线程到渲染线程的完整数据流,为理解Andro
2026-04-16 15:42:36
38
转载 Under the hood: Android 17’s lock-free MessageQueue(google官方原文)
谷歌在Android 17系统中引入无锁消息队列DeliQueue,显著提升手机流畅度。新系统通过消除MessageQueue的内存锁定机制,解决了锁竞争和优先级反转导致的UI卡顿问题。Perfetto工具分析显示,传统锁机制会导致高优先级UI线程被低优先级线程阻塞。案例研究表明,相机应用后台线程持有锁会间接阻碍启动器主线程运行,造成丢帧。开发者可通过PerfettoSQL查询特定锁竞争模式,优化应用性能。这一架构改进使目标SDK 37及以上的应用获得更流畅的用户体验。
2026-04-16 15:40:53
100
转载 安卓17版本上google引入了无锁消息队?老版本MessageQueue的锁解密剖析
摘要 谷歌在安卓17系统中引入无锁消息队列DeliQueue以提升流畅度,解决传统MessageQueue的锁竞争问题。文章分析了MessageQueue的锁机制:Java层通过synchronized同步代码块保护消息入队操作;Native层也存在类似的锁竞争。源码显示,从sendMessage()到enqueueMessage()的调用链最终会在MessageQueue中加锁,这是导致性能瓶颈的关键所在。新系统的无锁设计旨在消除这些同步开销,缩短线程等待时间。
2026-04-16 15:38:00
80
转载 安卓系统性能优化开发业绩如何提升?
本文探讨了安卓性能优化岗位的必要性和工作内容。大厂设立专职性能优化岗位是为了协调多模块协作,提升整机性能表现。岗位要求掌握性能分析工具、熟悉系统框架和Linux底层。文章分析了性能优化工作的两大难点:bug分析涉及多模块难以归责,优化方案创新空间有限。多位从业者分享了提升绩效的经验:主动制定优化方案、与竞品对标、建立系统化问题追踪机制、注重数据可视化呈现,以及持续学习底层知识。性能优化工作需从被动解决问题转向主动创造价值,才能更好展现工作成果。
2026-04-16 15:35:02
42
转载 app性能优化:优化布局层次结构
本文介绍了如何通过布局检查器和lint工具优化Android应用布局性能。使用嵌套LinearLayout会导致视图层次过深和重复测量问题,特别是在RecyclerView等场景下性能损耗明显。建议改用ConstraintLayout来创建扁平化布局结构,将原两层嵌套简化为单层布局。lint工具能检测多种布局优化点,如使用复合可绘制对象、合并根帧、移除无用布局等,这些优化可以集成到开发流程中自动执行。通过合理选择布局类型和工具辅助,可显著提升界面渲染效率。
2026-04-14 09:23:27
44
转载 安卓官方文档带你学车载音频焦点
本文介绍了Android Automotive OS中的音频焦点管理机制。系统通过CarAudioContext定义了三种焦点交互类型:独占交互(仅允许一个应用持有焦点)、拒绝交互(传入请求一律拒绝)和并发交互(允许多应用同时持有焦点)。文章详细说明了不同场景下的焦点处理规则,包括通话期间导航的特殊设置、可延迟音频焦点的实现方法,以及多音频区焦点管理策略。同时介绍了HAL音频焦点机制,强调紧急声音应优先播放。最后提到AudioControl HAL 2.0版本新增的API功能,为车载音频系统提供更精细的控制
2026-04-14 09:20:02
49
转载 系统开发面试你会这个native crash的面试题吗?
本文总结了Android原生开发中常见的几种Native Crash类型及典型案例。首先介绍了Abort类型,其特点是调用abort()函数主动触发SIGABRT信号,堆栈中会显示libc.so中的"abort"帧;其次是典型的Null指针异常,表现为SIGSEGV信号且fault addr为0x0,通常由空指针解引用导致;最后讨论了低地址空指针问题,虽然地址不为0但仍是无效指针解引用,常见于FILE或DIR结构操作时未做空指针检查的情况。文中通过具体堆栈示例详细分析了每种崩溃类型的特征
2026-04-14 09:17:08
29
转载 ANR高级经验2:No Focused Window类型ANR的各种案例汇总
文章摘要:本文深入分析了Android系统中"No Focused Window ANR"问题的20多种案例类型,重点探讨了窗口状态异常(如NO_SURFACE、DRAW_PENDING等)、焦点计算错误、SurfaceFlinger显示问题及InputDispatcher原生bug等典型场景。作者分享了包括Activity绘制异常、多窗口同步问题、系统框架修改导致的时序问题等实战案例,并提供了通过检查events日志、窗口状态、应用生命周期等系统日志的排查方法。文章还提及性能优化、锁屏
2026-04-14 09:14:52
65
转载 如何分析各种ANR第二篇?Google官方文档详细教你
摘要 本文介绍了Android开发中常见的ANR(应用无响应)问题类型及其解决方法,主要包括服务超时(Service timeout)和内容提供者无响应(Content provider not responding)两类ANR。服务超时ANR发生在主线程未能及时启动服务时,默认超时为前台服务20秒/后台服务200秒;内容提供者ANR则发生在远程内容提供者查询超时的情况下。文章提供了调试流程图和典型案例分析,建议开发者优化应用启动速度、避免主线程阻塞操作,并给出了具体的堆栈分析方法。对于服务ANR,重点检查
2026-04-14 09:13:03
58
转载 安卓aosp 16新特性分屏收藏保存功能AppPairIcon剖析
本文分析了Android 16版本中分屏收藏功能的实现原理。该功能允许用户保存两个分屏应用为快捷方式,点击后可快速进入分屏模式。源码分析主要从创建和点击AppPairIcon两部分展开:在创建时,系统通过GroupedTaskView获取任务信息,转换为WorkspaceItemInfo后构造AppPairInfo对象,最终生成桌面图标;点击时则调用onClickAppPairIcon方法处理分屏启动逻辑。文章详细剖析了saveAppPair方法的实现步骤,包括信息转换、图标创建和数据保存等关键流程,揭示了
2026-04-14 09:10:45
58
转载 ANR高级经验分享:No Focused类型ANR详细步骤
文章摘要: 本文针对Android系统中常见的无焦点窗口ANR(Not have a Focused Window)问题进行了深入分析。这类ANR通常由Key事件或非触摸Motion事件触发,当系统无法找到焦点窗口时会超时并报错。文章指出,无焦点ANR不一定是WMS(窗口管理系统)的问题,更多与系统卡顿、性能瓶颈或应用错误操作有关。作者分享了分析技巧,包括区分FocusedApplication和FocusedWindow、检查events日志、分析SurfaceFlinger的窗口显示状态、验证WMS计算
2026-04-13 10:05:54
81
转载 仿oppo三星samsung手机分屏收藏代码实现
三星手机分屏功能新增了"收藏"快捷方式功能,可将常用分屏组合保存为桌面图标。用户只需在分屏模式下点击分割线上的收藏图标,选择保存到桌面或侧边栏,即可创建快捷方式。点击该图标能直接启动预设的分屏组合,省去了重复选择应用的步骤。实现原理涉及分屏视图交互、应用数据收集、跨进程通信和桌面快捷方式创建等技术环节。该功能优化了分屏操作流程,特别适合学习笔记等固定应用组合场景,体现了三星对多任务交互体验的细节打磨。
2026-04-13 10:03:49
33
转载 Samsung设备系统,app开发重大福利:免费设备远程调试不在需要买设备
三星推出远程测试实验室服务,帮助开发者解决多机型适配测试的高成本问题。开发者无需购买实体设备,通过网页即可远程控制三星真机进行应用测试。该服务提供每日20个免费积分(1积分=15分钟),支持30分钟至10小时的设备预约,涵盖多种机型。主要功能包括应用安装运行、实时屏幕流传输及自动化测试。使用流程简单:注册账号→选择设备→通过RDB工具连接→进行ADB调试。服务支持设备旋转、折叠屏切换等操作,但可能受网络速度影响。该方案有效降低了开发者的硬件投入成本。
2026-04-13 10:02:03
42
转载 跟着google官方文档学习车载音频Car audio configuration
Android车载音频配置通过car_audio_configuration.xml文件管理,该文件取代了旧版本中的配置方式。配置文件需放置在vendor/etc/或system/etc/目录下,定义了音频区域、音量组和上下文映射关系。每个音频区域具有独立ID,可映射到乘员区域,并支持独立音频控制。系统将相似用途的音频归类为CarAudioContexts,用于路由、音量管理和音频焦点控制。Android 14引入了可配置音频策略引擎(CAP),提供更灵活的音频路由和音量管理。主区域(isPrimary=&
2026-04-13 09:59:35
46
转载 系统开发面试福利:安卓系统framework简历指导面试题面试官经验分享
本文提供了Framework开发工程师简历书写和面试准备的实用建议。简历方面,建议重点突出Framework相关技能模块(如Binder、AMS等),列举解决过的系统级疑难问题(ANR、黑屏等),避免无关技能,精选1-2个重点项目,并针对职位需求定制化。面试准备部分强调:1)对简历所列模块需深入掌握;2)重点准备性能优化和疑难问题解决案例;3)面试官会深度考察模块知识而非泛泛而谈;4)分享技术问题时要完整描述分析过程。文末还提供了Framework实战开发的学习资源。
2026-04-13 09:57:36
33
转载 敏感权限如何自动授权?pkms的permission部分常用命令汇总
文章摘要: 本文介绍了使用pm命令实现APK权限自动授权的方法,避免修改系统源码。主要内容包括:1)使用dumpsys查询应用权限状态;2)通过pm grant/revoke命令手动授予/撤销特定权限;3)使用pm install -g命令在安装时自动授权所有权限。文中提供了详细命令示例和权限状态检查方法,适用于安卓系统定制场景。建议将APK放在/data/local/tmp目录下操作以避免权限问题。
2026-04-13 09:55:55
35
转载 竞品技术调研:小米分屏SplitScreen自由窗口Freeform中快捷切换按钮
本文分析了小米手机分屏和自由窗口模式下三个辅助点按钮的功能及实现原理。该按钮提供Task模式快捷切换功能,包括全屏、分屏、自由窗口等模式转换。调研发现,辅助点图层挂载在父Task下,而弹出的菜单窗口采用Windowless方案实现,挂载在分屏总Task下。核心难点在于窗口控制、模式切换逻辑及状态过渡处理。该功能简化了分屏与自由窗口间的切换操作,提升了用户体验。
2026-04-13 09:53:55
63
转载 app冷启动性能优化指标之完全显示时间TTFD实战
文章摘要: 本文探讨了移动应用启动时间的两个关键指标:TTID(Time to Initial Display)和TTFD(Time to Full Display)。TTID指应用显示第一帧画面的时间,而TTFD则是用户可交互的完全显示时间。作者分析了TTID的统计方法(通过Logcat过滤Displayed关键字),并指出其局限性——无法反映真实可用时间。重点介绍了通过调用reportFullyDrawn()方法来测量TTFD的实现方案,包括在网络请求完成后延迟调用的实战示例。通过代码演示和日志分析,验
2026-04-13 09:51:27
52
android framework高级实战视频课程相关课件
2022-05-21
Android Framework最好的学习视频
2021-05-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅