ExoPlayer 的自定义 Renderer,硬解失败 fallback ExoPlayer 的自定义 Renderer,硬解失败 fallback 「ExoPlayer 的自定义 Renderer,硬解失败 fallback」 线上有一个崩溃在 Amlogic S905X3 方案的电视盒子上集中爆发。Android 10,ExoPlayer 2.18.1,播放 HEVC 2026-07-27 Android 3
Jetpack 库的源码阅读指南,从哪里下手 Jetpack 库的源码阅读指南,从哪里下手 Jetpack 库的源码阅读指南,从哪里下手 你在调试一个内存泄漏,追踪到 ViewModel 的 onCleared() 始终没触发。按住 Ctrl 点进 ViewModel 类,IDE 跳转到了 androidx.lifecycle.ViewMode 2026-07-27 tool 5
ObjectBox 的性能宣传,实测数据怎么样 ObjectBox 的性能宣传,实测数据怎么样 ObjectBox 的性能宣传,实测数据怎么样 ObjectBox 官网首页有一个很醒目的数字:比 SQLite 快 10 倍。GreenDAO 原班人马打造、专为移动端和 IoT 优化的对象数据库,这些标签让它在过去几年里频繁出现在 Android 2026-07-27 tool 3
kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 去年下决心把团队项目里沿用了五年的 Gson 全量迁移到 kotlinx.serialization,动机很直接:Kotlin 数据类的空安全在 Gson 的反 2026-07-23 tool 0
kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 kotlinx.serialization 的稳定性,生产环境敢用吗 去年把团队项目从 Kotlin 1.9.10 升级到 1.9.22 时,CI 在编译阶段直接炸了。报错信息不是业务代码问题,而是 org.jetbrains.k 2026-07-23 tool 0
Mediation 广告聚合,变现收益到底差多少 Mediation 广告聚合,变现收益到底差多少 Mediation 广告聚合,变现收益到底差多少 去年 Q3 我把一个 DAU 八十万左右的工具 App 从纯 AdMob 切到了 AdMob Mediation,接了 Meta Audience Network、Mintegral、Pangle 三 2026-07-23 Android 5
Android 的内存分页与大页,对 App 有什么影响 Android 的内存分页与大页,对 App 有什么影响 Android 的内存分页与大页,对 App 有什么影响 去年在做一款相机 App 的内存治理时,我碰到了一个蹊跷的现象。同一套代码在 Pixel 6(Android 13)上跑 4K 60fps 预览流,Native Heap 的 RSS 2026-07-23 Android 1
Kotlin Flow 的冷流热流,实际开发到底怎么选 Kotlin Flow 的冷流热流,实际开发到底怎么选 Kotlin Flow 的冷流热流,实际开发到底怎么选 去年把项目里的 LiveData 大面积迁移到 Kotlin Flow 的时候,我以为只要把 LiveData<T> 替换成 StateFlow<T>,再把 observe 改成 coll 2026-07-23 Android 5
AGP 8.0 的 R8 全模式,我迁移时遇到的坑 AGP 8.0 的 R8 全模式,我迁移时遇到的坑 AGP 8.0 的 R8 全模式,我迁移时遇到的坑 上个月把项目的主干分支从 AGP 7.4.2 切到 8.0.0,Gradle wrapper 从 7.5 升到 8.0,compileSdk 也顺势提到了 33。Sync 过程比预想中顺利,Kot 2026-07-20 Android 7
Android 的 DNS 解析缓存,OkHttp 怎么控制 Android 的 DNS 解析缓存,OkHttp 怎么控制 Android 的 DNS 解析缓存,OkHttp 怎么控制 去年一次线上切流,我们给 CDN 域名换了 A 记录指向备用集群。监控里 iOS 端的错误率在五分钟后开始回落,Android 端的超时报警却持续了近十五分钟。后端确认新 IP 2026-07-20 Android 8