Android 的 AudioManager 音频焦点竞争,多应用同时播放的处理 Android 的 AudioManager 音频焦点竞争,多应用同时播放的处理 「Android 的 AudioManager 音频焦点竞争,多应用同时播放的处理」 开车导航时最怕什么?不是路线绕远,是扬声器里的混战。高德地图刚喊完“前方三百米掉头”,抖音突然开始“注意看这个男人叫小帅”,你手忙脚 2026-09-08 随笔 3
国内手机厂商的 AI 大模型集成,对 App 开发者意味着什么 国内手机厂商的 AI 大模型集成,对 App 开发者意味着什么 国内手机厂商的 AI 大模型集成,对 App 开发者意味着什么 去年年底,我手头一个阅读类 App 收到小米应用商店的审核意见,要求「适配系统级 AI 摘要能力」。当时我还以为是常规的合规审查,点进去一看才发现,对方要求我们在应用内提供 2026-09-08 随笔 3
MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 一个线上卡顿 case 上个月排查了一个相册模块的冷启动卡顿问题。Systrace 抓下来,主线程在 ContentResolver.query 上硬耗了 1.8 秒,直接导致首页 Rec 2026-09-08 Android 0
我自己搭的 CI/CD 流水线,花了多少钱 我自己搭的 CI/CD 流水线,花了多少钱 我自己搭的 CI/CD 流水线,花了多少钱 Android 项目的构建成本是个容易被低估的坑。本地开发时,我们往往只关心 Gradle Sync 那几十秒能不能再快一点,却忽略了把这套构建流程搬到云端后,按分钟计费的账单会累积成什么规模。去年我把手上一個包 2026-09-08 tool 0
Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 Gradle 依赖版本统一管理方案对比 去年把项目从 Groovy 的 ext 块迁移到 buildSrc 之后,我们的 CI 构建时间从平均 14 分钟涨到了 38 分钟。排查了整整两天,最后发现症结在于 buildSrc 目录里的一行注释改动——仅仅是加了 2026-09-08 tool 0
StrictMode 检测主线程 IO,生产环境敢开吗 StrictMode 检测主线程 IO,生产环境敢开吗 StrictMode 检测主线程 IO,生产环境敢开吗 去年在做启动性能优化的时候,通过 Systrace 发现主线程在 Application.onCreate 里有一小段可疑阻塞。跟进去看,是一个第三方 SDK 在初始化时读了 assets 2026-09-08 Android 5
Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Google 的官方 Codelab 合集,哪些值得刷 Google 的 Codelab 体系有一个挺有意思的矛盾:它可能是 Android 官方生态里最成体系的学习路径,但刷完十来个课程之后,你依然有很大概率在面对真实项目时不知所措。不是因为 2026-09-08 tool 0
Gradle 构建慢的问题,有人找到了新解法 Gradle 构建慢的问题,有人找到了新解法 Gradle构建慢的问题,有人找到了新解法 如果你最近还在一个超过两百个模块的Android项目里写代码,大概率会对那个绿色的Gradle进度条产生生理性厌恶。点一下Run,先去接杯水,回来发现它还在Configuration阶段打转;改了一行日志,重新 2026-09-08 随笔 0
Genymotion 桌面模拟器的现在和替代方案 Genymotion 桌面模拟器的现在和替代方案 Genymotion 桌面模拟器的现在和替代方案 如果你最近还在用 Genymotion Desktop 跑 Android 14 的兼容性测试,大概会注意到启动耗时已经远不如三四年前的印象中那样轻快。那个曾经在 Stack Overflow 上被高 2026-09-08 tool 2
Rust 写 Android 系统服务,Google 的新尝试 Rust 写 Android 系统服务,Google 的新尝试 Rust 写 Android 系统服务,Google 的新尝试 如果你最近同步过 AOSP master 分支的代码,点开 system/security/keystore2 或者 packages/modules/DnsResolve 2026-09-08 随笔 0