Android Weekly 是一份专注于 Android 技术生态的周刊,每周一更新。本周刊深入挖掘 Android 系统架构、性能优化、跨平台开发、AI 等领域的高质量技术内容,为开发者提供持续的知识更新与技术洞察。
订阅渠道:[微信公众号] | [知乎专栏] | [掘金] | [RSS]
技术文章
- 对 Android 游戏画面抖动现象的研究: 本文研究了 Android 平台下游戏在 30 帧运行时的画面抖动问题,分析了生产者-消费者模型导致消耗周期不均匀的原因,并使用 Perfetto 工具量化抖动程度。提出了两种解决方案:Swappy 方案通过 EGL 扩展缓解抖动,但存在延迟和机型适配问题;渲染线程同步方案通过均匀生产画面节奏改善抖动,延迟较低但效果有限。未来计划结合 Vsync-sf 信号优化现有方案,进一步减少延迟并提升精准度。
- SurfaceFlinger 的硬件 Vsync 深入分析-千里马 android framework 车机手机系统开发: 文章深入分析了 Android 系统中 SurfaceFlinger 的硬件 Vsync 机制,包括其调用流程、硬件与软件之间的协作关系,以及内核驱动如何通过中断触发硬件 Vsync 信号并最终回调到应用层的详细过程。
- 【双语视界】【硬核科普】CPU 调度算法:让电脑流畅运行的核心原理: 这篇文章介绍了 CPU 调度算法的核心原理及其在现代操作系统中的应用,涵盖经典算法(如 FCFS、SJF、RR)和现代技术(如多级队列、多级反馈队列)的设计与优化。它还探讨了调度中的难题,例如时间量子悖论和饥饿陷阱,并通过实际案例和系统对比(如 Windows 与 Linux)阐释调度机制如何影响系统性能与用户体验。
- Compose Multiplatform Skia 对比 Flutter Impeller ,都是跨平台自绘有什么差异: 本文对比了 Jetbrains 的 Compose Multiplatform 使用的 Skia 和 Google 的 Flutter Impeller,探讨了两者在跨平台自绘领域的差异。文章详细分析了 Skia 的工作原理、特性及其在 Android 和 iOS 平台的表现,同时介绍了 Impeller 的预编译着色器优势和其专注于 Flutter 的设计理念,并指出两者在功能、性能及稳定性上的优劣。
- 内存检测工具 KASAN:精准定位内存越界的“幽灵”: 内存检测工具 KASAN(Kernel Address Sanitizer)是 Linux 内核中的重要工具,专门用于检测内存错误。它通过影子内存机制精准定位内存越界、释放后使用以及未初始化内存等问题,为开发者提供强大的支持,大幅提升系统稳定性和安全性。
- 桌面 app 冷启动性能优化:聊一聊优化策略方案及布置学员作业: 文章探讨桌面应用冷启动性能优化策略,提出通过在触摸事件的 down 阶段启动 Activity 的预启动机制,结合 framework 层面区分预启动与真启动,从而减少冷启动时间,同时避免误触问题。这一优化思路被作为学员作业布置,鼓励实践探索。
- aosp15 VSCode 调试 native 程序完整笔记: aosp15 VSCode 调试 native 程序的完整笔记详细介绍了如何使用 VSCode 调试 aosp15 中的 native 代码。文章从背景、前置条件、调试步骤到可能出现的错误及解决方法进行了逐步讲解,并提供了相关环境设置和命令操作技巧。
- 任务调度器:从入门到放弃(一): 任务调度器在操作系统中负责管理和分配 CPU 资源,以确保多线程任务的高效运行。本文介绍了 Linux 中的调度器机制,包括不同调度类的优先级、CFS(完全公平调度器)的运行原理以及 cgroup(控制组)如何通过资源配额限制解决线程资源分配不均的问题。同时讨论了调度器在 Android 系统中的应用及其存在的问题。
- 任务调度器:从入门到放弃(二): 任务调度器的工作原理及其在不同场景下的应用与挑战。文章详细介绍了任务调度器的事件驱动机制、CFS 调度器的逻辑、Linux 内核调度器的精度与吞吐量权衡,以及 big-little 架构下的异构多处理器对任务分配的复杂性。此外,还探讨了负载量化模型(PELT 与 WALT)的优缺点及其在任务调度中的应用。
- 任务调度器:从入门到放弃(三): 本文讨论了任务调度器中的 Energy Aware Scheduling(EAS)算法,从预测频率、计算功耗到最终决策任务运行在大核或小核上的过程。文章详细分析了 CPU 频率与功耗之间的关系,提出了功耗模型的重要性及其挑战,同时对硬件设计中的乱序执行、分支预测等技术进行了深入探讨,并指出 EAS 算法在实践中的不准确性和局限性。
- 任务调度器:从入门到放弃(四): 任务调度器在 Linux 内核中的复杂性和挑战,包括任务负载的量化、CPU 频率与调度的互相影响、优先级反转问题,以及不同调度类的特点与局限性。文章详细探讨了调度器的工作机制、负载计算公式、调频算法、优先级反转的解决方案以及各大厂商的优化策略。
- Android 系统 内存不足时,kswapd 导致的性能问题之冷热文件回收方案: Android 系统内存不足时,kswapd 导致性能问题,提出了冷热文件回收的优化方案。文章分析了 kswapd 的内存回收机制及其对应用性能的影响,并建议通过调整回收策略来降低系统内存不足时的性能开销。
- 腾讯 Kuikly 框架鸿蒙版正式开源 —— 揭秘卓越性能适配之旅: Kuikly 是腾讯广泛使用的跨端开发框架,基于 Kotlin Multiplatform 技术构建,为开发者提供了技术栈更统一的跨端开发体验,由腾讯大前端领域 Oteam(公司级)推出。在 Android、iOS 开源基础上,本次开源鸿蒙平台支持和 Compose DSL 支持,进一步提升业务多端适配和鸿蒙开发效率。目前 Kuikly 鸿蒙版已接入腾讯多款业务,开发并上架鸿蒙 App,如 QQ 浏览器、腾讯新闻、搜狗输入法、全民 K 歌、自选股等。
- CPU 时钟周期结构原理: 本文深入到晶体电路与时钟网络的级别,让我们从物理与微架构两条“腿”来全面剖析 CPU 时钟周期的工作原理。本篇覆盖时钟来源、倍频鎖相环(PLL)、时钟分发、门控、时钟域跨越、PVT(Process–Voltage–Temperature)变异对时钟的影响,以及在流水线设计、寄存器管理和高性能异步接口中的关键细节。
- 解锁 CPU 上下文切换:深入理解计算机的“幕后舞者”: 、这篇文章详细阐述了 CPU 上下文切换的概念、类型、过程以及对系统性能的影响。文章还介绍了相关监控工具和优化策略,并通过案例分析展示了如何解决高负载服务器的性能问题。
- 深入理解 RecyclerView 的绘制流程和滑动原理(匠心巨作-上): 本文详细解析了 RecyclerView 的绘制流程与滑动原理,包括绘制的三个步骤(onMeasure、onLayout、onDraw)、LinearLayoutManager 中的填充、测量与布局过程,以及滑动事件的处理与惯性滑动的实现。通过源码分析,深入探讨了 RecyclerView 的嵌套滑动机制和滑动逻辑。
- 深入理解 RecyclerView 的嵌套滑动机制(匠心巨作-中): 本文详细解析了 RecyclerView 的嵌套滑动机制,包括 CoordinatorLayout 与 Behavior 的交互原理、嵌套滑动事件的传递流程,以及 RecyclerView 如何实现嵌套滑动。文章通过源码分析和实例演示,逐步揭示了嵌套滑动的核心逻辑与实现细节。
- 深入理解 RecyclerView 的回收复用缓存机制详解(匠心巨作-下): 本文详细解析了 RecyclerView 的回收复用机制,涵盖其缓存池分类、源码流程以及回收与复用的原理。文章通过源码分析说明了 RecyclerView 如何通过多级缓存优化性能,减少不必要的视图创建与数据绑定工作。
- 高通 bwmon L3 总线性能优化方案: 高通 bwmon L3 总线性能优化方案介绍,通过监控总线带宽速率,动态调整频率以优化能耗和性能。解决传统固定频率方案中性能浪费和响应延迟的问题,提升片上系统(SoC)特定互连链路的吞吐量。典型应用包括优化 L3 缓存与内存之间的数据传输效率,以及 CPU 集群与系统总线的通信。
- 不因质疑而放弃对真理的追求:点赞 Xavier Xia 童鞋对 contpte_ptep_get 的优化: Xavier Xia 通过持续优化函数 contpte_ptep_get(),在面对社区质疑时坚持不懈,用数据证明其补丁在各种场景下均有性能提升且无退化,最终赢得认可。这一过程展现了追求真理的重要性,即便面对质疑,只要以数据为基础,终会获得理解与支持。
- CPU 三级缓存(L1/L2/L3)工作原理: CPU 三级缓存(L1/L2/L3)工作原理:文章详细介绍了 CPU 缓存的作用、工作原理、三级缓存结构及其存储机制,并阐述了局部性原理对缓存命中率的影响,同时讲解了 MESI 协议在多核处理器中的缓存一致性维护方法,以及常见的缓存映射方式。
- ARM CPU 性能分析 – SPE 采样分析: ARM CPU 性能分析方法包括 PMU 性能监控、Top-Down 性能分析和 SPE 采样分析,其中 SPE 采样分析通过硬件记录指令执行过程中的详细信息,如地址、延迟、事件类型和数据来源,具有高精度和低开销的特点,可使用 perf 工具进行数据采样与分析。
- 巧用[]byte 与 ASCII 值加减实现 56%性能加速以及 83%内存消耗下降: 本文通过优化加密密钥生成函数,利用[]byte 数组和 ASCII 值加减代替初始方案中的 map 存储及字符串拼接,显著提升了性能(加速 56%)并减少了内存消耗(下降 83%)。作者建议在代码中多使用 byte 数组进行下标操作,利用 ASCII 值进行大小写转换,同时关注内存与 CPU 消耗,结合 benchmark 测试优化代码。
- Android V app 冷启动(13) 焦点窗口更新: 本文详细分析了 Android 应用冷启动过程中焦点窗口的更新流程,涵盖了启动窗口添加、Activity 可见性更新、焦点窗口解析及真窗绘制等技术细节。文章通过代码讲解和流程解析,展示了如何逐步实现焦点窗口的切换,并解决冷启动过程中焦点窗口相关的问题。
- 批处理实现:自动抓取 perfetto 日志 自动导出到当前文件夹 自动打开分析页面: 文章主要介绍了如何使用批处理脚本实现自动抓取 Perfetto 日志、导出文件并打开分析页面的操作方法。文章详细描述了配置文件的生成、脚本的编写及执行步骤,并附带了具体的配置示例,涵盖了性能追踪的多种参数设置。
- Android Runtime 即时编译触发条件与阈值深度解析(38): 本文深入解析了 Android Runtime(ART)中的即时编译(JIT)机制,包括其触发条件、动态调整策略、性能影响以及与其他模块的协同工作,并探讨了不同 Android 版本中 JIT 触发机制的演进。
- 分享 Linux 学习和工程实践的方法学: 这是笔者几年前写的一个 ppt,现贴出来分享
- CPU 流水线技术原理: 本文详细介绍了 CPU 指令流水线技术的原理及其应用,涵盖了基本概念、设计原则、性能指标、常见问题及解决方法,以及多发技术的改进。通过流水线技术可以显著提升 CPU 的处理效率,但同时也会面临一些挑战,例如流水线冒险和性能损耗。
- 探秘 React Native:线程探索及桥优化: 本文探讨了 React Native 中的线程管理及桥优化,涉及 JS 线程、NativeModules 线程和 UI 线程的创建与消息队列代理,通过同步桥和异步桥实现线程间通信。同步桥适合短耗时、低频调用场景,而异步桥适合长耗时、高频调用场景。文章还介绍了使用 Perfetto 工具检测桥执行耗时,并通过 Trace 和 SQL 分析优化桥调用顺序,以提升性能表现。
- 聊聊 Glide | 不看源码,只聊设计: Glide 是一个高性能图片加载框架,文章通过三步链式调用(with(context)、load(url)、into(imageView))详细分析了其设计与功能,包括生命周期管理、缓存机制、图片请求与转换等。文章还探讨了 Glide 的代码设计特点及其稳定性和扩展性。
- Android 图形系统(一)屏幕篇:LCD 和 OLED 怎么选?: 本文是 Android 图形系统系列的第一篇文章,主要探讨 LCD 和 OLED 屏幕的区别及显示原理。文章详细介绍了两种屏幕的优缺点、结构组成、调光方式以及选购建议,同时讨论了 OLED 屏幕的烧屏问题和低频 PWM 调光对眼睛的影响。
- Android 图形系统(二)驱动篇:垂直同步到底要不要开?: 本文是 Android 图形系统系列的第二篇文章,重点介绍屏幕刷新率、帧率、垂直同步及相关技术的原理和应用场景。文章详细探讨了画面撕裂的原因及解决方案,包括垂直同步、三重缓存和自适应刷新技术的优缺点,并根据不同使用场景给出了是否开启垂直同步的建议。
- Android 图形系统(三)系统篇:当我们点击“微信”这个应用后,它是怎么在屏幕上显示出来的?: 本篇是 Android 图形系列的第三篇文章,在之前的两篇文章中分别介绍了屏幕的“显示原理”和屏幕的“刷新原理”,今天我们来一起学习 Android 系统的图形架构设计,聊一聊输送到屏幕的画面数据是如何产生的
- Android 图形系统(四)应用篇:自定义 View/ViewGroup 详解: 本文详细介绍了 Android 自定义 View 和 ViewGroup 的开发过程,重点分析了测量、布局、绘制三个阶段的实现逻辑,包括各阶段的核心方法、调用链以及硬件加速对绘制流程的影响。此外,文章还通过示例代码展示了如何手写一个斜着摆放子 View 的线性布局,并对相关概念如 MeasureSpec、LayoutParams、Canvas API 等进行了深入解析。
- Android 图形系统(五)番外篇:触摸事件详解: 本文详细解析了 Android 图形系统中的触摸事件工作原理,从硬件驱动到系统内核,再到 Framework 层的事件传递和分发,最后到应用层的事件消费。通过深入分析,文章展现了触摸事件的完整生命周期,并揭示了事件分发机制的核心逻辑。
- Google I/O Extended :2025 Flutter 的现状与未来: Flutter GDE 郭树煜,Github GSY 项目的维护人,今天主要分享的内容是「Flutter 的现状与未来」,可能今天更多会是信息科普类型的内容,主要是分享关于 Flutter 的现状与未来
- 如何对 Android 系统进行性能分析?: 本文详细探讨了如何对 Android 系统进行性能分析,涵盖了分析方法论、系统宏观综合分析、IO 性能分析、组件性能优化以及复杂性背后的思考。文章提供了多种工具和方法,并结合实际案例展示了性能分析的具体操作步骤。
- 性能优化必学基础:input 流程与 systrace 结合剖析: 性能优化必学基础:文章深入解析了 Android 系统中 Input 事件的处理流程,并结合 Systrace 工具剖析了事件分发与应用响应的机制。文章详细介绍了 InputReader 和 InputDispatcher 的工作原理,以及事件在系统队列和应用队列中的流转过程。此外,还探讨了应用进程中触控事件的分发和责任链模式的设计,帮助开发者更好地理解性能优化的关键环节。
- Flutter Web 的发展历程:Dart、Flutter 与 WasmGC: Flutter Web 的发展历程展示了 Dart 和 Flutter 团队在 Web 平台上的持续投入与技术进步,从早期的 dart2js 到如今的 dart2wasm,以及 WebAssembly (WasmGC) 的引入,Flutter Web 正逐渐转向高性能和更一致的渲染体验,同时探索更广泛的应用场景。
- 极致优化 UE Android APK 的大小: 本文详细介绍了如何通过优化策略减少 Android 平台上基于 UE(Unreal Engine)开发的 APK 大小,同时降低 Native 库的运行时内存占用。文章涵盖了从代码优化到资源裁剪的多种方法,并提供了具体的实践案例。
- 案例分享:page fault 对进程 Running 时间影响: 本文讨论了缺页中断(Page Fault)对进程运行时间的影响,指出当发生缺页中断时,进程可能从 Running 状态切换到 Waiting 状态以等待 I/O 完成,而该处理时间会计入进程的内核态运行时间。此外,文章分析了中断上下文与进程上下文的区别,并解释了为何缺页中断处理函数可以休眠,其本质在于是否存在进程上下文。
- Android 性能分析全景图: 本文概述了 Android 性能分析的核心技术,包括性能指标(如启动时间、渲染指标)、测量工具(如 Jankstats API、Firebase Performance Monitoring)、追踪方法(如 Perfetto、atrace)以及数据格式(如 Trace Event JSON、Perfetto Protobuf)。文章强调 eBPF 和 Perfetto 作为现代性能分析工具的重要性,并介绍了性能可视化方法(如 Timeline 图、火焰图)。推荐学习资料为《Performance Analysis and Tuning on Modern CPUs》。
- 从一例 Lottie OOM 线上事故读源码: 本文详细分析了使用 Lottie 动画时出现的内存溢出(OOM)问题,并通过源码解读和优化策略解决了相关问题。文章通过裁剪动画资源、调整缓存策略、优化内存释放机制等方式有效降低了内存使用,并指出了 Lottie 源码中的一些潜在问题。
- 案例总结: ProfilingManager API: ProfilingManager API 是 Android 15 引入的新调试工具,支持收集堆转储、堆分析、堆栈采样和系统追踪等信息,通过回调将分析结果保存至应用文件目录,并通过速率限制减少性能影响,推荐三方应用使用该接口替代自定义方案。
- Google Play 应用上架二三事: 文章总结了个人和公司开发者在 Google Play 上注册和上架应用的流程及注意事项,强调了身份验证、支付方式、封闭测试要求等细节,并分享了应对审核拒绝、权限管理和隐私政策优化的经验,同时指出老账号的价值和 Google Play 审核政策的动态变化,建议开发者保持学习以适应新规。
杂记
- 科技爱好者周刊#350:Java 三十周年: 这里记录每周值得分享的科技内容,周五发布。
- 应该按照什么原则做软硬融合设计?: 优秀的软硬融合设计,其核心原则就是“用软件定义一切,用硬件加速关键”,通过精准识别出那些成熟且对性能影响最大的功能,并将其硬件化,从而在灵活性和极致效率之间找到最佳平衡点。
- 谈性能,没有什么可以干了?: 性能问题涉及内存泄露、负载增加和存储老化等核心矛盾,解决需从开发阶段建立防护网,优化调度算法和架构设计,并通过工具如 simpleperf 进行系统观测与分析。尽管问题难以彻底解决,但持续改进与创新能带来显著收益。
- 为什么科技大厂自己要做硬件?: 为什么科技大厂选择自研硬件?文章分析了科技公司自研芯片的原因、挑战和策略,强调自研芯片能够提供独特的用户体验、增强品牌价值、确保供应链稳定,并构建生态系统,但同时也面临高昂成本和技术门槛。最终,自研芯片的目标是提升用户体验并保障企业的长期战略安全。
- 我的极简数字生活:一份持续更新的软硬件清单: Joe 的折腾日记记录了作者在数字生活中使用的软硬件工具清单,涵盖了记录与文档、浏览器、任务管理、阅读、听歌、AI 与学习、影视剧观看、同步与备份、地图与导航、网络代理、截图工具、Mac 端小众工具、随身设备和随车设备等多个领域。这份清单旨在帮助作者优化工具使用、减少分心,并持续更新以适应个人需求。
AI
- 如何利用 cursor 快速理解复杂代码工程?: Cursor 是一款基于 AI 的代码工具,通过严格的 RIPER-5 协议,结合五种模式(研究、创新、规划、执行、审查),帮助用户快速理解复杂代码工程、制定开发计划并拆解任务,同时支持自动化工作流,将产品需求文档转化为技术架构和任务拆解,显著提升遗留项目接手效率和管理成本优化。
- Anthropic:我们如何构建多智能体研究系统: 本文介绍了 Anthropic 公司如何构建多智能体研究系统以优化复杂主题的探索,详细描述了系统架构、提示工程、工具设计以及评估方法等方面的关键经验和挑战。
- AI 编码代理(以 Cursor 和 Claude Code 为例)的崛起及其深远影响: AI 编码代理的崛起正在推动软件开发行业发生根本性的变革,从辅助工具转变为主动代理。这种转变显著提高了生产力,同时也带来了技术债、安全漏洞和法律困境等隐性成本。开发者的角色正从代码实现者转向监督者和架构师,工程组织需要重塑团队结构和开发生命周期,以适应新现实。Cursor 和 Claude Code 是代表性工具,它们分别代表了高度集成的 AI 原生环境与灵活的代理式工具链的两种发展路径。AI 编码代理的影响不仅限于技术层面,还涉及教育、法律、伦理和经济领域的深远变革。
- 我是如何使用 Claude Code 的: 本文作者分享了自己使用 Claude Code 的经验和技巧,详细介绍了如何优化其功能以提高编程任务的效率,同时探讨了自动化与人工监督之间的平衡。
- 写在 Kimi K2 发布之后:再也不仅仅是 ChatBot: 文章作者分享了关于 Kimi K2 发布后的心得体会,讨论了人工智能技术的进步及其对产品形态的影响,并探讨了开源的意义、模型能力的提升以及公司在追求 AGI(通用人工智能)目标上的决心。文章还提到了一些行业趋势、竞争环境以及对未来的展望。
- “10x Cursor”开发体验, Claude Code 如何带来 AI Coding 的 L4 时刻?| Best Ideas: 文章分析了 Claude Code 如何凭借其强大的模型能力和 Agentic 异步性实现 AI 编程的 L4 级别体验,并对比了其与 Cursor 的优劣及 CLI 与 GUI 在 AI 编程工具中的未来形态。文章还探讨了 AI 编程工具的能力边界和未来发展方向,包括冷门知识处理、自动化代码运维部署以及人机交互优化等。
- Manus「删博跑路」后,创始人首次深度复盘:公开产品细节,总结教训: Manus AI 在爆火四个月后几乎全面撤出中国市场,其联合创始人季逸超首次深度复盘,分享了构建 AI Agent 的经验教训,包括上下文工程的关键技术点和设计理念。文章详细介绍了如何通过优化上下文、缓存命中率、工具选择和错误处理来提升 AI Agent 的性能,同时强调了上下文工程的重要性以及对未来 Agent 系统的启示。
鸡血
投稿指南
欢迎投稿分享您的:
- 技术博客
- 实践经验
- 工具推荐
投稿方式:
- 公众号后台回复”投稿”
- 本周刊下面留言
- 发邮件 :dreamtale.jg@gmail.com
- 微信联系:Gracker_Gao
关于作者
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 掘金 - Gracker:https://juejin.cn/user/1816846860560749
- 知乎 - Gracker:https://www.zhihu.com/people/gracker
- 个人博客 - Android Performance : 写东西的地方
- 个人介绍 - 欢迎加微信群组多多交流 :里面有个人的微信和微信群链接。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- 微信公众号 Android Performance :
- Android 性能优化知识星球 : 个人运营的一个知识星球,欢迎加入,多谢支持~
版权声明
- 本周刊遵循 CC BY-NC-SA 4.0 协议
- 转载请注明出处:Android Weekly 第 X 期
- 欢迎订阅、分享,让更多开发者受益