📄🦌🙌🐟🏖️
ccc2
探 索 星 辰 大 海
精选文章
按住 Shift 横向滚动
IntelliJ IDEA 社区版开发 Android 的可行性

IntelliJ IDEA 社区版开发 Android 的可行性

IntelliJ IDEA 社区版开发 Android 的可行性 IntelliJ IDEA 社区版开发 Android 的可行性 Android Studio Iguana 解压后的体积已经逼近 3GB,启动后在 16GB 内存的机器上轻松吃掉 2.5GB 以上,再加上 Gradle Daemon

Google 的 Firebase 新产品线,从分析到实验的一体化

Google 的 Firebase 新产品线,从分析到实验的一体化

Google 的 Firebase 新产品线,从分析到实验的一体化 Google 的 Firebase 新产品线,从分析到实验的一体化 2023 年 9 月 30 号之后,如果你还赖在 Google Optimize 的后台想改一个网页 A/B 测试,看到的只会是一封关服通知。Google 把这项服

Coil 和 Glide 的加载性能对比数据

Coil 和 Glide 的加载性能对比数据

Coil 和 Glide 的加载性能对比数据 Coil 和 Glide 的加载性能对比数据 去年把一个新项目从 Glide 4.15.1 迁到 Coil 2.4.0 之后,我遇到过一个很诡异的性能回归。首页是一个三列的 RecyclerView,每个 item 带一张圆角网络图片,快速滑动时 GPU

ConcurrentLinkedQueue 的无锁队列,适合什么场景

ConcurrentLinkedQueue 的无锁队列,适合什么场景

ConcurrentLinkedQueue 的无锁队列,适合什么场景 「ConcurrentLinkedQueue 的无锁队列,适合什么场景」 去年在优化一个相机预览模块的帧缓冲区时,我把原来的 LinkedBlockingQueue 换成了 ConcurrentLinkedQueue。当时的想法很

Shizuku 权限方案,无 Root 调用系统 API 的实践

Shizuku 权限方案,无 Root 调用系统 API 的实践

Shizuku 权限方案,无 Root 调用系统 API 的实践 「Shizuku 权限方案,无 Root 调用系统 API 的实践」 Android 14 上,我尝试在应用内直接通过反射关闭另一个应用的通知权限。代码刚跑起来就收到了一个无情的 SecurityException,日志很直白:uid

KtLint 和 Detekt 的代码规范配置

KtLint 和 Detekt 的代码规范配置

KtLint 和 Detekt 的代码规范配置 KtLint 和 Detekt 的代码规范配置:一个"过度配置"项目的踩坑记录 上个月把项目从 AGP 7.4 迁到 8.2,Gradle 升到 8.5,顺手把 KtLint 从 0.49.1 更新到 1.1.1。本地 ./gradlew spotle

DocumentsContract 的树形文档访问,SAF 的局限

DocumentsContract 的树形文档访问,SAF 的局限

DocumentsContract 的树形文档访问,SAF 的局限 「DocumentsContract 的树形文档访问,SAF 的局限」 去年把文件管理模块重构到纯 SAF(Storage Access Framework)方案时,我在 Android 11 的测试机上遇到一个极其诡异的权限崩溃。