Android Weekly #202511

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

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

技术文章

  1. 记录笔者修复的 userfaultfd_move 的一个内核 bug: 本文记录了作者修复 userfaultfd_move 内核中的一个 bug,该 bug 源于在处理 swap entry 时未考虑到 swapcache 中的 folio,导致 mapping 和 index 未对齐,进而引发内核故障。作者提出的修复方案是在处理 swap entry 时检查 swapcache 并更新其 mapping 和 index,此修复已合入 v6.14-rc6 及其他稳定版本。
  2. 系统调用 sync、fsync 和 fdatasync 的区别: 本文探讨了 UNIX 系统调用 sync、fsync 和 fdatasync 的区别。sync 函数将所有修改过的缓冲区排入写队列但不等待实际写入完成;fsync 函数确保特定文件的修改内容同步到磁盘并等待操作完成,适用于需要高一致性的场景;而 fdatasync 仅同步文件的数据部分,减少不必要的元数据同步,从而提高效率。特别是在日志文件写入中,通过固定文件大小使用 fdatasync 可以显著提升性能。
  3. 得物 Android Crash 治理实践: 本文详细介绍了得物团队在治理 Android 系统崩溃问题中的实践经验,包括 DNS 解析崩溃、MediaCodec 状态异常崩溃、多线程环境崩溃及小米 Android15 焦点处理空指针崩溃等问题的背景、分析及解决过程。通过这些治理措施,得物显著降低了崩溃率,并为类似问题提供了技术参考。
  4. Flutter 小技巧之通过 MediaQuery 优化 App 性能: Flutter 小技巧之通过 MediaQuery 优化 App 性能,文章介绍了如何合理使用 MediaQuery 来优化 Flutter 应用的性能,特别是在多页面场景下减少不必要的 rebuild 开销。通过将 MediaQuery 的使用位置调整到 Scaffold 内部,或使用 MediaQuery.propertyOf 系列方法,可以有效降低性能损耗。此外,文章还提到从 Flutter 3.10 开始,使用 View.of(context) 替代传统的 WidgetsBinding.instance.window 以适应多 FlutterView 场景。
  5. Koin: 由开发者打造,为开发者服务: Kotzilla 宣布其官方微信公众号上线,旨在为中国开发者提供 Koin 和 Kotlin 的中文学习资源。Koin 是一个轻量级的依赖注入框架,已被全球 35 万款移动应用采用,具备 DSL 声明式注入、模块化组织、作用域管理等核心功能。Kotzilla 由 Koin 创始人创立,专注于 Kotlin 开发工具,并成为 Kotlin 基金会的银级成员。该公司推出的 Kotzilla 平台支持实时性能监测和依赖分析,全面兼容 Kotlin 多平台项目,并提供 Koin 的长期支持版本 (LTS),确保技术升级的稳定性。
  6. Weaver - 基于安全硬件的锁屏密码方案: Android 平台上,GateKeeper+KeyMint 是一种常见的密码解锁方案,基于仅用户知道的密码保护用户的数据。Weaver 是一种基于 Secure Element 等防篡改硬件,旨在增强密码保护用户数据的解决方案,提供了 device-off security threat model 和 brute force password guessing 两个关键特性。device-off security threat model:当设备关闭电源时,用户身份验证和磁盘加密依赖的 secret 存储在安全芯片中,必须使用用户 LSKF (pin/pattern/password)才能获取到该值。brute force password guessing:通过安全芯片内部的安全计时器防止攻击者通过暴力破解的手段推演出用户密码。
  7. Android JankStats 实现解析: JankStats 是安卓 JetPack 里新出的一个专门用来检测帧卡顿的库。并且支持各个安卓版本。我们来分析一下他的实现。
  8. Android Weekly Issue #666: Android Weekly Issue #666
  9. Android 启动框架 EasyLaunch: 这是一个 Android 的启动开源框架, 用于在启动过程中将任务并行, 达到优化启动速度的目的.
  10. 彻底搞清 Flow+MVVM+Retrofit+OKHTTP 框架: 本文主要介绍了 Flow 的基本使用方法,结合了 Flow+MVVM+Retrofit+OKHTTP 框架,能够带你理解 Flow 在 ViewModel,Repository,切换线程等方面的细节 。
  11. 深入探索 Android Bitmap:从原理到实战: 从功能角度来讲,Bitmap 在 Android 开发中就像是一个 "图像容器",承载着图像的像素信息,凭借它,开发者能够在应用中轻松实现加载、显示和处理图像的操作。通过 Bitmap 类,开发者可以创建图像对象,在屏幕上展示或者对其进行更深入的处理,诸如缩放、裁剪、旋转等常见的图像操作,都可以借助 Bitmap 来完成。例如,在一个图片编辑应用中,用户可以通过 Bitmap 对图片进行裁剪,选择自己喜欢的部分进行保留;也可以对图片进行旋转,调整到合适的角度;还能对图片进行缩放,使其适应不同的屏幕尺寸。在一个社交应用中,用户上传的照片可能需要进行压缩和裁剪,以适应服务器的存储和传输要求,这时候就可以使用 Bitmap 来实现这些操作。
  12. Now in Android #114: 谷歌 I/O 2025 将于 5 月 20-21 日举办,重点展示 Android、AI 等技术更新;Android Studio 庆祝十周年,回顾其发展历程;Android 16 Beta 推出适配大屏幕的自适应应用、进度通知等新特性;Firebase 集成生成式 AI 模型(如 Gemini 和 Imagen),支持 AI 驱动的用户体验;Google Play 推出"已验证"徽章提升应用安全性;Wear OS 推出儿童应用体验;TrustedTime API 提供可靠时间戳,AndroidX 也发布多项更新。
  13. The Third Beta of Android 16: Android 16 Beta 3 已达到平台稳定性,开发者可立即将面向 Android 16 的应用推送至 Play 商店。本次更新包括新安全和辅助功能,如 Auracast 广播音频支持、轮廓文本增强对比度、局域网保护测试功能,以及多项开发者需关注的行为变化。
  14. Multimodal image attachment is now available for Gemini in Android Studio: Android Studio 的 Gemini 功能现已支持多模态图像附件,开发者可以直接将图片附加到提示中,提升团队协作和 UI 开发工作流程。此功能支持将简单线框图或高保真设计转换为 Jetpack Compose 代码,并可用于快速原型制作、UI 调试以及图表文档化。
  15. Android 开机动画修改指南: 本文详细介绍了 Android 开机动画的修改指南,包括开机动画文件路径、文件结构、加载和播放动画帧、动态颜色特性及调试技巧等内容。文中对相关代码进行了深入解读,并提供了具体的操作步骤和注意事项。
  16. Unit Testing Lifecycle and State in ViewModels: 文章介绍了 ViewModelScenario,这是 Lifecycle 2.9.0-alpha01 引入的工具,用于简化 ViewModel 的单元测试。它解决了直接通过构造函数测试 ViewModel 的局限性,支持触发 ViewModelStore.clear() / ViewModel.onCleared() 以及模拟实例状态的保存与恢复(包括序列化)。通过 ViewModelScenario.recreate(),可以验证 SavedStateHandle 数据的正确保存与恢复,同时支持 Kotlin Multiplatform (KMP)。开发者可通过新 API 更高效地测试 ViewModel 的生命周期和状态管理。
  17. Building excellent games with better graphics and performance: 安卓开发者博客宣布 Vulkan 成为安卓官方图形 API,支持光线追踪和多线程以提升游戏画面,同时通过 ANGLE 兼容 OpenGL;安卓动态性能框架(ADPF)升级,与 MediaTek 合作优化性能,延长游戏时长并提高稳定性;Play Console 新增低内存杀手(LMK)功能,帮助开发者监控内存问题;此外,还推出 PC 游戏移植到移动端的试点计划,简化开发与发布流程,推动更多 PC 游戏加入安卓生态。
  18. 鸿蒙(HarmonyOS)性能优化实战-SmartPerf-Host 分析应用性能: SmartPerf-Host 是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具,可采集 CPU 调度、频点、进程线程时间片、堆内存、帧率等数据,采集的数据通过泳道图清晰地呈现给开发者,同时通过 GUI 以可视化的方式进行分析。该工具当前为开发者提供了五个分析模板,分别是帧率分析、CPU/线程调度分析、应用启动分析、TaskPool 分析、动效分析。关于工具使用的更多内容可查看 SmartPerf-Host 调优工具使用指导。本文提供一些性能分析示例,介绍如何使用帧率分析和应用启动分析两个模板采集数据、分析数据,从而发现性能优化点。
  19. Android 子线程更新 View 的方法原理: 本文详细解析了 Android 子线程更新 View 的原理,探讨了 View 更新必须在 UI 线程进行的原因,并提供了多种子线程更新 View 的方法,包括基于独立渲染体系以及基于 ViewRootImpl 渲染体系的实现方式。
  20. [原创]某加固 onCreate 的 vmp 分析: 本文分析了某加固应用的 onCreate 函数实现,利用拦截 JNI 注册函数和 Stalker 跟踪寄存器 x8 的变化,定位关键函数及其调用流程。通过 IDA 动态调试,找到 VMP 解释器和加密 opcode,并针对反调试机制(如 SIGTRAP 信号)提出对抗策略,最终揭示加固逻辑和解密过程。
  21. Jetpack WindowManager 1.4 is stable:
  22. 深入理解 Linux 内存优化:如何使用屏障提升性能: 本文深入探讨了 Linux 内存优化中的内存屏障机制,详细分析了其原理、类型、功能以及在多核处理器、设备驱动开发、RCU 机制中的应用,并提供了使用注意事项与性能优化建议。
  23. 技术简报 2025 第三期: 本期收集一下各种有意思的软件图,用来看看别人如何图形化展示一个东西。一起体会软件架构的结构美感
  24. 鸿蒙(HarmonyOS)性能优化实战-启动分析工具 Launch Profiler: DevEco Studio 内置 Profiler 分析调优工具。其中 Launch 主要用于分析应用或服务的启动耗时,分析启动周期各阶段的耗时情况、核心线程的运行情况等,协助开发者识别启动缓慢的原因。此外,Launch 任务窗口还集成了 Time、CPU、Frame 场景分析任务的功能,方便开发者在分析启动耗时的过程中同步对比同一时段的其他资源占用情况。
  25. simpleperf 的使用技巧: Simpleperf 工具不仅在性能分析领域具有重要作用,还在日常调试中展现了广泛的用途,例如跟踪应用被杀或退出、监控库函数调用、分析内核调用函数以及跟踪 Binder 调用过程等,为开发者提供了强大的调试支持和灵活的应用场景。
  26. Kotlin 的协程,真能提升编程效率么?: Kotlin 协程能通过其结构化并发特性优化代码,提升编程效率。文章主要讨论协程在 Android 开发中的两大应用场景:消灭对称式 API 和回调式 API。通过协程的挂起函数和生命周期管理,开发者可以简化代码逻辑、减少错误风险并提升代码质量。
  27. 谈"一切皆文件"的哲学: 这篇文章探讨了 Linux 系统中"一切皆文件"的哲学理念,详细分析了文件句柄(File Descriptor, FD)的抽象本质、分类及其在系统资源管理中的应用。文章还介绍了实现新文件类型的步骤,并解释了文件句柄在多进程间共享的机制。

杂记

  1. 我喜欢 Notion 公司的两个信条: 这篇文章通过对 Notion 创始人 Ivan Zhao 的访谈,详细探讨了他的创业经历、产品理念、公司文化以及对工具与人类潜能关系的深刻思考。文章还揭示了 Notion 从早期挣扎到如今成功的关键转折点,以及 Ivan 对于软件设计美学和技术哲学的独特见解。
  2. 科技爱好者周刊#341:低代码编程,恐怕不会成功: 这里记录每周值得分享的科技内容,周五发布。
  3. 专栏:管理不是派个活 - 管理和管理不一样。: 管理工作分为专业管理和组织管理,两者需要完全不同的技巧,专业管理注重提升组织能力,组织管理则关注构建高效协作环境,而优秀的管理能带来规模效应,推动团队指数级成长。

AI

  1. AI 代理可观测性 - 演变标准与最佳实践: 本文探讨了 AI 代理的可观测性及其重要性,特别是在 2025 年 AI 代理成为人工智能领域的重要趋势时。文章详细介绍了 AI 代理的定义、现状、标准化语义约定的建立以及插桩方法的优缺点,同时展望了 AI 代理可观测性的未来发展方向。
  2. 【社区说-回顾】全方位 360° 讲解 Gemini 2.0,我家的猫真会后空翻: 为了帮助大家更好地了解和掌握 Gemini2.0 的使用技巧,GDG 社区在 2.27 晚上 7 点在线上举办了「社区说」分享活动,邀请多位资深的 AI 开发专家,从不同角度为大家解读 Gemini 2.0 的最新变化和开发技巧。本文将带领大家详细回顾此次活动特约嘉宾们的精彩分享。
  3. 浅谈 Agent、MCP、OpenAI Responses API: 浅谈 Agent、MCP、OpenAI Responses API,文章介绍了 AI Agent、MCP(模型上下文协议)和 OpenAI 最新推出的 Responses API 的功能及应用场景,分析了相关技术的演进与挑战,并展示了开发者如何利用这些工具构建智能体以完成复杂任务。
  4. OpenAI Agents SDK: OpenAI Agents SDK 是一个轻量级且易用的软件开发工具包,用于构建基于代理的 AI 应用。它提供了一些简单的原语,如代理(Agents)、交接(Handoffs)和防护措施(Guardrails),并支持复杂的工具和代理关系表达。该 SDK 具有内置的追踪功能,便于可视化、调试和优化工作流,同时支持模型微调。主要设计原则是功能足够强大但学习曲线平缓,开箱即用且高度可定制。
  5. Manus 发布一天后迅速出现 OpenManus、OWL 等复刻项目,怎么做到的?: Manus 是一款通用的 AI 智能体产品,从用户示例中展示了卓越的用户体验,整体交互给人感觉很不错。但从技术方案上来说,Manus 使用了大量的业内共识的核心基础技术。在那天晚饭过程中,我们讨论了 Manus 的产品形态和技术路线,然后我们整体使用了三个小时左右的时间,开发出来 OpenManus 这个开源项目。
  6. 关于 AI 的一些实践和思考(2): 这两天在高强度地进行编程,用 cursor 或者直接在聊天窗口跟不同的 AI 模型对话,解决了同事在业务上的一个问题,将大部分时间用自动化的方式解决,提升了 30 倍的效率,非常有成就感,我也在编程中获得了一些洞见和小启发:
  7. Gemma 3 发布:巅峰性能,单 GPU/TPU 即可运行: 我们在全球推出 Gemma 3,一系列基于 Gemini 2.0 模型同源技术打造的轻量级、先进开放模型。它们是 Google 迄今为止在性能、可移植性和社会责任方面表现最出色的开放模型。Gemma 3 专为设备端高效运行而设计,让手机、笔记本或工作站都能轻松驾驭,助力开发者随心打造 AI 应用。Gemma 3 提供 1B、4B、12B 和 27B 等多种规格,适合不同的硬件和性能需求。

招聘信息

  • 联系方式:13928007488
  • 待遇:50-100 年包,优秀的可以谈股票

Linux 内核 1 个 --T3/T4 珠海/广州/西安/深圳

【岗位职责】

  1. 负责 Kernel 体系架构、调度、内存管理、文件系统、电源等内核功能问题解决和需求开发;
  2. 主导各类底层稳定性问题的攻关,如:定屏、死机、系统奔溃、异常重启等;

【任职要求】

  1. 计算机软件、通信、电子相关专业本科以上学历,5 年以上 Linux 内核/驱动相关经验;
  2. 熟悉 Linux 内核和驱动开发,对调度/内存/存储 IO/电源/中断/时钟/同步/驱动模型等多个子系统有深刻理解者优先;
  3. 熟悉常见的内核分析工具和方法,具备 2 年以上 Android/Linux 平台性能/功耗/稳定性等疑难问题分析处理经验者优先;
  4. 熟悉 C/C++, Arm assembly, operating system;
  5. 良好的沟通能力和团队合作精神

Linux 系统 1 个:T3/T4 珠海/广州/西安

【岗位职责】

  1. 负责统筹 Linux 方案框架设计和集成调试,负责系统级应用的框架设计和子模块功能定义;
  2. 负责各子系统间(音视频/input/显示等)对接和调优,承担系统级问题的排查和解决;
  3. 承担 Linux 方案技术经理职责,统筹方案规格的落地和技术攻关;

【任职要求】

  1. 拥有 5 年以上 Linux 开发经验,承担 Linux 方案架构师或技术经理或相当职位 2 年以上;
  2. 至少熟悉 Linux 类 OS(Debian/Ubuntu/Fedora/OpenHarmoy)中的一种,有参与系统应用开发经验者优先;
  3. 了解 Socket、pipe、binder 等进程通信机制,有参与开发经验者优先;
  4. 熟悉多个 Linux 子系统(显示/编解码/UI/camera/input/休眠/功耗等),有上述 3 个以上经验者优先;
  5. 具备良好的团队合作和沟通能力,拥有一定的抗压能力应对突发问题。

投稿指南

欢迎投稿分享您的:

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

投稿方式:

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

关于作者

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

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

版权声明

  • 本周刊遵循 CC BY-NC-SA 4.0 协议
  • 转载请注明出处:Android Weekly 第 X 期
  • 欢迎订阅、分享,让更多开发者受益
相关推荐
阿巴斯甜1 天前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker1 天前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq95271 天前
Andorid Google 登录接入文档
android
黄林晴1 天前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab2 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿2 天前
Android MediaPlayer 笔记
android
Jony_2 天前
Android 启动优化方案
android
阿巴斯甜2 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇2 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android