Android Weekly #202518

Android Weekly 是一份专注于 Android 技术生态的周刊,每周一更新。本周刊深入挖掘 Android 系统架构、性能优化、跨平台开发、AI 等领域的高质量技术内容,为开发者提供持续的知识更新与技术洞察。

订阅渠道:[微信公众号] | [知乎专栏] | [掘金] | [RSS]

技术文章

  1. 对 Android 游戏画面抖动现象的研究: 本文研究了 Android 平台下游戏在 30 帧运行时的画面抖动问题,分析了生产者-消费者模型导致消耗周期不均匀的原因,并使用 Perfetto 工具量化抖动程度。提出了两种解决方案:Swappy 方案通过 EGL 扩展缓解抖动,但存在延迟和机型适配问题;渲染线程同步方案通过均匀生产画面节奏改善抖动,延迟较低但效果有限。未来计划结合 Vsync-sf 信号优化现有方案,进一步减少延迟并提升精准度。
  2. SurfaceFlinger 的硬件 Vsync 深入分析-千里马 android framework 车机手机系统开发: 文章深入分析了 Android 系统中 SurfaceFlinger 的硬件 Vsync 机制,包括其调用流程、硬件与软件之间的协作关系,以及内核驱动如何通过中断触发硬件 Vsync 信号并最终回调到应用层的详细过程。
  3. 【双语视界】【硬核科普】CPU 调度算法:让电脑流畅运行的核心原理: 这篇文章介绍了 CPU 调度算法的核心原理及其在现代操作系统中的应用,涵盖经典算法(如 FCFS、SJF、RR)和现代技术(如多级队列、多级反馈队列)的设计与优化。它还探讨了调度中的难题,例如时间量子悖论和饥饿陷阱,并通过实际案例和系统对比(如 Windows 与 Linux)阐释调度机制如何影响系统性能与用户体验。
  4. Compose Multiplatform Skia 对比 Flutter Impeller ,都是跨平台自绘有什么差异: 本文对比了 Jetbrains 的 Compose Multiplatform 使用的 Skia 和 Google 的 Flutter Impeller,探讨了两者在跨平台自绘领域的差异。文章详细分析了 Skia 的工作原理、特性及其在 Android 和 iOS 平台的表现,同时介绍了 Impeller 的预编译着色器优势和其专注于 Flutter 的设计理念,并指出两者在功能、性能及稳定性上的优劣。
  5. 内存检测工具 KASAN:精准定位内存越界的"幽灵": 内存检测工具 KASAN(Kernel Address Sanitizer)是 Linux 内核中的重要工具,专门用于检测内存错误。它通过影子内存机制精准定位内存越界、释放后使用以及未初始化内存等问题,为开发者提供强大的支持,大幅提升系统稳定性和安全性。
  6. 桌面 app 冷启动性能优化:聊一聊优化策略方案及布置学员作业: 文章探讨桌面应用冷启动性能优化策略,提出通过在触摸事件的 down 阶段启动 Activity 的预启动机制,结合 framework 层面区分预启动与真启动,从而减少冷启动时间,同时避免误触问题。这一优化思路被作为学员作业布置,鼓励实践探索。
  7. aosp15 VSCode 调试 native 程序完整笔记: aosp15 VSCode 调试 native 程序的完整笔记详细介绍了如何使用 VSCode 调试 aosp15 中的 native 代码。文章从背景、前置条件、调试步骤到可能出现的错误及解决方法进行了逐步讲解,并提供了相关环境设置和命令操作技巧。
  8. 任务调度器:从入门到放弃(一): 任务调度器在操作系统中负责管理和分配 CPU 资源,以确保多线程任务的高效运行。本文介绍了 Linux 中的调度器机制,包括不同调度类的优先级、CFS(完全公平调度器)的运行原理以及 cgroup(控制组)如何通过资源配额限制解决线程资源分配不均的问题。同时讨论了调度器在 Android 系统中的应用及其存在的问题。
  9. 任务调度器:从入门到放弃(二): 任务调度器的工作原理及其在不同场景下的应用与挑战。文章详细介绍了任务调度器的事件驱动机制、CFS 调度器的逻辑、Linux 内核调度器的精度与吞吐量权衡,以及 big-little 架构下的异构多处理器对任务分配的复杂性。此外,还探讨了负载量化模型(PELT 与 WALT)的优缺点及其在任务调度中的应用。
  10. 任务调度器:从入门到放弃(三): 本文讨论了任务调度器中的 Energy Aware Scheduling(EAS)算法,从预测频率、计算功耗到最终决策任务运行在大核或小核上的过程。文章详细分析了 CPU 频率与功耗之间的关系,提出了功耗模型的重要性及其挑战,同时对硬件设计中的乱序执行、分支预测等技术进行了深入探讨,并指出 EAS 算法在实践中的不准确性和局限性。
  11. 任务调度器:从入门到放弃(四): 任务调度器在 Linux 内核中的复杂性和挑战,包括任务负载的量化、CPU 频率与调度的互相影响、优先级反转问题,以及不同调度类的特点与局限性。文章详细探讨了调度器的工作机制、负载计算公式、调频算法、优先级反转的解决方案以及各大厂商的优化策略。
  12. Android 系统 内存不足时,kswapd 导致的性能问题之冷热文件回收方案: Android 系统内存不足时,kswapd 导致性能问题,提出了冷热文件回收的优化方案。文章分析了 kswapd 的内存回收机制及其对应用性能的影响,并建议通过调整回收策略来降低系统内存不足时的性能开销。
  13. 腾讯 Kuikly 框架鸿蒙版正式开源 ------ 揭秘卓越性能适配之旅: Kuikly 是腾讯广泛使用的跨端开发框架,基于 Kotlin Multiplatform 技术构建,为开发者提供了技术栈更统一的跨端开发体验,由腾讯大前端领域 Oteam(公司级)推出。在 Android、iOS 开源基础上,本次开源鸿蒙平台支持和 Compose DSL 支持,进一步提升业务多端适配和鸿蒙开发效率。目前 Kuikly 鸿蒙版已接入腾讯多款业务,开发并上架鸿蒙 App,如 QQ 浏览器、腾讯新闻、搜狗输入法、全民 K 歌、自选股等。
  14. CPU 时钟周期结构原理: 本文深入到晶体电路与时钟网络的级别,让我们从物理与微架构两条"腿"来全面剖析 CPU 时钟周期的工作原理。本篇覆盖时钟来源、倍频鎖相环(PLL)、时钟分发、门控、时钟域跨越、PVT(Process--Voltage--Temperature)变异对时钟的影响,以及在流水线设计、寄存器管理和高性能异步接口中的关键细节。
  15. 解锁 CPU 上下文切换:深入理解计算机的"幕后舞者": 、这篇文章详细阐述了 CPU 上下文切换的概念、类型、过程以及对系统性能的影响。文章还介绍了相关监控工具和优化策略,并通过案例分析展示了如何解决高负载服务器的性能问题。
  16. 深入理解 RecyclerView 的绘制流程和滑动原理(匠心巨作-上): 本文详细解析了 RecyclerView 的绘制流程与滑动原理,包括绘制的三个步骤(onMeasure、onLayout、onDraw)、LinearLayoutManager 中的填充、测量与布局过程,以及滑动事件的处理与惯性滑动的实现。通过源码分析,深入探讨了 RecyclerView 的嵌套滑动机制和滑动逻辑。
  17. 深入理解 RecyclerView 的嵌套滑动机制(匠心巨作-中): 本文详细解析了 RecyclerView 的嵌套滑动机制,包括 CoordinatorLayout 与 Behavior 的交互原理、嵌套滑动事件的传递流程,以及 RecyclerView 如何实现嵌套滑动。文章通过源码分析和实例演示,逐步揭示了嵌套滑动的核心逻辑与实现细节。
  18. 深入理解 RecyclerView 的回收复用缓存机制详解(匠心巨作-下): 本文详细解析了 RecyclerView 的回收复用机制,涵盖其缓存池分类、源码流程以及回收与复用的原理。文章通过源码分析说明了 RecyclerView 如何通过多级缓存优化性能,减少不必要的视图创建与数据绑定工作。
  19. 高通 bwmon L3 总线性能优化方案: 高通 bwmon L3 总线性能优化方案介绍,通过监控总线带宽速率,动态调整频率以优化能耗和性能。解决传统固定频率方案中性能浪费和响应延迟的问题,提升片上系统(SoC)特定互连链路的吞吐量。典型应用包括优化 L3 缓存与内存之间的数据传输效率,以及 CPU 集群与系统总线的通信。
  20. 不因质疑而放弃对真理的追求:点赞 Xavier Xia 童鞋对 contpte_ptep_get 的优化: Xavier Xia 通过持续优化函数 contpte_ptep_get(),在面对社区质疑时坚持不懈,用数据证明其补丁在各种场景下均有性能提升且无退化,最终赢得认可。这一过程展现了追求真理的重要性,即便面对质疑,只要以数据为基础,终会获得理解与支持。
  21. CPU 三级缓存(L1/L2/L3)工作原理: CPU 三级缓存(L1/L2/L3)工作原理:文章详细介绍了 CPU 缓存的作用、工作原理、三级缓存结构及其存储机制,并阐述了局部性原理对缓存命中率的影响,同时讲解了 MESI 协议在多核处理器中的缓存一致性维护方法,以及常见的缓存映射方式。
  22. ARM CPU 性能分析 -- SPE 采样分析: ARM CPU 性能分析方法包括 PMU 性能监控、Top-Down 性能分析和 SPE 采样分析,其中 SPE 采样分析通过硬件记录指令执行过程中的详细信息,如地址、延迟、事件类型和数据来源,具有高精度和低开销的特点,可使用 perf 工具进行数据采样与分析。
  23. 巧用[]byte 与 ASCII 值加减实现 56%性能加速以及 83%内存消耗下降: 本文通过优化加密密钥生成函数,利用[]byte 数组和 ASCII 值加减代替初始方案中的 map 存储及字符串拼接,显著提升了性能(加速 56%)并减少了内存消耗(下降 83%)。作者建议在代码中多使用 byte 数组进行下标操作,利用 ASCII 值进行大小写转换,同时关注内存与 CPU 消耗,结合 benchmark 测试优化代码。
  24. Android V app 冷启动(13) 焦点窗口更新: 本文详细分析了 Android 应用冷启动过程中焦点窗口的更新流程,涵盖了启动窗口添加、Activity 可见性更新、焦点窗口解析及真窗绘制等技术细节。文章通过代码讲解和流程解析,展示了如何逐步实现焦点窗口的切换,并解决冷启动过程中焦点窗口相关的问题。
  25. 批处理实现:自动抓取 perfetto 日志 自动导出到当前文件夹 自动打开分析页面: 文章主要介绍了如何使用批处理脚本实现自动抓取 Perfetto 日志、导出文件并打开分析页面的操作方法。文章详细描述了配置文件的生成、脚本的编写及执行步骤,并附带了具体的配置示例,涵盖了性能追踪的多种参数设置。
  26. Android Runtime 即时编译触发条件与阈值深度解析(38): 本文深入解析了 Android Runtime(ART)中的即时编译(JIT)机制,包括其触发条件、动态调整策略、性能影响以及与其他模块的协同工作,并探讨了不同 Android 版本中 JIT 触发机制的演进。
  27. 分享 Linux 学习和工程实践的方法学: 这是笔者几年前写的一个 ppt,现贴出来分享
  28. CPU 流水线技术原理: 本文详细介绍了 CPU 指令流水线技术的原理及其应用,涵盖了基本概念、设计原则、性能指标、常见问题及解决方法,以及多发技术的改进。通过流水线技术可以显著提升 CPU 的处理效率,但同时也会面临一些挑战,例如流水线冒险和性能损耗。
  29. 探秘 React Native:线程探索及桥优化: 本文探讨了 React Native 中的线程管理及桥优化,涉及 JS 线程、NativeModules 线程和 UI 线程的创建与消息队列代理,通过同步桥和异步桥实现线程间通信。同步桥适合短耗时、低频调用场景,而异步桥适合长耗时、高频调用场景。文章还介绍了使用 Perfetto 工具检测桥执行耗时,并通过 Trace 和 SQL 分析优化桥调用顺序,以提升性能表现。
  30. 聊聊 Glide | 不看源码,只聊设计: Glide 是一个高性能图片加载框架,文章通过三步链式调用(with(context)、load(url)、into(imageView))详细分析了其设计与功能,包括生命周期管理、缓存机制、图片请求与转换等。文章还探讨了 Glide 的代码设计特点及其稳定性和扩展性。
  31. Android 图形系统(一)屏幕篇:LCD 和 OLED 怎么选?: 本文是 Android 图形系统系列的第一篇文章,主要探讨 LCD 和 OLED 屏幕的区别及显示原理。文章详细介绍了两种屏幕的优缺点、结构组成、调光方式以及选购建议,同时讨论了 OLED 屏幕的烧屏问题和低频 PWM 调光对眼睛的影响。
  32. Android 图形系统(二)驱动篇:垂直同步到底要不要开?: 本文是 Android 图形系统系列的第二篇文章,重点介绍屏幕刷新率、帧率、垂直同步及相关技术的原理和应用场景。文章详细探讨了画面撕裂的原因及解决方案,包括垂直同步、三重缓存和自适应刷新技术的优缺点,并根据不同使用场景给出了是否开启垂直同步的建议。
  33. Android 图形系统(三)系统篇:当我们点击"微信"这个应用后,它是怎么在屏幕上显示出来的?: 本篇是 Android 图形系列的第三篇文章,在之前的两篇文章中分别介绍了屏幕的"显示原理"和屏幕的"刷新原理",今天我们来一起学习 Android 系统的图形架构设计,聊一聊输送到屏幕的画面数据是如何产生的
  34. Android 图形系统(四)应用篇:自定义 View/ViewGroup 详解: 本文详细介绍了 Android 自定义 View 和 ViewGroup 的开发过程,重点分析了测量、布局、绘制三个阶段的实现逻辑,包括各阶段的核心方法、调用链以及硬件加速对绘制流程的影响。此外,文章还通过示例代码展示了如何手写一个斜着摆放子 View 的线性布局,并对相关概念如 MeasureSpec、LayoutParams、Canvas API 等进行了深入解析。
  35. Android 图形系统(五)番外篇:触摸事件详解: 本文详细解析了 Android 图形系统中的触摸事件工作原理,从硬件驱动到系统内核,再到 Framework 层的事件传递和分发,最后到应用层的事件消费。通过深入分析,文章展现了触摸事件的完整生命周期,并揭示了事件分发机制的核心逻辑。
  36. Google I/O Extended :2025 Flutter 的现状与未来: Flutter GDE 郭树煜,Github GSY 项目的维护人,今天主要分享的内容是「Flutter 的现状与未来」,可能今天更多会是信息科普类型的内容,主要是分享关于 Flutter 的现状与未来
  37. 如何对 Android 系统进行性能分析?: 本文详细探讨了如何对 Android 系统进行性能分析,涵盖了分析方法论、系统宏观综合分析、IO 性能分析、组件性能优化以及复杂性背后的思考。文章提供了多种工具和方法,并结合实际案例展示了性能分析的具体操作步骤。
  38. 性能优化必学基础:input 流程与 systrace 结合剖析: 性能优化必学基础:文章深入解析了 Android 系统中 Input 事件的处理流程,并结合 Systrace 工具剖析了事件分发与应用响应的机制。文章详细介绍了 InputReader 和 InputDispatcher 的工作原理,以及事件在系统队列和应用队列中的流转过程。此外,还探讨了应用进程中触控事件的分发和责任链模式的设计,帮助开发者更好地理解性能优化的关键环节。
  39. Flutter Web 的发展历程:Dart、Flutter 与 WasmGC: Flutter Web 的发展历程展示了 Dart 和 Flutter 团队在 Web 平台上的持续投入与技术进步,从早期的 dart2js 到如今的 dart2wasm,以及 WebAssembly (WasmGC) 的引入,Flutter Web 正逐渐转向高性能和更一致的渲染体验,同时探索更广泛的应用场景。
  40. 极致优化 UE Android APK 的大小: 本文详细介绍了如何通过优化策略减少 Android 平台上基于 UE(Unreal Engine)开发的 APK 大小,同时降低 Native 库的运行时内存占用。文章涵盖了从代码优化到资源裁剪的多种方法,并提供了具体的实践案例。
  41. 案例分享:page fault 对进程 Running 时间影响: 本文讨论了缺页中断(Page Fault)对进程运行时间的影响,指出当发生缺页中断时,进程可能从 Running 状态切换到 Waiting 状态以等待 I/O 完成,而该处理时间会计入进程的内核态运行时间。此外,文章分析了中断上下文与进程上下文的区别,并解释了为何缺页中断处理函数可以休眠,其本质在于是否存在进程上下文。
  42. Android 性能分析全景图: 本文概述了 Android 性能分析的核心技术,包括性能指标(如启动时间、渲染指标)、测量工具(如 Jankstats API、Firebase Performance Monitoring)、追踪方法(如 Perfetto、atrace)以及数据格式(如 Trace Event JSON、Perfetto Protobuf)。文章强调 eBPF 和 Perfetto 作为现代性能分析工具的重要性,并介绍了性能可视化方法(如 Timeline 图、火焰图)。推荐学习资料为《Performance Analysis and Tuning on Modern CPUs》。
  43. 从一例 Lottie OOM 线上事故读源码: 本文详细分析了使用 Lottie 动画时出现的内存溢出(OOM)问题,并通过源码解读和优化策略解决了相关问题。文章通过裁剪动画资源、调整缓存策略、优化内存释放机制等方式有效降低了内存使用,并指出了 Lottie 源码中的一些潜在问题。
  44. 案例总结: ProfilingManager API: ProfilingManager API 是 Android 15 引入的新调试工具,支持收集堆转储、堆分析、堆栈采样和系统追踪等信息,通过回调将分析结果保存至应用文件目录,并通过速率限制减少性能影响,推荐三方应用使用该接口替代自定义方案。
  45. Google Play 应用上架二三事: 文章总结了个人和公司开发者在 Google Play 上注册和上架应用的流程及注意事项,强调了身份验证、支付方式、封闭测试要求等细节,并分享了应对审核拒绝、权限管理和隐私政策优化的经验,同时指出老账号的价值和 Google Play 审核政策的动态变化,建议开发者保持学习以适应新规。

杂记

  1. 科技爱好者周刊#350:Java 三十周年: 这里记录每周值得分享的科技内容,周五发布。
  2. 应该按照什么原则做软硬融合设计?: 优秀的软硬融合设计,其核心原则就是"用软件定义一切,用硬件加速关键",通过精准识别出那些成熟且对性能影响最大的功能,并将其硬件化,从而在灵活性和极致效率之间找到最佳平衡点。
  3. 谈性能,没有什么可以干了?: 性能问题涉及内存泄露、负载增加和存储老化等核心矛盾,解决需从开发阶段建立防护网,优化调度算法和架构设计,并通过工具如 simpleperf 进行系统观测与分析。尽管问题难以彻底解决,但持续改进与创新能带来显著收益。
  4. 为什么科技大厂自己要做硬件?: 为什么科技大厂选择自研硬件?文章分析了科技公司自研芯片的原因、挑战和策略,强调自研芯片能够提供独特的用户体验、增强品牌价值、确保供应链稳定,并构建生态系统,但同时也面临高昂成本和技术门槛。最终,自研芯片的目标是提升用户体验并保障企业的长期战略安全。
  5. 我的极简数字生活:一份持续更新的软硬件清单: Joe 的折腾日记记录了作者在数字生活中使用的软硬件工具清单,涵盖了记录与文档、浏览器、任务管理、阅读、听歌、AI 与学习、影视剧观看、同步与备份、地图与导航、网络代理、截图工具、Mac 端小众工具、随身设备和随车设备等多个领域。这份清单旨在帮助作者优化工具使用、减少分心,并持续更新以适应个人需求。

AI

  1. 如何利用 cursor 快速理解复杂代码工程?: Cursor 是一款基于 AI 的代码工具,通过严格的 RIPER-5 协议,结合五种模式(研究、创新、规划、执行、审查),帮助用户快速理解复杂代码工程、制定开发计划并拆解任务,同时支持自动化工作流,将产品需求文档转化为技术架构和任务拆解,显著提升遗留项目接手效率和管理成本优化。
  2. Anthropic:我们如何构建多智能体研究系统: 本文介绍了 Anthropic 公司如何构建多智能体研究系统以优化复杂主题的探索,详细描述了系统架构、提示工程、工具设计以及评估方法等方面的关键经验和挑战。
  3. AI 编码代理(以 Cursor 和 Claude Code 为例)的崛起及其深远影响: AI 编码代理的崛起正在推动软件开发行业发生根本性的变革,从辅助工具转变为主动代理。这种转变显著提高了生产力,同时也带来了技术债、安全漏洞和法律困境等隐性成本。开发者的角色正从代码实现者转向监督者和架构师,工程组织需要重塑团队结构和开发生命周期,以适应新现实。Cursor 和 Claude Code 是代表性工具,它们分别代表了高度集成的 AI 原生环境与灵活的代理式工具链的两种发展路径。AI 编码代理的影响不仅限于技术层面,还涉及教育、法律、伦理和经济领域的深远变革。
  4. 我是如何使用 Claude Code 的: 本文作者分享了自己使用 Claude Code 的经验和技巧,详细介绍了如何优化其功能以提高编程任务的效率,同时探讨了自动化与人工监督之间的平衡。
  5. 写在 Kimi K2 发布之后:再也不仅仅是 ChatBot: 文章作者分享了关于 Kimi K2 发布后的心得体会,讨论了人工智能技术的进步及其对产品形态的影响,并探讨了开源的意义、模型能力的提升以及公司在追求 AGI(通用人工智能)目标上的决心。文章还提到了一些行业趋势、竞争环境以及对未来的展望。
  6. "10x Cursor"开发体验, Claude Code 如何带来 AI Coding 的 L4 时刻?| Best Ideas: 文章分析了 Claude Code 如何凭借其强大的模型能力和 Agentic 异步性实现 AI 编程的 L4 级别体验,并对比了其与 Cursor 的优劣及 CLI 与 GUI 在 AI 编程工具中的未来形态。文章还探讨了 AI 编程工具的能力边界和未来发展方向,包括冷门知识处理、自动化代码运维部署以及人机交互优化等。
  7. Manus「删博跑路」后,创始人首次深度复盘:公开产品细节,总结教训: Manus AI 在爆火四个月后几乎全面撤出中国市场,其联合创始人季逸超首次深度复盘,分享了构建 AI Agent 的经验教训,包括上下文工程的关键技术点和设计理念。文章详细介绍了如何通过优化上下文、缓存命中率、工具选择和错误处理来提升 AI Agent 的性能,同时强调了上下文工程的重要性以及对未来 Agent 系统的启示。

鸡血

投稿指南

欢迎投稿分享您的:

  • 技术博客
  • 实践经验
  • 工具推荐

投稿方式:

  • 公众号后台回复"投稿"
  • 本周刊下面留言
  • 发邮件 :dreamtale.jg@gmail.com
  • 微信联系:Gracker_Gao

关于作者

下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!

  1. 掘金 - Gracker:juejin.cn/user/181684...
  2. 知乎 - Grackerwww.zhihu.com/people/grac...
  3. 个人博客 - Android Performance: 写东西的地方
  4. 个人介绍 - 欢迎加微信群组多多交流 :里面有个人的微信和微信群链接。
  5. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)

版权声明

  • 本周刊遵循 CC BY-NC-SA 4.0 协议
  • 转载请注明出处:Android Weekly 第 X 期
  • 欢迎订阅、分享,让更多开发者受益
相关推荐
CV资深专家2 小时前
Android14 SystemUI 启动流程(2)
android
怀君2 小时前
Flutter——Android原生View是如何通过Flutter进行加载
android·flutter
Kiri霧4 小时前
Kotlin方差
android·开发语言·kotlin
Kiri霧5 小时前
Kotlin泛型约束
android·linux·windows·kotlin
Kiri霧5 小时前
Kotlin内联函数
android·开发语言·微信·kotlin
liosen5 小时前
【安卓笔记】RxJava的Hook机制,整体拦截器
android·rxjava·hook
雨白6 小时前
通过Intent传递自定义对象的两种方式
android
Kiri霧9 小时前
Kotlin比较接口
android·java·前端·微信·kotlin
阿华的代码王国9 小时前
【Android】EditText使用和监听
android·xml·java