Android Performance

Android Weekly 2025-02 期

Word count: 3.8kReading time: 13 min
2025/01/12
loading

Android Weekly 是由 Gracker 精心整理和发布的技术资讯周刊,每周一准时更新,汇聚了过去一周内与 Android 相关的高质量技术文章、泛客户端技术的最新动态,以及其他值得关注的非技术类文章,内容覆盖广泛,从 Android 开发到跨平台技术,从系统底层优化到前沿技术分享,为开发者提供全方位的知识拓展。

本周刊可以通过微信公众号、知乎专栏、掘金专栏、个人博客、竹白等平台订阅和阅读。

技术文章

  1. Tools, not Rules: become a better Android developer with Compiler Explorer : 该文章介绍了一个名为 Compiler Explorer 的工具,它可以帮助 Android 开发者了解编译过程中的优化机制。该工具允许开发者探索 Java 和 Kotlin 代码是如何转换为汇编指令的,以及 ART 编译器在此过程中进行的各种优化。文章通过几个具体的代码示例,展示了 Compiler Explorer 如何帮助开发者理解编译器的工作原理,从而更好地编写高效的 Android 代码。
  2. 几乎是当下最详细的 AOSP 编译与调试运行指南 : 这篇文章是关于 AOSP 编译与调试运行的详细指南,包括 Android 13 源码在 Ubuntu 环境下的全量下载与编译,源码导入 AS 的两种方式及相关操作,介绍了源码目录结构、编译产物信息、代码搜索和单独模块编译,还阐述了系统调试方法,如源码修改编译运行、断点调试系统代码(Java)。
  3. 闲谈丨像福尔摩斯一样去解 Bug : 解决 Bug 时,要像福尔摩斯一样收集充分的数据和工具,深入了解原理而非表象;要拥有广博的视野,洞见问题的本质;要对已解决的问题保持学习和思考,不断积累经验。同时还要客观认识 Bug 的性质和影响,优先处理高风险 Bug,考虑用折衷方式应对无法根治的问题。
  4. CPU 使用率高就一定有效率吗? : 这篇文章讨论了 CPU 使用率高并不一定意味着效率高的问题。作者通过具体实验分析了线程并发计数时悲观锁(synchronized)和自旋锁(CAS、spin_lock)的性能差异,并对自旋锁进行了优化。最后总结了内存墙是导致性能问题的核心原因,提出了几个相关的案例供读者参考。
  5. AI Agent(智能体)技术白皮书(Google,2024) : 本文介绍了基于生成式 AI 的”Agent”的基本架构和工作原理。Agent 是一个能够利用工具和编排层来扩展语言模型能力的应用程序,可以执行复杂任务并与外部系统交互。文章详细探讨了构成 Agent 的三大核心组件:模型、工具和编排层。其中工具是连接模型和外部世界的关键,包括 Extensions、Functions 和 Data Stores 等形式。此外,文章还介绍了通过上下文学习、基于检索的学习和微调等方式来提升 Agent 性能的方法。最后,文章给出了基于 LangChain 快速构建 Agent 原型的示例代码。
  6. LLM-Powered GUI Agents in Phone Automation: Surveying Progress and Prospects : 本文详细介绍了 vivo AI Lab 联合香港中文大学 MMLab 等团队发布的关于大模型驱动的手机自动化智能体的综述论文。论文长达 48 页,覆盖了 200 余篇文献,系统总结了基于大模型的手机自动化技术的发展历程、技术框架、应用场景及未来挑战。文章首先回顾了传统手机自动化技术的局限性,如通用性差、维护成本高、意图理解能力弱等,随后介绍了大语言模型(LLM)如何通过自然语言理解、多模态感知和推理决策能力,推动手机自动化的智能化发展。论文还详细探讨了手机 GUI 智能体的框架设计、模型选择与训练、数据集与评估方法,并指出了未来研究的方向,如数据集多样性、设备端部署效率和安全问题等。
  7. Android 性能优化:内存优化(理论篇) : 这篇文章主要介绍了 Android 内存优化的理论知识,包括内存基础知识、内存分配、单进程内存上限、垃圾回收算法、引用类型、优化必要性及思路等。指出内存优化可避免 OOM 等问题,提升系统效率和用户体验。优化思路涵盖数据收集分析、借助工具排查问题、针对问题优化及制定长效治理策略。
  8. Android 性能优化:内存优化(实践篇) : 这篇文章是关于 Android 性能优化中内存优化的实践总结。先介绍了内存构成和获取内存信息,接着列举了常用内存检测工具及优缺点。然后阐述了 OOM 常见问题如 Bitmap 内存占用、内存泄露等,给出优化方式和监控方法。还提到了业务优化,包括设备分级和业务降级,以及线上监控和告警体系搭建。最后总结了内存优化的成果和不足。
  9. 让您的应用为 16 KB 页面大小的设备做好准备 : 为 16 KB 页面大小的设备做好应用准备
  10. Getting Started with CameraX in Jetpack Compose : 本文概述了如何使用 Android 的新 CameraX 和 Jetpack Compose 库在 Compose 中创建摄像头预览。
  11. 鸿蒙应用签名实操及机制探究 : 本文介绍了鸿蒙单框架应用的签名机制,拆解了每一步的实操过程和背后的实现原理,并对源码进行了分析整理签名的校验机制。从中探究了鸿蒙系统的安全设计思路,希望能给从事鸿蒙研发的同学提供一些借鉴。
  12. 译:我是如何利用 LLM 进行编程的 : 本文作者分享了利用大语言模型(LLM)进行编程的个人经验和未来展望。作者主要通过自动补全代码、搜索技术问题、对话式编程三种方式利用 LLM,并认为这些方式都为提高编程工作效率带来积极影响。文章还分析了利用 LLM 编写可读测试、小型化包结构等新的编程趋势,并提出了 sketch.dev 这样专门针对 LLM 编程的 IDE 概念。
  13. 谈功耗是什么 : 这是一篇关于移动设备功耗分析和优化的文章,功耗是硬件器件消耗电池能量的量度。我们需要从软件角度理解和估算功耗,通过分析软件结构和对硬件的使用情况来分解和定位功耗问题。从软件角度看功耗主要包括 CPU 负载、传感器使用、屏幕显示等各个方面。我们需要从进程、线程级别逐步深化到函数、任务级别来分析和定位功耗问题。在任务级别上,Android 应用的功耗主要体现在 Looper 消息处理、Binder 调用、线程回调等关键结构上,可以通过代码标注的方式将其与功耗情况关联起来。
  14. SPE profiling 及其使用 : 本文介绍了 Arm Statical Profiling Extension(SPE),相比传统的性能监测单元(PMU)方式,SPE 可以更精确地采集 CPU pipeline 执行过程中的指令信息,包括指令地址、访问数据地址、延迟时间等关键指标,对于性能分析和优化非常有用。
  15. Android 性能优化之绑定 RenderThread 到大核 CPU : 本文从以下几个方面介绍了如何在 Android 中绑定任意线程到任意 CPU 上:
    1. 介绍了 sched_setaffinity 函数的用法,用于设置线程与 CPU 的亲和性。
    2. 介绍了如何获取手机 CPU 的频率信息,并根据频率将 CPU 划分为大中小三类。
    3. 介绍了 Android 系统中的 RenderThread 线程,以及如何找到并绑定它。
    4. 介绍了如何获取任意线程的 tid (内核线程 ID)。
    5. 给出了绑定线程到 CPU 的代码实现。
    6. 提供了 JNI 接口,供 Java 层调用绑定线程的功能。
  16. 性能周刊 2025-01-04 第 3 期 : 2025 年的第一期性能周刊
  17. TargetSdk 30 升级后的 ARSC 压缩方案探索 : 本文主要介绍快手如何在 TargetSdk 30 上 重新对 resources.arsc 进行压缩,取得巨大包体收益的探索
  18. 我在性能团队的这两年 : 这篇文章主要介绍了一个前端性能团队在实践过程中所遇到的一些问题及解决方案。包括性能指标的定义与细化、线上线下的防劣化机制、性能优化的具体手段等。整体来说,文章涵盖了性能优化的全生命周期,对于想要深入了解性能优化工作的同学来说是非常好的参考。
  19. 一文彻底搞懂 Android 广播的所有知识 (上)–四大组件系统 : 一篇详细介绍 Android 广播机制知识的文章,从广播机制的原理、分类,到广播接收者、广播发送者、广播分发中心的原理和实现,全面系统地阐述了广播机制的各个方面。
  20. 一文彻底搞懂 Android 广播的所有知识 (下)–四大组件系统 : 文章详细介绍了 Android 广播的发送和接收流程,包括广播发送者、广播分发中心及广播接收者之间的交互机制。文章从广播的发送、接收、队列管理等方面全面解析了 Android 广播的运作过程。

非技术文章

  1. 橙子的 2024 年终总结:追寻幸福 : 这篇文章是作者 2024 年的年终总结,概括了他这一年在学习英语、跑步、旅行、人际关系以及工作等方面的思考和实践。作者从寻找幸福和财富的角度出发,探讨了复杂世界中如何平和地对待生活中发生的事情。他在各个领域的经历和感悟为读者提供了有价值的见解和启发。
  2. 控糖革命-为什么吃了红薯之后会犯困 : 这篇文章探讨了控制血糖的重要性,分析了各种食物对血糖的影响机制,并提出了一些有效的血糖管理技巧。作者分享了自己的亲身经历,通过对血糖曲线的持续监测和调整饮食结构,成功地改善了身体状况。文章强调平稳的血糖曲线对于健康的重要性,并提出了三个需要注意的关键点:1.葡萄糖并非唯一影响因素;2.评判食物优劣需考虑替代选择;3.建议都有科学依据支持。
  3. 英语学习过程中的一些思考 : 这是作者关于自己学习英语半年来的一些思考和总结。作者在开始认真学习英语大约半年时间后,取得了一些进步,主要阐述了自己在寻找学习素材、阅读、听力以及背单词等方面的具体做法和一些心得。
  4. vivo X200 Pro 使用体验 : 这是一篇关于作者对 vivo X200 Pro 手机的使用体验的文章。作者从购买选型、实际使用、系统操作、影像系统和电池续航等方面对这款手机进行了全面的评测和点评
  5. 2025 年的一些做与不做 : 这篇文章讲述了作者对生活简单化的追求,并提出了 2025 年的一些”减法”和”加法”的想法,比如减少手机时间、对他人的评价等,增加写作、阅读、运动等方面的时间。作者提倡通过”20+20”原则来选择和保留家中的物品,鼓励断舍离,保留最喜欢的东西。
  6. 对时间管理的一些思考 : Rolen 分享了他关于时间管理和内容输出的经验
  7. 我们在 2024 年从大型语言模型中学到的事 : 这篇文章回顾了 2024 年大型语言模型 (LLM) 领域的重大进展,主要包括:LLM 模型性能的持续提升突破 GPT-4 水平、LLM 效率和价格的大幅提升、多模态 LLM 的崛起、基于提示词的应用生成成为常见功能,以及新兴的”可扩展推理”模型等。同时,文章也提出了一些亟需解决的问题,如 LLM 的使用难度上升、知识分布不均、模型批评等。
  8. 创业日记 独立开发周记 85 :2024 年终总结

工具

  1. 电子书 - 大语言模型 : 该文章概述了大语言模型技术的发展历程及其在学术界和工业界的现状。作者指出,大模型技术的核心原理和关键技术细节往往难以完全解密,这限制了学术界的研究进展。同时,作者也对大模型技术的开放性表示乐观,认为随着更多核心技术的公开和共享,大模型技术的”透明化”将进一步提高。
  2. Windsurf:面向未来的 AI 编程工具详解 : Windsurf 是一款面向未来的 AI 编程工具,它采用先进的上下文感知、多模型 AI、实时协作和高效代码管理功能,为开发者提供全面的编程支持,提升开发效率和代码质量。它通过创新性的 Flows 模式和 Cascade 功能,为 AI 与人类开发者的协作提供了全新的范式,并在团队协作、项目管理等方面表现出色。该工具在分析代码库、检测和修复错误、自然语言编程等方面也有广泛应用,可有效优化开发流程。随着 AI 技术的进步,Windsurf 有望进一步提升其智能化水平,为开发者带来更优质的编程体验。

杂记

关于作者

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

  1. 掘金 - Gracker:https://juejin.cn/user/1816846860560749
  2. 知乎 - Grackerhttps://www.zhihu.com/people/gracker
  3. 个人博客 - Android Performance : 写东西的地方
  4. 个人介绍 - 欢迎加微信群组多多交流 :里面有个人的微信和微信群链接。
  5. 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  6. 本周刊 Newsletter 订阅https://androidweekly.zhubai.love/ ,支持微信和邮箱订阅
  7. 微信公众号 Android Performance
  8. Android 性能优化知识星球 : 个人运营的一个知识星球,欢迎加入,多谢支持~
CATALOG
  1. 1. 技术文章
  2. 2. 非技术文章
  3. 3. 工具
  4. 4. 杂记
  5. 5. 关于作者