Android Weekly #202506

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

订阅渠道:[微信公众号] | [知乎专栏] | [掘金] | [竹白] | [个人博客 RSS]

技术文章

  1. 详解 DiffUtils、Myers 算法和 Jetpack Compose: 本文详解了 DiffUtils、Myers 算法和 Jetpack Compose。DiffUtils 是 Android 中优化列表更新的工具,依赖 Myers 算法计算最小更改。文中介绍了其工作原理、应用示例和在 RecyclerView 中的作用。Jetpack Compose 基于声明性 UI 原则,由状态驱动 UI 自动重组,内置优化且智能跳过未变元素重组,无需 DiffUtils,可通过带 Keys 的 LazyColumn 等工具实现类似优化,还列举了相关面试问题和结论。
  2. 结合源码和 Perfetto 分析 Android 渲染机制: 本文结合源码和 Perfetto 工具,详细解析了 Android 渲染机制,包括渲染流程、关键组件的源码分析、Vsync 信号的处理和 Perfetto 的应用。通过深入的技术分析,文章回答了多个与 Android 渲染相关的问题,并提供了性能优化的建议和参考资料。
  3. GPU 硬件加速提升渲染流畅度: 文章详细分析了 Android 系统中如何通过 GPU 硬件加速提升渲染流畅度,特别是在动画和复杂渲染场景中的优化。文章从影响渲染流畅度的因素入手,深入探讨了 GPU 硬件加速的源码实现、动画优化的机制,以及通过 RenderThread 提升动画流畅度的具体方法,并提供了 Perfetto 工具的对比分析。
  4. Meet the Android Studio Team: A Conversation with Director of Product Management, Jamal Eason: 本次专访中,产品管理总监 Jamal Eason 分享了他在 Android Studio 的职业旅程、独特视角以及对开发者社区的深刻理解。他强调了产品质量、AI 集成(如 Gemini)以及 Crashlytics 和 Play 的应用质量洞察功能对开发者的影响。团队通过开发者反馈、用户研究和与 Android OS 团队的紧密合作,确保工具的不断改进。
  5. Android Weekly Issue #661
  6. Android 字节码处理-使用 AsmClassVisitorFactory 插桩: 这篇文章主要介绍了在 Android 开发中使用 ASM 字节码处理技术,通过插桩的方式修改 Java 类的行为,包括增加、删除和修改字段或方法等操作,同时对相关代码实现进行了详细解读。
  7. 深入浅出 Android 事件分发机制: 这篇文章深入浅出地介绍了 Android 事件分发机制,包括基础概念、事件分发起点、View 和 ViewGroup 的分发流程、事件响应及面试场景题。基础概念涵盖 View 和 ViewGroup、MotionEvent 等;分发起点从页面结构和初始分发过程说明;View 和 ViewGroup 的分发流程详细阐述了方法职责和相关代码;事件响应讲解了不同触摸动作的处理逻辑;面试场景题针对常见问题给出答案。
  8. Frida 实现 JNI 方法地址跟踪、反汇编、Patch: 文章主要介绍了使用 Frida 实现 JNI 方法地址跟踪、反汇编、Patch 的过程。包括利用 Frida 的反汇编 API 分析目标进程代码,通过一系列步骤找到并 hook RegisterNatives 方法获取 JNI 方法信息,反汇编 JNI 方法的机器码,以及修改汇编指令实现 Patch 并给出完整代码和示例效果。
  9. Android ANR 系列 1 :理解 Android ANR 设计思想: 本文为 Android App ANR 系列的第一篇,主要是从系统的角度来剖析 Android ANR 的设计思想
  10. Android Perfetto 系列 4:使用命令行在本地打开超大 Trace: 本篇是 Perfetto 系列文章的第四篇,如何使用 trace_processor_shell 在本地打开超过 2G 的大文件。在实际的问题分析过程中,我们经常会碰到非常大的 Trace 文件(大于 2GB),直接扔进 ui.perfetto.dev 是没法打开的,这是因为浏览器内存的限制。这时候我们就需要使用官方提供的 trace_processor_shell 工具来本地打开大文件。
  11. Compose 与原生 UI 混排原理解析: 文章主要介绍了 Compose 在 Android 和 iOS 平台上与原生 UI 混排的原理及使用方式。Android 上通过 AndroidView 实现,包括创建父 ViewGroup 和关联的 LayoutNode 等处理测量、布局、绘制、触摸事件。iOS 上采用"挖洞"方案,添加 InteropContainer 承载 UIView,处理视图显示、背景设置、事件分发和顺序等,同时也指出了 iOS 混排方案的一些限制。
  12. 鸿蒙内核论文阅读: 陈海波老师领衔的华为团队在 OSDI24 上发表了鸿蒙内核的论文:Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel,舆论场上不出意料又是神兔大战,很少有人讨论技术本身,出于好奇去学习了下原文,讲笔记整理成问答的形式:
  13. Android Gradle 学习(八)- gradle 任务解析: 这篇文章主要介绍了 Android Gradle 中一系列任务的解析,包括构建./gradlew assembleDebug 过程中的众多任务,如 compileDebugAidl、packageDebugRenderscript 等,还提到了任务的创建、重要任务的分析、相关类以及具体的操作过程。此外,文章还阐述了任务的应用,如在任务间插入操作实现自动上传 APK 或添加自定义的清理任务,并对整体内容进行了总结。
  14. 使用自定义调度程序暴露并发错误: Jake Hillion 在 FOSDEM 上做了一个演讲,介绍了如何使用 sched_ext(一种在内核版本 6.12 中引入的 BPF 调度框架)来帮助发现难以捉摸的并发问题。他与 Johannes Bechberger 合作,构建了一个调度器,能够在几分钟内揭示测试代码中理论上可能但尚未观察到的并发错误。由于他们的调度器仅依赖于主线内核功能,理论上可以应用于任何在 Linux 上运行的应用程序------尽管由于项目还处于早期阶段,仍有一些需要注意的事项。
  15. 安卓 prop/SystemProperties 如何监听值变化: 在安卓开发过程中,无论是系统还是 app 层面都会经常接触到相关的 prop 相关的设置和读取,这个和 settings 数据其实一样的,但是 prop 相比 settings 少了一个时刻监听 prop 的变化,即 prop 变化后要及时通知到其他进程,这样其他进程接受到了 prop 变化后也可以及时进行相关的业务处理,如果 prop 变化后没有相关的通知回调方法的话,那就只能靠不断轮询 getprop,这样即无法保证实时性,也严重损坏性能。所以基于以上的背景,今天带大家实现一下 prop 变化后相关的监听方法及触发 prop 变化回调方法
  16. AI 也能"看懂"图片: 移动端相册 AI 搜图的奥秘: 这篇文章主要介绍了移动端相册 AI 搜图的相关内容。包括 Android 手机相册搜图功能,Clip 模型及其原理、开发 AI 搜图应用的步骤,如通过开源项目 PicQuery 讲解关键组件、预处理、编码器等,还提及关键技术亮点、性能优化策略、技术挑战与解决方案,最后总结了其为图片检索带来的新体验。
  17. lmk 内存压力测试工具 mem-pressure 源码剖析: android 系统开发过程中,经常会遇到一些 low memory kill 的问题,在分析这些系统低内存导致被杀问题时候,经常因为不好复现而成为一个比较烦恼的阻碍。因为这种低内存问题本身就不属于一种功能操作类型的问题,属于一种系统当前可使用的内存少导致的问题,所以分析这类 lmk 低内存被杀的情况迫切需要一种可以帮助我们复现系统低内存的工具,今天马哥就给大家介绍一个内存压力工具 mem-pressure 详细使用和源码剖析。
  18. DeepSeek-R1 论文解析------人工智能领域的 RL LLM 新时代?: DeepSeek-R1 论文解析介绍了一种开创性的开源推理模型,通过强化学习增强大型语言模型的推理能力。文章详细探讨了模型的训练流程、性能表现以及与其他模型的对比。

杂记

  1. 2024 年总结 - 持续迭代: 文章总结了作者在 2024 年的生活、工作、家庭、兴趣及个人成长的多个方面,主题围绕"持续迭代",分享了育儿体验、生活感悟、职业发展、健康管理、投资学习以及输出成果等内容,并展望了 2025 年的目标和计划。

  2. 张忠谋两万字访谈:谈黄仁勋、28nm、苹果和其他: 近日,在英伟达 CEO 黄仁勋的牵线搭桥下,美国博客 Acquired 采访了台积电创始人张忠谋。在这个两个多小时的对话中,张忠谋分享了他与英伟达黄仁勋如何结缘,公司与苹果合作的幕后故事,以及他豪赌 28nm 并大获成功的故事。

  3. Deepseek 官方提示库:

  4. Why Blog If Nobody Reads It?: 即使没有人阅读你的博客,写博客仍然具有深远的价值。写作迫使你理清思路,提升观点表达能力,记录思想的演变过程,成为未来的时间胶囊。或许某天,一位读者会在恰当的时刻发现你的文字,从而受到启发。持续而有深度的创作比追求一时的流行更有意义。正如街头摄影一样,你记录所见所感,不是为了他人的认可,而是因为那些瞬间值得被捕捉和铭记。

  5. 科技爱好者周刊#336:面对 AI,互联网正在衰落: 这里记录每周值得分享的科技内容,周五发布。

  6. 技术管理思考:每天 10min 一对一工作讨论

  7. 如何提高做事的成功率?: 正如标题写的那样,在过去的一年中,我所认识到最大的收获是,在如何提高做事成功率上有了一些心得和体会。从结论上说:顺势而为 + 减少做事的阻力

  8. 创新、内卷与结果主义: DeepSeek 采用的是「蒸馏技术」,这一点毋庸置疑,所以在这里就不再探讨它的行为本身。毕竟它现在和黑神话悟空一样,已经与爱国主义捆绑,吸纳足够的个体,形成了可以对抗一切个体和其他群体的乌合之众。但是蒸馏技术确实导致了我们可以实感的「结果」的发生,这是一个使用低成本芯片制造的 AI,从而在中国掀起了狂热的浪潮。从结果而言,它就是成功的,这一点也毋庸置疑。先说结论,比起质疑结果,最有效的方式是质疑「动机」。

  9. DPS 周刊 184 - 张忠谋的洞见: 最近听了 Acquired 对于台积电创始人张忠谋的采访,里面提到《张忠谋自传》下册也已经出版了。于是我迅速找来上下两册通读了一番,收获颇大。

  10. 给 IT 年轻人职业建议 4("茶壶煮饺子"): 接着给 IT 行业年轻人的职业建议 3 继续聊一个话题,就是关于工作中如何更好的成长。这次建议不要成为一个"茶壶煮饺子"------有东西倒不出来的技术人员。工作中偶尔会遇到这样的技术人,看起来满腹经纶,知识渊博,但解决一些工作难题和创新上看不出来有任何好的表现。为什么这样,我觉得可能还是跟认知有关。

  11. 译:AI 正在创造一代文盲程序员: 这是一位开发者分享的经历和反思:他发现自己过度依赖 AI 编程后,coding 能力反而在下降。具体表现为:1) 不再仔细阅读文档,只是复制粘贴错误信息给 AI,2) debug 能力变差,对代码的深度理解也在减弱,3) 如果 AI 五分钟内解决不了问题就会感到烦躁。为了改善这种情况,他提出了一些建议:每周留出"无 AI 日"专注于传统编程方式,在使用 AI 之前先尝试自己解决问题,认真理解 AI 提供的解决方案。

  12. AI 和写作: 本文探讨了 AI 在写作领域的作用和潜力。作者指出,尽管 AI 在编程协作中已取得显著效果,但目前的 AI 写作工具多为文本处理辅助,无法真正促进深度思考。写作被视为思维的外化和放大器,是帮助人们完善想法的关键工具。理想的 AI 写作助手应当是非侵入式的,能够在适当时机提供观点反馈、学术支持和风格建议,协助用户深化思考。然而,由于不同写作类型需求各异,开发这样的 AI 助手存在挑战。作者还强调,AI 无法取代写作中人与人之间的情感连接,优秀作品能够引发读者与作者的共鸣,这是 AI 所不能实现的。

本周讨论

从目前的结果来看,大模型 + 推理 + 网络搜索 产出的效果是最好的,那么是否意味着,持续输出高质量的文章在目前的 AI 时代依然是非常重要的。

你觉得呢?

周六拉了个 AI 相关的讨论群,12 小时内就满 500 人了....大家对 AI 的热情真的是没得说,二群也已经快 300 人了,感兴趣的可以私信我。群里不打广告不割韭菜,纯纯就是之前的 Android 技术群里面的小伙伴们讨论 AI 编程、AI 副业这些内容的。私信:AI 加群
另外最新的技术群也已经满了,照例再建一个新的群,主要还是技术方面的讨论,加了我好友还没加群的可以加(微信号:553000664)。私信:技术群

投稿指南

欢迎投稿本周刊分享您的:

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

投稿方式:

关于作者

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

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

版权声明

  • 本周刊遵循 CC BY-NC-SA 4.0 协议
  • 转载请注明出处:Android Weekly 第 X 期
  • 欢迎订阅、分享,让更多开发者受益
相关推荐
货拉拉技术3 小时前
记一次无障碍测试引发app崩溃问题的排查与解决
android·前端·程序员
GrimRaider3 小时前
【逆向工程】破解unity的安卓apk包
android·unity·游戏引擎·软件逆向
yzpyzp4 小时前
Jetpack之ViewBinding和DataBinding的区别
android
小墙程序员4 小时前
一文了解Android的build目录结构
android·gradle
叶落方知秋4 小时前
OkHttp 3.10.0版本源码之重试重定向拦截器原理分析
android·前端框架
无聊的烤苕皮5 小时前
MySQL第五次作业(触发器、存储过程)
android·mysql·adb
ianozo5 小时前
BUU34 [BSidesCF 2020]Had a bad day1 【php://filter】
android
xvch6 小时前
Kotlin 2.1.0 入门教程(十三)异常、Nothing
android·kotlin
陈老师还在写代码6 小时前
安卓开发用Java、Flutter、Kotlin的区别
android·java·flutter
m0_748248947 小时前
在线影视播放网站PHP电影网站源码自动采集MKCMS升级版米酷模板含WAP手机版附三套模板
android·开发语言·php