<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小羊子的技术专栏]]></title><description><![CDATA[操千曲而后晓声，观千剑而后识器。 个人公众号：小羊子说。欢迎关注。]]></description><link>https://blog.csdn.net/jun5753</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; jun5753]]></copyright><item><title><![CDATA[Android ANR 原理浅析]]></title><link>https://blog.csdn.net/jun5753/article/details/160566867</link><guid>https://blog.csdn.net/jun5753/article/details/160566867</guid><author>jun5753</author><pubDate>Mon, 27 Apr 2026 21:04:51 +0800</pubDate><description><![CDATA[本文系统介绍了Android应用无响应（ANR）问题的核心原理与解决方案。首先定义了ANR的三种主要类型（Input、Service、Broadcast）及其触发条件与超时时间。重点分析了ANR的底层机制，包括InputDispatcher的事件分发、AMS的延时消息检测以及主线程消息队列阻塞原理。提供了完整的ANR排查流程，从日志获取到线程堆栈分析。列举了常见的编码错误和优化方案，如异步处理、启动优化等。最后通过典型面试问题解析，帮助开发者深入理解ANR与Crash的区别、系统设计考量等关键知识点。]]></description><category></category></item><item><title><![CDATA[深入浅出：Android Tombstone 文件分析方法完全指南]]></title><link>https://blog.csdn.net/jun5753/article/details/160475760</link><guid>https://blog.csdn.net/jun5753/article/details/160475760</guid><author>jun5753</author><pubDate>Fri, 24 Apr 2026 15:04:12 +0800</pubDate><description><![CDATA[Tombstone如同Native层的"尸检报告"，通过系统记录的崩溃现场数据，帮助开发者定位内存越界、空指针等底层问题。掌握其分析方法可有效解决难以复现的Native崩溃问题。]]></description><category></category></item><item><title><![CDATA[Android Tombstones日志分析：原理、方法论]]></title><link>https://blog.csdn.net/jun5753/article/details/160342057</link><guid>https://blog.csdn.net/jun5753/article/details/160342057</guid><author>jun5753</author><pubDate>Mon, 20 Apr 2026 17:46:42 +0800</pubDate><description><![CDATA[文章摘要： Tombstone是Android系统在Native层崩溃时生成的诊断文件，记录崩溃现场的寄存器、调用栈、内存映射等信息，存储在/data/tombstones/目录下。其生成流程包括信号捕获、debuggerd进程收集数据并写入文件。分析时需关注信号类型（如SIGSEGV）、崩溃地址（fault addr）、调用栈（backtrace）及内存映射（maps），结合工具（addr2line、ndk-stack）解析符号定位问题。]]></description><category></category></item><item><title><![CDATA[[Android 系统] 音频模块：dumpsys audio 到问题定位的艺术：从输出解读到原理分析]]></title><link>https://blog.csdn.net/jun5753/article/details/160213443</link><guid>https://blog.csdn.net/jun5753/article/details/160213443</guid><author>jun5753</author><pubDate>Thu, 16 Apr 2026 12:41:28 +0800</pubDate><description><![CDATA[在 Android 音频子系统开发和问题定位中，是我最常用的调试工具之一。当遇到“声音突然没了”“蓝牙外放异常”“音量调节不生效”这类问题时，的输出往往能第一时间揭示问题的根源。本文将从 Android 系统开发的角度出发，结合原理分析和实战案例，分享如何将真正用成一把“手术刀”。dumpsys是 Android 系统提供的一个诊断工具，运行在设备端，用于输出系统服务的状态信息。命令会调用 AudioService 的 dump 接口，输出当前音频系统的完整运行时快照。]]></description><category></category></item><item><title><![CDATA[Android系统异常问题处理全攻略：从死机重启到日志分析，手把手教你构建排查体系]]></title><link>https://blog.csdn.net/jun5753/article/details/159984836</link><guid>https://blog.csdn.net/jun5753/article/details/159984836</guid><author>jun5753</author><pubDate>Thu, 09 Apr 2026 13:42:02 +0800</pubDate><description><![CDATA[本文总结了Android系统开发中常见卡死、重启问题的解决方案。首先将系统异常分为五类（Java Crash、ANR、Native Crash等），并指出各类型对应的关键日志位置。文章详细讲解了ANR判定机制和Watchdog工作原理，强调日志收集的三板斧：常规Logcat、ANR traces文件、墓碑文件和内核日志。通过代码示例展示如何主动捕获异常并生成日志，最后结合Camera死锁案例说明分层定位和日志分析的方法论。核心观点是遇到问题先收集日志而非盲目复现，通过分层定位和模拟测试逐步逼近问题根源。]]></description><category></category></item><item><title><![CDATA[Android 音频系统深度解析：从 App 到内核的完整链路]]></title><link>https://blog.csdn.net/jun5753/article/details/159959841</link><guid>https://blog.csdn.net/jun5753/article/details/159959841</guid><author>jun5753</author><pubDate>Wed, 08 Apr 2026 15:42:28 +0800</pubDate><description><![CDATA[本文系统梳理了Android音频播放的全链路流程，从应用层API到内核驱动的完整架构。主要内容包括：1) Android音频系统的分层设计，涵盖应用层、框架层、Native核心层、HAL层和驱动层；2) 应用层API的选型与AudioTrack的共享缓冲区机制；3) Native层的核心组件AudioFlinger的多路混音和音频路由功能；4) 音频策略管理服务AudioPolicyService的决策机制；5) HAL层的硬件抽象作用及从HIDL到AIDL的演进。]]></description><category></category></item><item><title><![CDATA[Android 10年经验转AI应用开发：最快路径与资源清单]]></title><link>https://blog.csdn.net/jun5753/article/details/159918164</link><guid>https://blog.csdn.net/jun5753/article/details/159918164</guid><author>jun5753</author><pubDate>Tue, 07 Apr 2026 12:09:15 +0800</pubDate><description><![CDATA[摘要： 10年经验的Android开发者转型AI应用开发具有显著优势，工程化能力（性能优化、架构设计、SDK集成等）正是纯AI工程师的短板。转型路径分三阶段：1）2周掌握API调用，构建聊天Demo；2）6周实现RAG问答应用；3）4周探索端侧模型部署。需转变三个思维：接受概率性输出、用Prompt替代硬编码、设计容错机制。推荐工具包括Android Studio（内置Gemini）及实战项目（语音助手、商品识别等）。最小可行性方案可在现有App中快速集成AI功能（视觉/语音/对话类）。核心结论：无需从头学]]></description><category></category></item><item><title><![CDATA[【Auido】深入AudioFlinger的混音机制总结]]></title><link>https://blog.csdn.net/jun5753/article/details/159799142</link><guid>https://blog.csdn.net/jun5753/article/details/159799142</guid><author>jun5753</author><pubDate>Fri, 03 Apr 2026 15:49:19 +0800</pubDate><description><![CDATA[本文深入解析Android 15音频系统中的混音机制，重点剖析AudioFlinger的多线程架构与混音流程。系统采用MixerThread、DirectOutputThread等线程模型处理不同音频场景，通过共享内存环形缓冲区实现应用与音频服务的高效数据交互。核心混音过程由AudioMixer类完成，采用加权求和算法对多路PCM样本进行混合，并通过NEON优化实现高性能处理。混音后的数据经HAL接口传递给底层驱动，最终输出到硬件设备。文章以音乐与通知混音场景为例，详细说明了从数据准备、混音计算到硬件。]]></description><category></category></item><item><title><![CDATA[冻屏不重启，这狗是睡着了吗？揭秘Android“假死”背后的真相]]></title><link>https://blog.csdn.net/jun5753/article/details/159767208</link><guid>https://blog.csdn.net/jun5753/article/details/159767208</guid><author>jun5753</author><pubDate>Thu, 02 Apr 2026 22:00:00 +0800</pubDate><description><![CDATA[《Android系统冻屏问题分析与排查》摘要 本文深入分析了Android系统中冻屏但不重启的现象，揭示了WatchDog机制的局限性。文章指出，WatchDog只监控SystemServer核心服务存活状态，无法检测Input系统和SurfaceFlinger的卡死问题。重点剖析了InputDispatcher死锁和SurfaceFlinger缓冲区枯竭两大元凶，并提供了详细的排查方法：通过adb命令检查Input状态、SurfaceFlinger运行情况，以及抓取线程堆栈。文中还分享了一个真实车机冻屏案]]></description><category></category></item><item><title><![CDATA[深挖Android WatchDog：别让你的系统“无人看管”，手把手带你从源码到车机实战]]></title><link>https://blog.csdn.net/jun5753/article/details/159766977</link><guid>https://blog.csdn.net/jun5753/article/details/159766977</guid><author>jun5753</author><pubDate>Thu, 02 Apr 2026 17:40:20 +0800</pubDate><description><![CDATA[Android WatchDog机制深度解析：从源码到车机实战 摘要：本文深入剖析Android系统核心组件WatchDog的工作原理，基于Android 14源码揭示其监控SystemServer关键线程的&quot;30秒死亡倒计时&quot;机制。文章首先阐述WatchDog在车机开发中的重要性，通过源码分析其单例模式实现和Checker监控机制，详细解释其&quot;To-Do List检测法&quot;的工作流程。同时提供实战调试方法，包括日志抓取和AI辅助分析技巧，并分享车机开发中遇到的典型故障]]></description><category></category></item><item><title><![CDATA[车机死机问题排查指南：从现象到源码的完整方法论小结]]></title><link>https://blog.csdn.net/jun5753/article/details/159691761</link><guid>https://blog.csdn.net/jun5753/article/details/159691761</guid><author>jun5753</author><pubDate>Tue, 31 Mar 2026 16:59:15 +0800</pubDate><description><![CDATA[车机死机问题的排查是一项系统工程，需要我们对Android的整个软件栈——从应用层到内核层——有深入的理解。本文介绍的思路和工具，希望能帮助你在面对死机问题时少走弯路。]]></description><category></category></item><item><title><![CDATA[【Android 系统开发】｜LMK低内存查杀机制全解析（含adj修改实战，杜绝应用被杀死）]]></title><link>https://blog.csdn.net/jun5753/article/details/159619321</link><guid>https://blog.csdn.net/jun5753/article/details/159619321</guid><author>jun5753</author><pubDate>Tue, 31 Mar 2026 10:00:00 +0800</pubDate><description><![CDATA[作为Android系统工程师，你一定遇到过这些痛点：系统定制时，核心应用（如车载控制、工业级APP、系统服务）频繁被低内存查杀，导致功能异常；明明加了前台服务，还是逃不过LMK的“手术刀”；改了adj值却不生效，不知道问题出在Framework还是内核。
适合人群：Android系统工程师、ROM定制开发者、内核调优工程师、高级应用开发（想深入理解系统保活底层逻辑），看完能独立完成“LMK机制调试+adj值修改+应用保活”全流程。]]></description><category></category></item><item><title><![CDATA[Android开发如何成为不可替代性]]></title><link>https://blog.csdn.net/jun5753/article/details/159645287</link><guid>https://blog.csdn.net/jun5753/article/details/159645287</guid><author>jun5753</author><pubDate>Mon, 30 Mar 2026 12:29:57 +0800</pubDate><description><![CDATA[不可替代性不是一种天赋，而是一种选择。它意味着选择深入而不是浅尝辄止，选择主动而不是被动，选择长期积累而不是短期取巧。在Android开发这条路上，技术更新换代很快，但解决问题的能力、系统性的思维、对业务的理解，永远不会过时。希望这篇文章能给你一些启发。如果有什么想交流的，欢迎留言。做那个“非你不可”的人，而不是“谁都可以”的人。]]></description><category></category></item><item><title><![CDATA[Android 系统工程师的必修课：深入理解进程与内存管理机制]]></title><link>https://blog.csdn.net/jun5753/article/details/159643618</link><guid>https://blog.csdn.net/jun5753/article/details/159643618</guid><author>jun5753</author><pubDate>Mon, 30 Mar 2026 11:35:02 +0800</pubDate><description><![CDATA[在车机项目开发中，我遇到过无数次因为进程调度不合理导致卡顿、因为内存管理不当引发OOM的案例。作为系统工程师，理解Linux内核的进程和内存管理机制，是驾驭Android系统的基石。今天，我将结合真实车机项目，用通俗的语言带你深入这两个核心领域。]]></description><category></category></item><item><title><![CDATA[【Android 系统开发】VR一体机全局菜单实战（进阶篇）：从按键拦截到Unity 3D渲染(下)]]></title><link>https://blog.csdn.net/jun5753/article/details/159619094</link><guid>https://blog.csdn.net/jun5753/article/details/159619094</guid><author>jun5753</author><pubDate>Mon, 30 Mar 2026 00:31:35 +0800</pubDate><description><![CDATA[在上一篇文章中，我们介绍了利用VirtualDisplay实现全局菜单的基本方案。今天，我们将深入系统底层，从Framework源码层面讲解如何拦截Home键长按事件，并将Unity 3D渲染的炫酷菜单嵌入到系统全局图层中。这是一篇纯正的Android系统工程师实战笔记。]]></description><category></category></item><item><title><![CDATA[【Android 系统开发】VR一体机全局菜单实战：从VirtualDisplay原理到系统级交互(上)]]></title><link>https://blog.csdn.net/jun5753/article/details/159617401</link><guid>https://blog.csdn.net/jun5753/article/details/159617401</guid><author>jun5753</author><pubDate>Sun, 29 Mar 2026 21:05:33 +0800</pubDate><description><![CDATA[本文主要记录了之前在VR一体机开发中，如何实现一个能在任何应用之上呼出的系统级全局菜单，是提升用户体验的关键。本文将结合VirtualDisplay技术原理，分享我在VR项目中实现全局菜单的实战经验。]]></description><category></category></item><item><title><![CDATA[Android系统中 socketpair 的源码解读与应用分析小结]]></title><link>https://blog.csdn.net/jun5753/article/details/159516204</link><guid>https://blog.csdn.net/jun5753/article/details/159516204</guid><author>jun5753</author><pubDate>Fri, 27 Mar 2026 15:20:57 +0800</pubDate><description><![CDATA[Android系统中socketpair的源码解读与应用分析小结]]></description><category></category></item><item><title><![CDATA[Android 内存泄漏的“双子星”：Handler 为何要 static，Context 为何不能 static]]></title><link>https://blog.csdn.net/jun5753/article/details/159515891</link><guid>https://blog.csdn.net/jun5753/article/details/159515891</guid><author>jun5753</author><pubDate>Thu, 26 Mar 2026 22:12:27 +0800</pubDate><description><![CDATA[在 Android 开发中，有两道经典的“面试送命题”：
“Handler 为什么要声明为 static？”
“Context 为什么要避免被 static 引用？”
看似两个独立的问题，背后却藏着同一把钥匙——可达性分析与生命周期不一致。
理解这把钥匙，你不仅能轻松应对面试，更能写出让 GC 点赞的优雅代码。]]></description><category></category></item><item><title><![CDATA[Android 蓝牙问题排查实战：从应用到协议栈的完整指南]]></title><link>https://blog.csdn.net/jun5753/article/details/159510734</link><guid>https://blog.csdn.net/jun5753/article/details/159510734</guid><author>jun5753</author><pubDate>Thu, 26 Mar 2026 16:40:21 +0800</pubDate><description><![CDATA[在车载系统开发中，蓝牙模块是连接手机、耳机、车载娱乐系统的关键桥梁。蓝牙问题的排查往往需要跨越**应用层 → 系统服务层 → 协议栈层 → 硬件固件层**，对工程师的系统调试能力要求极高]]></description><category></category></item><item><title><![CDATA[Android ANR 问题排查：时间线分析与关键日志定位]]></title><link>https://blog.csdn.net/jun5753/article/details/159509238</link><guid>https://blog.csdn.net/jun5753/article/details/159509238</guid><author>jun5753</author><pubDate>Thu, 26 Mar 2026 15:35:47 +0800</pubDate><description><![CDATA[ANR（Application Not Responding）是 Android 开发中最让人头疼的问题之一。面对 ANR，很多开发者第一反应是"看日志"，但面对海量日志往往无从下手。今天，我们从系统工程师的视角，深入讲解如何通过时间线分析和关键日志，精准定位 ANR 的根源。]]></description><category></category></item></channel></rss>