MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 MediaStore 的日期查询索引,为什么有时候会慢 去年维护一个相册应用时,我接手了一个历史遗留的查询优化任务。用户反馈在照片数量超过两万张后,按日期浏览的加载时间从毫秒级跌到了秒级,甚至偶尔触发 ANR。初步排查时,我本能地怀疑是 Rec 2026-06-13 Android 10
C++ 和 Kotlin 的互操作,JNI 封装技巧 C++ 和 Kotlin 的互操作,JNI 封装技巧 C++ 和 Kotlin 的互操作,JNI 封装技巧 JNI 这玩意,Android 开发者都绕不开。Native 层有现成的 C++ 库要复用,或者性能敏感场景必须下到底层,总得打交道。但 JNI 的原始 API 写起来太折磨人了——FindC 2026-06-13 tool 13
远程工作对 Android 团队的影响,协作效率真的降了吗 远程工作对 Android 团队的影响,协作效率真的降了吗 远程工作对 Android 团队的影响,协作效率真的降了吗 一个被忽视的观察:Android Studio 的版本节奏变了 2020 年 3 月,Google 宣布全员远程办公。差不多同一时期,Android Studio 4.0 进入稳定 2026-06-13 随笔 11
Fuchsia 系统的进度,Android 会被替代吗 Fuchsia 系统的进度,Android 会被替代吗 Fuchsia 系统的进度,Android 会被替代吗 那个 2016 年 GitHub 上突然冒出来的神秘仓库 2016 年 8 月,有人注意到 Google 的 GitHub 组织里出现了一个叫 fuchsia 的仓库,没有 README, 2026-06-11 随笔 26
AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 AccessibilityService 的滥用检测,现在的限制有多严 从一次上架被拒说起 去年帮一个做效率工具的朋友处理 Google Play 上架问题,应用核心功能是自动填充表单,底层依赖 AccessibilitySer 2026-06-11 Android 28
Scrcpy 的投屏控制,开发者调试神器 Scrcpy 的投屏控制,开发者调试神器 Scrcpy 的投屏控制,开发者调试神器 从一次真机调试的崩溃说起 去年维护一个视频播放器项目时,我遇到了一个只在特定机型复现的 Surface 渲染异常。手头那台测试机屏幕碎了一半,触控层时灵时不灵,USB 调试倒是开着。当时我的调试流程是:插线、adb 2026-06-11 tool 26
Square 开源库全家桶:OkHttp、Retrofit、Moshi Square 开源库全家桶:OkHttp、Retrofit、Moshi Square 开源库全家桶:OkHttp、Retrofit、Moshi Square 这家公司在国内开发者社区里存在感不算特别高,但只要你写过几年 Android,几乎不可能没用过他们的库。OkHttp 作为 Android 4 2026-06-10 tool 19
Jetpack 库的版本碎片化,不同库的版本怎么对齐 Jetpack 库的版本碎片化,不同库的版本怎么对齐 Jetpack 库的版本碎片化,不同库的版本怎么对齐 从一次 gradle 报错说起 去年十月,我把一个老项目的 compileSdk 从 33 升到 34,Gradle sync 直接炸了。报错信息很眼熟:androidx.lifecycle: 2026-06-10 随笔 24
Lint 自定义规则开发,我写完的第一条规则 Lint 自定义规则开发,我写完的第一条规则 Lint 自定义规则开发,我写完的第一条规则 从一次代码审查的重复劳动说起 去年下半年我们团队做了一次模块化重构,把原本耦合在 App 模块里的网络请求逻辑拆到了独立的 network 模块里。拆完之后我负责审查迁移后的代码,结果连续三天都在做同一件事: 2026-06-10 Android 8
Google Play 的政策收紧,开发者账号被封怎么办 Google Play 的政策收紧,开发者账号被封怎么办 Google Play 的政策收紧,开发者账号被封怎么办 2024 年的封号潮:不是个案,是系统性的 去年下半年开始,中文技术社区里关于 Google Play 开发者账号被封的帖子明显变多了。不是那种"我违反了政策被警告"的常规操作,而是大 2026-06-09 随笔 16