- 博客(161)
- 资源 (16)
- 收藏
- 关注
原创 Android ANR 原理浅析
本文系统介绍了Android应用无响应(ANR)问题的核心原理与解决方案。首先定义了ANR的三种主要类型(Input、Service、Broadcast)及其触发条件与超时时间。重点分析了ANR的底层机制,包括InputDispatcher的事件分发、AMS的延时消息检测以及主线程消息队列阻塞原理。提供了完整的ANR排查流程,从日志获取到线程堆栈分析。列举了常见的编码错误和优化方案,如异步处理、启动优化等。最后通过典型面试问题解析,帮助开发者深入理解ANR与Crash的区别、系统设计考量等关键知识点。
2026-04-27 21:04:51
506
原创 深入浅出:Android Tombstone 文件分析方法完全指南
Tombstone如同Native层的"尸检报告",通过系统记录的崩溃现场数据,帮助开发者定位内存越界、空指针等底层问题。掌握其分析方法可有效解决难以复现的Native崩溃问题。
2026-04-24 15:04:12
181
原创 Android Tombstones日志分析:原理、方法论
文章摘要: Tombstone是Android系统在Native层崩溃时生成的诊断文件,记录崩溃现场的寄存器、调用栈、内存映射等信息,存储在/data/tombstones/目录下。其生成流程包括信号捕获、debuggerd进程收集数据并写入文件。分析时需关注信号类型(如SIGSEGV)、崩溃地址(fault addr)、调用栈(backtrace)及内存映射(maps),结合工具(addr2line、ndk-stack)解析符号定位问题。
2026-04-20 17:46:42
186
原创 [Android 系统] 音频模块:dumpsys audio 到问题定位的艺术:从输出解读到原理分析
在 Android 音频子系统开发和问题定位中,是我最常用的调试工具之一。当遇到“声音突然没了”“蓝牙外放异常”“音量调节不生效”这类问题时,的输出往往能第一时间揭示问题的根源。本文将从 Android 系统开发的角度出发,结合原理分析和实战案例,分享如何将真正用成一把“手术刀”。dumpsys是 Android 系统提供的一个诊断工具,运行在设备端,用于输出系统服务的状态信息。命令会调用 AudioService 的 dump 接口,输出当前音频系统的完整运行时快照。
2026-04-16 12:41:28
108
原创 Android系统异常问题处理全攻略:从死机重启到日志分析,手把手教你构建排查体系
本文总结了Android系统开发中常见卡死、重启问题的解决方案。首先将系统异常分为五类(Java Crash、ANR、Native Crash等),并指出各类型对应的关键日志位置。文章详细讲解了ANR判定机制和Watchdog工作原理,强调日志收集的三板斧:常规Logcat、ANR traces文件、墓碑文件和内核日志。通过代码示例展示如何主动捕获异常并生成日志,最后结合Camera死锁案例说明分层定位和日志分析的方法论。核心观点是遇到问题先收集日志而非盲目复现,通过分层定位和模拟测试逐步逼近问题根源。
2026-04-09 13:42:02
726
原创 Android 音频系统深度解析:从 App 到内核的完整链路
本文系统梳理了Android音频播放的全链路流程,从应用层API到内核驱动的完整架构。主要内容包括:1) Android音频系统的分层设计,涵盖应用层、框架层、Native核心层、HAL层和驱动层;2) 应用层API的选型与AudioTrack的共享缓冲区机制;3) Native层的核心组件AudioFlinger的多路混音和音频路由功能;4) 音频策略管理服务AudioPolicyService的决策机制;5) HAL层的硬件抽象作用及从HIDL到AIDL的演进。
2026-04-08 15:42:28
561
原创 Android 10年经验转AI应用开发:最快路径与资源清单
摘要: 10年经验的Android开发者转型AI应用开发具有显著优势,工程化能力(性能优化、架构设计、SDK集成等)正是纯AI工程师的短板。转型路径分三阶段:1)2周掌握API调用,构建聊天Demo;2)6周实现RAG问答应用;3)4周探索端侧模型部署。需转变三个思维:接受概率性输出、用Prompt替代硬编码、设计容错机制。推荐工具包括Android Studio(内置Gemini)及实战项目(语音助手、商品识别等)。最小可行性方案可在现有App中快速集成AI功能(视觉/语音/对话类)。核心结论:无需从头学
2026-04-07 12:09:15
520
原创 【Auido】深入AudioFlinger的混音机制总结
本文深入解析Android 15音频系统中的混音机制,重点剖析AudioFlinger的多线程架构与混音流程。系统采用MixerThread、DirectOutputThread等线程模型处理不同音频场景,通过共享内存环形缓冲区实现应用与音频服务的高效数据交互。核心混音过程由AudioMixer类完成,采用加权求和算法对多路PCM样本进行混合,并通过NEON优化实现高性能处理。混音后的数据经HAL接口传递给底层驱动,最终输出到硬件设备。文章以音乐与通知混音场景为例,详细说明了从数据准备、混音计算到硬件。
2026-04-03 15:49:19
321
原创 冻屏不重启,这狗是睡着了吗?揭秘Android“假死”背后的真相
《Android系统冻屏问题分析与排查》摘要 本文深入分析了Android系统中冻屏但不重启的现象,揭示了WatchDog机制的局限性。文章指出,WatchDog只监控SystemServer核心服务存活状态,无法检测Input系统和SurfaceFlinger的卡死问题。重点剖析了InputDispatcher死锁和SurfaceFlinger缓冲区枯竭两大元凶,并提供了详细的排查方法:通过adb命令检查Input状态、SurfaceFlinger运行情况,以及抓取线程堆栈。文中还分享了一个真实车机冻屏案
2026-04-02 22:00:00
417
原创 深挖Android WatchDog:别让你的系统“无人看管”,手把手带你从源码到车机实战
Android WatchDog机制深度解析:从源码到车机实战 摘要:本文深入剖析Android系统核心组件WatchDog的工作原理,基于Android 14源码揭示其监控SystemServer关键线程的"30秒死亡倒计时"机制。文章首先阐述WatchDog在车机开发中的重要性,通过源码分析其单例模式实现和Checker监控机制,详细解释其"To-Do List检测法"的工作流程。同时提供实战调试方法,包括日志抓取和AI辅助分析技巧,并分享车机开发中遇到的典型故障
2026-04-02 17:40:20
93
原创 车机死机问题排查指南:从现象到源码的完整方法论小结
车机死机问题的排查是一项系统工程,需要我们对Android的整个软件栈——从应用层到内核层——有深入的理解。本文介绍的思路和工具,希望能帮助你在面对死机问题时少走弯路。
2026-03-31 16:59:15
314
原创 【Android 系统开发】|LMK低内存查杀机制全解析(含adj修改实战,杜绝应用被杀死)
作为Android系统工程师,你一定遇到过这些痛点:系统定制时,核心应用(如车载控制、工业级APP、系统服务)频繁被低内存查杀,导致功能异常;明明加了前台服务,还是逃不过LMK的“手术刀”;改了adj值却不生效,不知道问题出在Framework还是内核。适合人群:Android系统工程师、ROM定制开发者、内核调优工程师、高级应用开发(想深入理解系统保活底层逻辑),看完能独立完成“LMK机制调试+adj值修改+应用保活”全流程。
2026-03-31 10:00:00
513
原创 Android开发如何成为不可替代性
不可替代性不是一种天赋,而是一种选择。它意味着选择深入而不是浅尝辄止,选择主动而不是被动,选择长期积累而不是短期取巧。在Android开发这条路上,技术更新换代很快,但解决问题的能力、系统性的思维、对业务的理解,永远不会过时。希望这篇文章能给你一些启发。如果有什么想交流的,欢迎留言。做那个“非你不可”的人,而不是“谁都可以”的人。
2026-03-30 12:29:57
408
原创 Android 系统工程师的必修课:深入理解进程与内存管理机制
在车机项目开发中,我遇到过无数次因为进程调度不合理导致卡顿、因为内存管理不当引发OOM的案例。作为系统工程师,理解Linux内核的进程和内存管理机制,是驾驭Android系统的基石。今天,我将结合真实车机项目,用通俗的语言带你深入这两个核心领域。
2026-03-30 11:35:02
383
原创 【Android 系统开发】VR一体机全局菜单实战(进阶篇):从按键拦截到Unity 3D渲染(下)
在上一篇文章中,我们介绍了利用VirtualDisplay实现全局菜单的基本方案。今天,我们将深入系统底层,从Framework源码层面讲解如何拦截Home键长按事件,并将Unity 3D渲染的炫酷菜单嵌入到系统全局图层中。这是一篇纯正的Android系统工程师实战笔记。
2026-03-30 00:31:35
130
1
原创 【Android 系统开发】VR一体机全局菜单实战:从VirtualDisplay原理到系统级交互(上)
本文主要记录了之前在VR一体机开发中,如何实现一个能在任何应用之上呼出的系统级全局菜单,是提升用户体验的关键。本文将结合VirtualDisplay技术原理,分享我在VR项目中实现全局菜单的实战经验。
2026-03-29 21:05:33
207
2
原创 Android 内存泄漏的“双子星”:Handler 为何要 static,Context 为何不能 static
在 Android 开发中,有两道经典的“面试送命题”:“Handler 为什么要声明为 static?”“Context 为什么要避免被 static 引用?”看似两个独立的问题,背后却藏着同一把钥匙——可达性分析与生命周期不一致。理解这把钥匙,你不仅能轻松应对面试,更能写出让 GC 点赞的优雅代码。
2026-03-26 22:12:27
47
原创 Android 蓝牙问题排查实战:从应用到协议栈的完整指南
在车载系统开发中,蓝牙模块是连接手机、耳机、车载娱乐系统的关键桥梁。蓝牙问题的排查往往需要跨越**应用层 → 系统服务层 → 协议栈层 → 硬件固件层**,对工程师的系统调试能力要求极高
2026-03-26 16:40:21
755
原创 Android ANR 问题排查:时间线分析与关键日志定位
ANR(Application Not Responding)是 Android 开发中最让人头疼的问题之一。面对 ANR,很多开发者第一反应是"看日志",但面对海量日志往往无从下手。今天,我们从系统工程师的视角,深入讲解如何通过时间线分析和关键日志,精准定位 ANR 的根源。
2026-03-26 15:35:47
221
原创 Android Binder 通信机制中的内存泄漏:从原理到实战
作为 Android 底层通信的基石,Binder 承载着几乎所有的跨进程调用。然而,它也是一把双刃剑——使用不当,内存泄漏就会悄然而至。今天,我们从 Framework 的视角,深入剖析 Binder 通信中的内存泄漏原因,并提供实战解决方案。
2026-03-25 16:07:36
527
原创 Android 广播“失踪”案:Framework 源码深度剖析与修改实战
通过深入 Framework 源码,我们能更精准地定位和解决广播问题。修改系统源码虽然门槛较高,但对于车机、TV 等定制化 ROM 开发来说,这是必经之路。修改 Framework 的几个原则:最小化修改:只改必要的部分,避免引入副作用可配置化:通过系统配置控制新功能,方便开关充分测试:广播影响面广,务必全面回归测试向上兼容:考虑不同 Android 版本的差异:广播分发主逻辑:广播限流判断:权限检查:静态接收器分发希望这篇文章能帮助大家更好地理解 Android 广播机制。
2026-03-25 15:54:15
507
原创 车机开发中如何卸载蓝牙驱动及安装蓝牙驱动
在车机开发中,会遇到蓝牙无法打开的情况,需要联调测试和给出验证的解决方案,排查和验证思路是 卸载和安装相关的蓝牙驱动,可解决无法打开蓝牙的问题。
2026-03-24 12:06:40
67
原创 关于车机中的升级流程小结(SOC、MCU、4G升级流程)
本文总结了工作中使用的 soc mcu 4g升级的主要流程,主要是思路记录,方便日后复盘用。
2026-03-24 11:53:41
477
原创 Android 车机开发中常用的adb 脚本(更新中)
本文总结了在车载车机开发中常用的 adb 脚本,为了平时方便使用,整理成了bat 脚本,方便提高开发效率,记录于此,供你参考。
2026-03-24 11:48:10
113
原创 Git分支合并实战:把feat/run_test代码合并到release/3.1.0的完整指南
在日常开发中,分支合并是Git操作的核心场景——比如将开发完成的功能分支代码合并到发布分支,准备上线。本文以「把feat/run_test分支合并到release/3.1.0分支」为例,用通俗易懂的语言+实操命令,讲解分支合并的完整流程、避坑要点和最佳实践,无论你是Git新手还是有一定经验的开发者,都能快速上手。
2026-02-26 11:02:09
658
原创 Android开发必学:Thread.currentThread().stackTrace 实战运用,定位问题快10倍
本文聚焦Android开发中实用却易被忽视的`Thread.currentThread().stackTrace` API,以通俗易懂的方式讲解其核心用法与实战价值。该API可获取当前线程的调用栈信息,帮开发者快速理清代码执行路径,解决“方法调用来源不明”“多线程调用溯源”“异常定位难”等高频问题。文中以Kotlin编写完整示例,展示如何打印方法调用栈、排查多线程调用问题、自定义异常日志,还给出过滤系统类、控制栈深度等优化技巧。同时提醒开发者注意性能消耗、栈深度限制、代码混淆等。
2026-02-25 18:25:51
69
原创 Android性能优化与实际案例小结
在近几年过往的 Android 开发经历中,性能优化是保障应用流畅运行、提升用户体验的核心环节,也是高级工程师面试的重点考察内容。下面我将从**UI 渲染优化、内存优化、启动优化、网络优化**四个核心维度,结合实际项目案例展开分析,在此做一些小结,供你参考,不足之处,欢迎交流指出
2025-10-27 14:32:47
209
原创 Framework常用adb命令集合小结(更新中)
无论是平常Framework开发还是 Framework 性能优化,熟悉常用的adb是必不可少的,现总结一下常用的 adb 相关命令,供你参考,如有更多的使用技巧,欢迎留言补充。
2025-10-09 10:38:10
115
原创 adb 在车载中抓取日志的批处理 bat的两种方式
本文总结了在工作中经常用到的adb 在车载中抓取日志的批处理 bat的两种方式,是排查问题时的必须手段,如何全面的抓取日志是非常重要的一环!
2024-12-17 21:11:54
269
原创 [Audio] SystemUI 频繁调节音量时 进度条出现回弹的问题
本地测试 log:目前本地测试环境中,FW 收到客户端后 向 百瑞的SDK 芯片设置时的耗时情况:FW 向 SDK 芯片设置时 时间达到166ms (耗时差异性太大,几十 ms ~ 100多ms)下一步:@ 蓝牙端,看看是否有优化空间。Adapter 端和客户端采用的 IPC Binder 同步机制,binder 线程是公用的,当 FW 端处理蓝牙侧内部的任务耗时过多时,服务端不能及时将结果返回给客户端,其他任务(如客户端)就没办法执行,就会处于阻塞状态,等待服务端收到消息后才能继续发送消息。
2024-12-17 21:06:16
460
原创 【FW】车机应用中按键音延迟的问题小结
摘要:车机系统中出现反复点击按钮后仍有屏幕点击声的问题。日志分析显示输入事件处理存在epoll错误和文件描述符异常。解决方案在InputReader.cpp中注释了fadePointerLocked函数的相关调用,避免了指针控制器渐变操作。该问题涉及输入事件的分发延迟,建议参考提供的流程图进一步梳理点击事件处理流程。修改后通过屏蔽非必要操作解决了残留点击声问题。
2024-12-17 21:03:35
366
原创 Android Audio中 AudioTrack、 AudioFlinger和 HAL 使用dump的区别
Audio dump 在定位音频的各种问题非常重要,我们主要在 AudioTrack、 AudioFlinger和 HAL 层中会用到,这里我们先明确一下在不同层使用 dump 的区别。
2024-11-08 15:26:21
1316
原创 车机版 Android Audio 框架笔记
车机版Android Audio 框架涉及的知识点很多,在工作中涉及的功能板块也及其繁杂,后面我会根据工作中的一些实际遇到的实例,逐步拆解 Android Audio的知识点,这里从网上整理了一些思维导图,可以做为未来的一个研究方向,希望大家持续关注,欢迎交流~
2024-11-08 11:11:48
564
HTML5_and_CSS3_Develop_with_Tomorrows_Standards_Today
2011-07-18
How to Dump Frames for Camera Tuning And Debugging
2023-02-02
Wiley-Smashing.HTML5.2010.RETAiL.EBook-DiGiBook
2011-07-18
universal-image-loader.jar
2015-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅