AtomicFU 的无锁并发,替代 synchronized 的场景 AtomicFU 的无锁并发,替代 synchronized 的场景 AtomicFU 的无锁并发,替代 synchronized 的场景 从一段性能测试的异常数据说起 去年在做 Kotlin 协程的通道(Channel)性能基准测试时,我遇到了一个反直觉的结果。测试场景很简单:两个线程通过 Cha 2026-06-08 Android 0
Timber 日志库的扩展,比 Logcat 好在哪里 Timber 日志库的扩展,比 Logcat 好在哪里 「Timber 日志库的扩展,比 Logcat 好在哪里」 Timber 这个库在 Android 圈子里已经存在很久了,Jake Wharton 2013 年写的,到现在 GitHub 上快两万星,算是最稳的第三方日志工具之一。但很多人用 T 2026-06-08 tool 1
Play Store 的评分算法更新,评论权重变化 Play Store 的评分算法更新,评论权重变化 Play Store 的评分算法更新,评论权重变化 从一条 2024 年 11 月的官方博客说起 Google Play 团队在 2024 年 11 月发了一篇博客,标题叫《Improving Google Play ratings with a 2026-06-08 随笔 1
Tile Service 开发:快速设置面板的小组件 Tile Service 开发:快速设置面板的小组件 Tile Service 开发:快速设置面板的小组件 从 NotificationListener 的权限噩梦逃过来 去年做系统工具类应用时,我被 NotificationListenerService 的权限申请流程折磨得够呛。用户得跳转到系统 2026-06-08 Android 1
Rust 写 Android 系统服务,Google 的新尝试 Rust 写 Android 系统服务,Google 的新尝试 Rust 写 Android 系统服务,Google 的新尝试 AOSP 主线的 Rust 代码正在变多 去年刷 AOSP 的代码仓库时,我注意到一个挺有意思的变化:system/core 目录下冒出了几个 .rs 文件。不是某个工程师 2026-06-08 随笔 1
Linux 下 Android 开发的环境配置指南 Linux 下 Android 开发的环境配置指南 Linux 下 Android 开发的环境配置指南 Android Studio 官方支持 Linux 已经不是什么新鲜事,但真要在 Linux 上把 Android 开发环境配到顺手,中间要踩的坑远比 Windows 和 macOS 多。去年我把 2026-06-08 tool 1
Firebase Performance Monitoring,采集开销实测 Firebase Performance Monitoring,采集开销实测 「Firebase Performance Monitoring,采集开销实测」 Firebase Performance Monitoring 在 Android 社区里的存在感一直有点微妙。官方文档把它包装成"开箱即用 2026-06-06 Android 1
Google 收紧权限政策,后台启动又难了 Google 收紧权限政策,后台启动又难了 Google 收紧权限政策,后台启动又难了 从一条 crash 日志说起 去年十月份,我维护的一个工具类 App 在 Pixel 7 上突然报了一批 SecurityException。堆栈信息指向一个很常见的操作:后台 Service 通过 startA 2026-06-06 随笔 1
SQLDelight 的类型安全 SQL,在 Android 项目中的使用 SQLDelight 的类型安全 SQL,在 Android 项目中的使用 「SQLDelight 的类型安全 SQL,在 Android 项目中的使用」 从 Room 的编译期焦虑说起 去年维护一个老项目时,我遇到过一个典型的 Room 痛点。需求很简单:给查询加个 LIMIT 参数,让用户能分页 2026-06-06 tool 0
Dagger 到 Hilt 的迁移检查清单 Dagger 到 Hilt 的迁移检查清单 「Dagger 到 Hilt 的迁移检查清单」 Hilt 发布已经四年多了,但直到今天,我打开 GitHub 上那些 2018 年以前创建的 Android 项目,Dagger 的 @Component 和 @Module 依然随处可见。迁移不是不想做,而 2026-06-06 tool 7