IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

移动开发

共 365 篇文章

IT 2026-06-03 09:03:24 / 累计浏览 208

「置顶」我做了什么

本文是作者的个人技术项目总览,系统梳理了他长期维护的四大方向工作。在 Android 性能分析与工具链建设上,以 SmartPerfetto 为核心,构建了一套基于 Perfetto 的 AI 辅助分析体系,并配套开发了 Android App Memory Analysis、TraceFix(自动插桩)等专用工具,形成了从 Trace 采集、数据可视化到自动化分析的完整流程。AI 与自动化方向,重点介绍了本地运行的 OpenClaw 系统,它整合了多种模型与工具,用于知识管理、日报生成及工程协作,其公开成果如 AI Field Notes 展现了持续的自动化信息处理能力。此外,作者还开发了数款面向真实需求的 iOS 与 Android 应用,如健康预测 App 100Years。在技术内容输出方面,他通过维护 Android Performance 博客、Android Weekly 周刊及知识星球,沉淀了大量关于系统性能、工具使用及方法论的深度文章与案例,构成了公开的知识体系。整体而言,这些项目贯穿了从底层性能分析、工具开发、AI 实践到应用实现与知识分享的完整技术闭环。

本机暂存
IT 2026-06-03 09:03:24 / 累计浏览 98

Android Perfetto 系列 10 - Binder 调度与锁竞争

本文聚焦 Android 跨进程通信核心 Binder 的性能瓶颈诊断,提供了一套基于 Perfetto 的实用分析工作流。文章首先阐明了 Binder 的基础架构与角色,随后重点讲解如何利用 `linux.ftrace` 数据源(捕获 Binder tracepoints、调度事件及 ART Monitor Contention)进行数据采集,并给出了具体的 Trace 配置模板。分析流程分为三步:首先通过事务耗时(如 `client_dur` 和 `server_dur`)定位问题调用;若耗时在派发阶段,则需评估 Binder 线程池是否饱和或缓冲区是否耗尽;若耗时在服务端,则需进一步排查代码逻辑、I/O 等待或 Java 锁竞争(通过 `dalvik` 类别观察)。文章同时介绍了 `am trace-ipc` 和 `binder-trace` 等辅助工具,旨在帮助开发者将复杂的跨进程调用链可视化,从而更直观地定位耗时、线程池压力及锁竞争问题。

本机暂存
IT 2026-06-03 09:03:24 / 累计浏览 153

万字长文推演:手机不再从 App 开始,Agent OS 如何接管任务入口

该文从OpenAI手机产业链传闻切入,探讨了手机操作系统从以App为中心向以AI Agent任务为中心演进的系统性变革。核心观点在于,当用户目标从“打开App”转向“完成任务”时,手机OS需进行深层次的结构迁移:前台从App网格变为任务流,后台从App独占能力变为可授权能力,系统从管理进程窗口转向管理任务、上下文与责任。 文章指出,Agent OS需解决五个关键问题:持续理解用户状态、App转为后台能力提供者、建立可恢复审计的任务运行时、端云按需分工、明确跨边界执行的权限与回滚机制。针对Android平台,作者分析了其作为Agent OS基座的优劣,认为短期更可能从现有系统服务、能力声明框架(如AppFunctions)和Agent协议(如A2A、MCP)中渐进演化,而非彻底重构。变革的关键在于系统层需新增一套对象模型来管理任务(Task)、能力(Capability)、上下文(Context)、权限授权(Grant)和审计记录(Audit),从而将App封装为可调度的能力单元。 最终,这场变革旨在让用户从管理App图标转为管理任务状态,推动手机成为真正的智能任务执行中心。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 67

定位 Android 权限声明来源

在 Android 开发过程中,排查某个应用权限由哪个第三方依赖库引入是一个常见问题。本文介绍了一种通过 Gradle daemon 日志快速定位权限声明来源的方法。 Gradle daemon 是 Gradle 构建系统的后台进程,其日志文件(位于 ~/.gradle/daemon/ 目录)详细记录了依赖解析和 AndroidManifest.xml 合并过程。通过使用 grep 命令在这些日志中搜索特定权限字符串(如 "android.permission.INTERNET"),可以获取相关记录。查询结果通常能明确指出该权限在哪个依赖库的 AndroidManifest.xml 的哪一行被声明,并显示合并操作的日志行号。 根据日志信息,开发者可以确认权限来源。若需移除不需要的权限,可以在应用的主 AndroidManifest.xml 文件中使用 `` 来显式删除。需要注意的是,daemon 日志会随构建次数增加而变大,应定期清理,且不同 Gradle 版本的日志格式可能存在细微差别。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 82

Android ANR 系列 1 :理解 Android ANR 设计思想

Android ANR(应用无响应)机制是系统层面为保障稳定性而设计的核心防御体系,其设计思想远非简单的“主线程超时”。ANR的实质是系统通过跨进程的协同监控与强制干预,对应用行为实施严格约束与熔断,以在开放生态中防止单点故障蔓延。系统将应用ANR与系统级无响应(SNR)明确区分,分别采用事件驱动检测和主动轮询两种不同的治理策略。 ANR监控由system_server进程主导,核心分为两类。组件类ANR通过ActivityManagerService追踪异步任务生命周期,采用“派发-回调-熔断”模型,利用Binder同步调用与Handler延迟消息构建超时检测机制。输入类ANR则更为复杂,InputDispatcher通过socket与应用建立事件通道,依赖队列状态管理(inboundQueue、outboundQueue、waitQueue)和超时检测(默认5秒)来监控事件处理流程。此外,No Focused Window类ANR反映了窗口焦点状态异常,导致事件无法分发。 该机制遵循状态可追踪、故障隔离和用户控制权兜底的设计原则。当超时触发时,系统执行多维熔断:采集线程堆栈与性能数据至traces.txt、隔离问题进程资源、并弹出提示将最终决策权交予用户。这种设计强制开发者关注主线程响应性与异步架构。 ANR问题的分析与治理也已演进为一套方法论,从依赖traces.txt的静态堆栈分析,发展到使用systrace/perfetto进行动态追踪,再到利用机器学习预测复杂根因。最终,治理的目标是走向架构预防性设计,例如约束通信拓扑、管理资源预算与强化异步边界,从而在代码层面内化系统约束,从源头预防ANR。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 99

Android Perfetto 系列 4:使用命令行在本地打开超大 Trace

针对Android性能分析中遇到的超过2GB的大型Perfetto Trace文件无法在网页端直接打开的问题,本文介绍了使用官方提供的trace_processor_shell命令行工具进行本地解析的解决方案。由于浏览器存在内存限制,超大Trace文件会导致在线分析工具失效。trace_processor_shell是Perfetto的核心组件之一,它基于Rust/C++实现高性能解析引擎,能够绕过浏览器限制,在本地高效处理大文件。用户需从GitHub下载对应平台的工具包,然后通过命令行添加`--httpd`参数启动本地服务,之后再访问Perfetto UI界面,选择连接该本地服务进行分析。文章对比了命令行启动与直接使用网页UI两种方式的核心区别:命令行模式提供原生加速、支持高级SQL查询和状态保持,适合复杂的大文件分析;而网页UI模式则更便捷,支持分享等功能,但性能受限。此外,文章还提醒了Mac系统可能遇到的安全权限问题及解决方法。整体而言,该工具为深度性能分析提供了更强大的本地处理能力。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 95

Android Weekly 2025-06 期

Android Weekly 2025-06期聚焦Android技术生态的最新动态与深度解析。在UI与渲染层面,详细对比了传统DiffUtils与Jetpack Compose在列表更新中的机制差异,并深入探讨了如何通过GPU硬件加速、RenderThread优化动画流畅度,以及分析了Android系统的渲染流程与Vsync信号处理。工具与调试方面,介绍了如何使用Perfetto分析渲染机制及在本地处理超大Trace文件,以及利用Frida实现JNI方法的动态跟踪、反汇编与代码补丁。此外,内容还涵盖了Compose与原生View的跨平台混排原理、使用ASM进行字节码插桩、理解ANR设计思想,以及Android Gradle任务机制解析。AI融合趋势明显,探讨了移动端相册如何利用CLIP模型实现AI搜图,以及DeepSeek-R1等推理模型的技术突破。最后,部分文章延伸至内核技术,如鸿蒙微内核论文解读和并发错误检测方法。整体内容广泛覆盖从底层系统到上层应用开发的关键技术点。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 109

Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程

Choreographer 是 Android 渲染管线中承上启下的核心协调者,负责配合 Vsync 信号,为上层应用提供稳定的渲染时机,从而确保流畅的帧率输出。当 Vsync 信号到达时,Choreographer 会被唤醒,并按顺序执行 Input、Animation、Traversal(包含 Measure、Layout、Draw)等关键回调,集中处理一帧的所有更新操作。这一机制取代了早期帧与帧之间无间隔处理的模式,避免了因屏幕刷新周期不匹配而导致的帧率不稳和掉帧问题。 现代 Android(Android 12+)在 Choreographer 调度 UI 线程渲染的基础上,引入了 BlastBufferQueue 机制。RenderThread 可以通过 BlastBufferQueue 更独立地向 SurfaceFlinger 提交帧数据,而 UI 线程不必等待 RenderThread 完成当前帧即可开始准备下一帧,进一步减少了主线程的阻塞时间。深入理解 Choreographer 的初始化流程、Vsync 信号接收方式(如通过 BitTube 与 SurfaceFlinger 通信)以及其与 MessageQueue 的交互,有助于开发者从根本上理解每一帧的运行原理,并利用这些机制进行针对性的性能监控与优化。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 125

Android Weekly 2025-15 期

本期Android Weekly聚焦于性能优化、架构分析、工具链演进及新兴AI技术在移动端的应用。性能优化领域探讨了多层次策略:从“扁鹊三兄弟”故事出发,强调通过编程范式进行预防性设计;介绍了基于预测模型提升GPU绘制效率的方法;提供了在无法adb连接时通过配置文件抓取开机trace进行性能分析的实战指南;并记录了使用perf工具在线定位死循环bug的处理过程。在架构与源码层面,深入剖析了NowInAndroid项目的模块化与数据流设计,以及MMKV相比SharedPreferences在文件操作和数据格式上实现高性能的原理。工具与语言方面,关注到IntelliJ IDEA 2025.1默认启用K2模式以提升Kotlin处理性能,同时提供了Jetpack Compose的性能优化建议以平衡其便利性与渲染开销。系统层面,分析了Linux异构CPU环境下的Misfit任务迁移调度、Android V应用冷启动的Activity生命周期机制,以及Android 16 Beta 4中需关注的JobScheduler、广播和安全等行为变更。此外,周刊还涵盖了Android副屏录制方案、AI编译器基础设施(MLIR)、GPT4.1模型能力对比,以及自适应流媒体等跨领域技术解析,为开发者提供了广泛的技能更新与技术视野。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 99

Android Weekly 2025-16 期

本期内容聚焦Android技术生态的深度实践与前沿探索。系统层面深入剖析了GPU架构互联、eBPF调度器优化、渲染管线优化及内存管理机制,并结合OPPO极光引擎并行绘制、抖音renderD128 OOM疑难排查等实战案例,分享了性能调优与故障定位的深度经验。跨平台领域关注Flutter线程模型重构、TikTok开源框架Lynx的技术特点及Compose Multiplatform iOS稳定版发布。AI辅助开发成为亮点,涉及MCP协议实践、Cursor/Codex等智能编程工具的应用心得,以及大语言模型在编译优化中的新思路。此外,内容还涵盖Binder原理、CFI安全机制、AOSP代码贡献流程、16K页适配等核心知识,整体展现了当前Android开发在系统底层优化、跨平台效率提升与AI工具融合方面的关键动向与解决方案。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 94

Android Perfetto 系列 07 - MainThread 和 RenderThread 解读

本文是Android Perfetto性能分析系列的第七篇,聚焦于主线程(MainThread)与渲染线程(RenderThread)的深入解读。文章旨在帮助开发者利用Perfetto工具,精准分析应用渲染流程,定位卡顿与掉帧问题的根源。核心内容阐述了自Android 5.0引入的双线程渲染架构:主线程负责处理用户输入、执行View的测量、布局与绘制准备(构建DisplayList);渲染线程则专注于通过GPU异步执行渲染命令,提升帧生成效率。文章详细剖析了一帧的完整生命周期,从等待Vsync信号唤醒,到主线程处理输入与动画、执行核心的Traversal(测量、布局、绘制)三阶段,再到通过syncAndDrawFrame将DisplayList同步给渲染线程,最终由渲染线程完成GPU渲染并提交帧至SurfaceFlinger进行合成显示。通过对Perfetto trace中关键事件(如UI Thread的performTraversals、RenderThread的drawing与queueBuffer)的识别与解读,开发者能够理解帧渲染各环节的耗时分布,从而有效区分性能瓶颈所在,并掌握软件绘制与硬件加速模式下的不同Trace表现。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 105

Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析

Vsync(垂直同步)是Android图形系统的核心同步机制,旨在协调软件渲染与显示硬件的刷新节奏,从根本上解决屏幕撕裂问题。Android的Vsync体系采用分层架构:由硬件Vsync(HW Vsync)提供精确时钟基准,但为省电常采用软件预测;进而派生出驱动应用渲染的Vsync-app和负责图层合成的Vsync-sf,Android 13还新增了vync-appSf以优化同步。在Perfetto中,可通过跟踪vsync-app、vsync-sf及HW_VSYNC的状态变化来分析时序,同时结合应用主线程的Choreographer#doFrame和渲染线程的queueBuffer等切片,可完整观测帧流水线。应用帧的生产严格遵循“申请Vsync-接收信号-执行渲染-提交合成”的流程,其关键约束在于BufferQueue时序与多缓冲机制。通过配置Vsync Offset(如appOffset与sfOffset之差),可以调整应用与SurfaceFlinger接收信号的时间差,将显示延迟从约两个周期缩短至一个周期,显著提升交互跟手性。理解这些机制及其在Trace中的表现,是分析高刷新率设备性能瓶颈的基础。

本机暂存
IT 2026-06-03 09:03:23 / 累计浏览 114

Android Perfetto 系列 (九) - CPU 信息解读

作为Android性能分析系列教程的第九篇,本文聚焦于利用Perfetto工具深入解读CPU信息,以定位性能瓶颈和功耗问题。文章核心在于解析Perfetto UI中三个关键CPU轨道:调度(展示各核心运行线程)、频率(记录核心频率变化)和空闲状态。教程详细阐述了现代异构多核架构(big.LITTLE)的任务分配逻辑,指出需将任务属性与核心类型匹配以判断调度合理性。深度剖析了Linux线程状态,重点区分了Running、Runnable(含三种抢占类型)、Sleep及关键的D(不可中断睡眠)状态的成因与性能影响,并介绍了通过Perfetto可视化唤醒关系链来分析线程依赖的方法。在CPU频率方面,文章解析了影响频率的任务负载、场景策略、温度控制与功耗限制等多重因素,强调频率需结合核心类型和系统约束综合评估。最后,阐述了Linux内核调度器(如EAS)的核心行为:基于任务利用率和能效模型进行选核,以及为进行负载均衡或适应唤醒时变化而发生的核心迁移。整体为读者提供了一套从数据采集、状态解读到调度策略分析的系统性CPU性能分析框架。

本机暂存
IT 2021-05-26 22:50:44 / 累计浏览 2,374

编译 RenderDoc 的安卓 apk(带interceptor-lib)

作者以亲身经历开篇:之前编译过安卓版的RenderDoc,但因未留笔记,再次需要时只能重头再来。这次他想为需要强Hook能力的版本做详细记录,因为核心的interceptor-lib组件依赖一个非常古老的LLVM版本,编译过程颇为繁琐。 文章的核心价值在于点出了一个官方文档中未明说的关键陷阱。尽管流程大体可循——先按指南配置好JDK/SDK/NDK,再克隆interceptor-lib并修改其构建脚本——但在实际使用CMake生成工程时,新版本CMake与Android NDK工具链的交互方式已经变化。直接使用常见的`-DANDROID_TOOLCHAIN=clang`参数实际上无效,导致构建会默认选用无法工作的GCC工具链。 作者给出的解决方法是使用正确的CMake参数:`-DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang`,并指明了可参考的具体CMake模块文件路径。这个细微的修正,正是避免编译功亏一篑的关键。文章最终明确,遵循此调整后的步骤,即可成功编译出具备强Hook能力的RenderDoc安卓APK。

本机暂存
IT 2021-02-13 23:22:30 / 累计浏览 3,184

近场通信 vs. 低功耗蓝牙:如何抉择

这篇讲的是NFC和低功耗蓝牙(BLE)这两项热门的低功耗无线技术,该如何根据实际需求做出选择。 虽然它们都成本低廉、易于部署,但核心差异很大。NFC的优势恰恰在于其“近场”特性:设备必须贴近到几厘米内才能连接,这带来了极高的安全性,攻击者很难窃听。连接几乎是瞬间完成的,因此它非常适合安全门禁、非接触支付以及快速设备配对——比如手机一碰投影仪就能开始投屏,但实际数据会通过Wi-Fi等通道传输。 相比之下,BLE的工作距离可达几十米,带宽也更高(约1Mbit/s),但连接需要一点“握手”时间。它的通用性更强,更适合资产追踪、室内导航和位置感知广告等需要一定范围覆盖的企业应用。 简单说,需要极近距离、即时安全交互时,NFC是首选;需要更远距离和一定数据吞吐的场景,则BLE更为合适。两者并非替代关系,而是针对不同需求的互补方案。

本机暂存
IT 2020-02-11 10:07:27 / 累计浏览 2,215

关于 Android 系统流畅性的一些思考

这篇讲的是 Android 流畅性问题的多维度分析。作者认为,用户常遇到的“卡顿”并非单纯是系统优化不足,而是硬件、系统、应用三者复杂交互的结果,需要跳出“甩锅系统”的简单思维。 文章从硬件层面展开,详细对比了 CPU 性能、GPU 强弱、内存大小、存储规格(UFS/eMMC)乃至屏幕分辨率和电池容量对流畅体验的直接影响。例如,内存不足会导致系统频繁杀后台与数据交换,造成操作迟滞;而盲目使用 2K 屏也可能在性能不足时拖累流畅度。 系统层面,作者深入剖析了国内厂商对应用管控、内存策略和进程调度的“魔改”逻辑,指出这主要是为了应对国内应用生态的混乱。同时,文章也提到了渲染线程、TripleBuffer 等底层机制如何共同作用,决定了一帧画面能否在 16 毫秒内完成渲染。 整体而言,作者试图为读者建立一个更全面的分析框架:下次遇到手机卡顿时,除了抱怨系统,或许可以想想是某个后台应用在作祟,或是硬件本身已力不从心。这种多角度的审视,有助于更理性地定位问题根源。

本机暂存
IT 2020-02-07 14:25:16 / 累计浏览 2,266

Android 性能优化必知必会

这篇讲的是Android性能优化的全面知识体系与资源导航。作者基于多年一线经验,坦言性能优化牵涉面广、挑战巨大,因此将自己积累的大量优质技术文章和文档汇总成文,旨在帮助新人快速入门,也作为个人知识的梳理与更新。 文章内容扎实,从“优化心得和经验”到“响应速度”等多个维度,系统性地整理了开发者必知的知识点。其中不仅包含Google官方的性能模式课程与开发指南,更汇集了美团、手机淘宝、微信、支付宝等一线大厂的实战复盘,如手淘全链路性能优化、微信内存优化、支付宝启动优化中的垃圾回收处理等深度实践。 此外,文章还提供了诸如Matrix TraceCanary卡顿监控、I/O质量检测、以及基于二进制文件重排的启动优化等具体技术方案的入口。整个资源库持续更新,为从事系统开发与优化的工程师提供了一份清晰的学习地图和问题解决参考。

本机暂存
IT 2020-02-01 15:18:13 / 累计浏览 2,614

Android 中低内存对性能的影响

这篇文章从实际性能问题出发,系统分析了 Android 系统在低内存状态下对整机性能的拖累。作者首先点明了问题背景:随着系统与应用膨胀,4GB 以下设备在日常使用中极易陷入低内存状态,并直观表现为应用启动慢、列表滑动掉帧、设备发热等现象。 文章详细拆解了低内存的数据与行为特征。开发者可以通过 `dumpsys meminfo` 观察到 Free RAM 极低、ZRAM 使用率飙升等关键指标,同时在系统日志中能看到 Low Memory Killer (LMK) 与 kswapd 线程异常活跃,频繁执行内存回收与进程查杀。 更深入的是,作者剖析了低内存导致卡顿的具体机制:内存不足引发磁盘 IO 频繁,会阻塞主线程;内核回收线程 kswapd 会抢占 CPU 资源,与前台应用竞争;而 LMK 激进查杀后台进程,又会触发应用重启,形成 CPU、内存与 IO 资源的恶性循环。文章还涵盖了相关的调试方法与潜在的优化方向。

本机暂存
IT 2019-04-09 00:33:19 / 累计浏览 2,745

USB 4:目前所知道的一切

这篇讲的是即将到来的下一代USB传输标准——USB 4。它并非简单迭代,而是带来三项核心变革:最高40Gbps的双通道速度、对Thunderbolt 3设备的广泛兼容,以及智能动态的带宽分配能力。 文章明确指出了其关键升级点:USB 4将彻底拥抱Type-C物理接口,并有望终结“速度与视频带宽互相挤占”的时代。例如,在同时输出4K视频与传输数据时,它能按需精准分配资源,避免性能浪费。作者也剖析了与Thunderbolt 3融合的现实前景,虽然并非所有厂商都必须实现,但行业预计将大规模支持,这将极大地降低高性能外接设备(如eGPU)的使用门槛。 此外,文章厘清了USB 4实际会存在10Gbps、20Gbps和40Gbps三档速度,并强制统一了USB供电标准。对于关心新标准具体落地影响的读者,这篇梳理了技术细节、兼容性现状与潜在限制的指南,提供了清晰的技术地图。

本机暂存
IT 2019-03-28 22:20:17 / 累计浏览 1,779

react-native-navigation 简单分析和跨页跳转

这篇讲的是作者在实际项目中使用React Native官方推荐的导航库react-native-navigation时,所遭遇的一系列痛点及其深度解析。文章并非泛泛而谈,而是直指该库的核心设计——一套独立于RN生命周期的事件机制与页面堆栈模型,并剖析了由此引发的问题。 作者重点分析了其“push不销毁当前页”的机制,这虽可能出于性能考虑,却为独占系统资源(如相机、麦克风)的组件埋下了隐患。由于资源不会在路由切换时自动释放,可能引发后续页面无法正常初始化资源的严重问题。文章对此提出了利用Modal Stack或调整交互顺序的解决思路。 更具实践价值的是,文章还探讨了如何“绕过”该库的串行栈限制,实现产品要求的跨页跳转。作者提供了两种具体的技术方案:一种是利用`willAppear`和`didDisappear`生命周期配合状态控制,实现“跳过”中间页的视觉假象;另一种则是通过`props`回调在父子页面间传递指令,巧妙地实现了“接力pop”,从而达到跨页返回的目的。这些技巧展现了在框架限制下寻找灵活解决方案的工程智慧。

本机暂存