<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kotlin 与 Android 原生开发 on PlumePHP</title><link>https://plumephp.com/posts/kotlin-android/</link><description>Recent content in Kotlin 与 Android 原生开发 on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Wed, 07 Oct 2026 08:25:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/posts/kotlin-android/index.xml" rel="self" type="application/rss+xml"/><item><title>Kotlin Multiplatform 跨平台共享</title><link>https://plumephp.com/kotlin-multiplatform-kmp/</link><pubDate>Wed, 07 Oct 2026 08:25:00 +0800</pubDate><guid>https://plumephp.com/kotlin-multiplatform-kmp/</guid><description>KMP 让业务逻辑只写一遍、Android 与 iOS 各自保留原生体验，但源集划分、expect/actual 边界与产物对齐都有讲究。本文讲透工程结构与源集层级、expect/actual 机制、共享网络与序列化层、平台差异处理、与 Swift 的互操作、Compose Multiplatform 共享 UI，以及构建产物发布与版本对齐。</description></item><item><title>Android R8 混淆与 Baseline Profile</title><link>https://plumephp.com/android-r8-baseline-profile/</link><pubDate>Wed, 07 Oct 2026 08:20:00 +0800</pubDate><guid>https://plumephp.com/android-r8-baseline-profile/</guid><description>R8 与 Baseline Profile 是 release 包性能的两个编译期杠杆：一个把无用代码删掉并内联，一个把启动关键路径提前 AOT 编译。本文讲透 R8 的收缩优化混淆三段流程、keep 规则编写与反射误伤排查、资源收缩、mapping 与崩溃还原、Baseline Profile 的生成集成、Play 云端 profile 分发与 Macrobenchmark 验证。</description></item><item><title>Android 测试体系：单元测试、Espresso 与 Compose 测试</title><link>https://plumephp.com/android-testing-unit-espresso-compose/</link><pubDate>Wed, 07 Oct 2026 08:15:00 +0800</pubDate><guid>https://plumephp.com/android-testing-unit-espresso-compose/</guid><description>测试金字塔在 Android 上有自己的形状：JVM 单测跑得快但受限于无 Android 运行时，仪器测试真实但慢且易碎。本文讲透 JUnit 与断言库选型、协程测试调度器、MockK 打桩、Robolectric 本地跑 Android 代码、Espresso 与 IdlingResource、Compose 语义查找与断言、Hilt 测试替换，以及 CI 分片与设备农场。</description></item><item><title>WorkManager 后台任务调度</title><link>https://plumephp.com/android-workmanager-background/</link><pubDate>Wed, 07 Oct 2026 08:10:00 +0800</pubDate><guid>https://plumephp.com/android-workmanager-background/</guid><description>后台任务要在 Doze、省电模式与厂商保活策略之间可靠执行，靠 Service 或定时器都撑不住。本文讲透 WorkManager 的 Worker 与 CoroutineWorker 写法、约束条件与触发时机、链式与并行任务、唯一工作与替换策略、重试退避、加急工作、前台服务长任务，以及 Doze 下的执行保证与测试调试手段。</description></item><item><title>Kotlin Flow 与响应式数据流</title><link>https://plumephp.com/kotlin-flow-reactive-streams/</link><pubDate>Wed, 07 Oct 2026 08:05:00 +0800</pubDate><guid>https://plumephp.com/kotlin-flow-reactive-streams/</guid><description>Flow 是 Android 上连接数据库、网络与界面的数据管道，但冷热流选错、背压处理不当就会写出丢事件或卡顿的代码。本文讲透冷流与热流的语义差别、StateFlow 与 SharedFlow 的选型依据、常用操作符与背压策略、flatMapLatest 的并发语义、生命周期感知收集、异常重试，以及 Room 与 Retrofit 的集成写法。</description></item><item><title>Compose Navigation 与深链跳转</title><link>https://plumephp.com/compose-navigation-deeplink/</link><pubDate>Wed, 07 Oct 2026 08:00:00 +0800</pubDate><guid>https://plumephp.com/compose-navigation-deeplink/</guid><description>单 Activity 架构下页面跳转变成返回栈设计问题。本文讲透 NavHost 与 NavController 的职责划分、Navigation 2.8 的类型安全路由、参数传递与结果回传、嵌套图与底部导航的多返回栈、深链与隐式 Intent 映射、返回栈管理与状态恢复，以及与 ViewModel 作用域和转场动画的集成。</description></item><item><title>Google Play 上架与签名打包</title><link>https://plumephp.com/android-play-release/</link><pubDate>Sat, 03 Oct 2026 20:00:00 +0800</pubDate><guid>https://plumephp.com/android-play-release/</guid><description>打包上架是每个 Android 项目的最后一公里，签名与合规细节出错就会卡住发布。本文讲透上架与签名打包：密钥库生成与应用签名密钥的分工、分发包格式差异、混淆与映射文件上传、版本号策略与分阶段发布，以及后台的数据安全表单、目标版本适配与持续集成自动发布。文中附打包工具的本地验证流程与上架常见坑清单，帮你顺利过审并稳定迭代。</description></item><item><title>Android 性能优化与启动加速</title><link>https://plumephp.com/android-performance-startup/</link><pubDate>Sat, 03 Oct 2026 19:00:00 +0800</pubDate><guid>https://plumephp.com/android-performance-startup/</guid><description>启动速度直接影响用户留存，而冷启动耗时往往被初始化代码悄悄吃掉。本文聚焦启动加速与性能优化：冷启动全链路拆解、启动库延迟初始化、基准配置文件与宏基准测试的落地写法、代码压缩优化与启动追踪，以及内存泄漏、过度绘制与首帧优化。文中给出可量化的指标与测量命令，帮你把启动耗时压到目标线以内并守住不回归。</description></item><item><title>Android 多模块架构与 Gradle 优化</title><link>https://plumephp.com/android-modular-gradle/</link><pubDate>Sat, 03 Oct 2026 18:00:00 +0800</pubDate><guid>https://plumephp.com/android-modular-gradle/</guid><description>模块拆得好不好，直接决定 Android 项目的编译速度与协作效率。本文讲多模块架构与构建优化：接口暴露与实现隐藏的边界、按功能与核心分层、约定插件与构建逻辑独立构建、版本目录统一依赖、配置缓存与构建缓存、注解处理并行，以及新版本构建插件的命名空间迁移与声明式界面编译器插件。文末附依赖约束与循环依赖治理清单，帮你把构建时间压下来。</description></item><item><title>Android 依赖注入与 Hilt</title><link>https://plumephp.com/android-hilt-di/</link><pubDate>Sat, 03 Oct 2026 17:00:00 +0800</pubDate><guid>https://plumephp.com/android-hilt-di/</guid><description>依赖注入能显著降低大型 Android 项目的耦合度，而 Hilt 把这件事做成了编译期可校验的标准方案。本文用 Hilt 2.52 与 KSP 落地依赖注入：应用与页面入口注解体系、模块与安装组件的绑定方式、组件层级与作用域、限定符与入口点用法，以及同视图模型、后台任务的集成和测试写法。文中附编译期错误解读表，并与手写依赖注入做取舍对比，帮你判断何时该引入框架。</description></item><item><title>Android 网络层与 Retrofit 实践</title><link>https://plumephp.com/android-retrofit-networking/</link><pubDate>Sat, 03 Oct 2026 16:00:00 +0800</pubDate><guid>https://plumephp.com/android-retrofit-networking/</guid><description>网络层是 Android 应用最脆弱的一环，超时、重试与错误封装稍有疏漏就会引发线上问题。本文用 Retrofit 2.11 与 OkHttp 4.12 搭建可维护的网络层：接口注解与挂起函数设计、转换器工厂在三种序列化方案间的取舍、拦截器与认证器、超时与连接池配置、统一错误封装与退避重试，以及证书固定、模拟服务器测试与混淆保留规则。文末给出网络层常见坑清单与排查思路。</description></item><item><title>Android 数据持久化与 Room</title><link>https://plumephp.com/android-room-persistence/</link><pubDate>Sat, 03 Oct 2026 15:00:00 +0800</pubDate><guid>https://plumephp.com/android-room-persistence/</guid><description>本地数据该怎么存、迁移怎么做，是 Android 项目绕不开的工程问题。本文以 Room 2.7 与 KSP 为主线讲本地持久化：实体与数据访问对象建模、流式响应查询、事务与关系映射、类型转换器、数据库迁移与自动迁移的取舍，以及索引唯一约束、加密与预写日志并发。文中给出与 DataStore 的分工对照表，帮你为不同数据选出可维护的持久化方案。</description></item><item><title>Android 生命周期与 ViewModel</title><link>https://plumephp.com/android-lifecycle-viewmodel/</link><pubDate>Sat, 03 Oct 2026 14:00:00 +0800</pubDate><guid>https://plumephp.com/android-lifecycle-viewmodel/</guid><description>生命周期错配是 Android 内存泄漏与崩溃的主要成因，视图模型则是官方给出的隔离方案。本文梳理两者的协作关系：页面回调链路、生命周期与观察者、安全收集流的方式、视图模型作用域的自动取消、状态保存句柄与进程死亡恢复，以及声明式界面中视图模型与可保存状态的配合。文末附常见内存泄漏清单与对应的修复手段，帮你写出生命周期安全的代码。</description></item><item><title>Compose 状态管理与重组优化</title><link>https://plumephp.com/compose-state-recomposition/</link><pubDate>Sat, 03 Oct 2026 13:00:00 +0800</pubDate><guid>https://plumephp.com/compose-state-recomposition/</guid><description>重组性能是 Compose 项目最常见的瓶颈，很多卡顿都源于不必要的重复重组。本文讲清重组的触发条件、稳定性判定规则与稳定注解的语义边界、集合与数据类不稳定造成的多余重组、键与派生状态等优化手段、快照流的用法与组合局部变量的代价，以及如何用布局检查器与组合追踪定位问题，并覆盖新版编译器的强跳过模式。</description></item><item><title>Jetpack Compose 声明式 UI 开发</title><link>https://plumephp.com/jetpack-compose-ui/</link><pubDate>Sat, 03 Oct 2026 12:00:00 +0800</pubDate><guid>https://plumephp.com/jetpack-compose-ui/</guid><description>声明式界面正在取代传统的视图树写法，而 Compose 是 Android 官方给出的答案。本文带你从零上手 Jetpack Compose：可组合函数与内容设置、修饰符链式的顺序语义、常用布局容器、列表的键策略、Material 3 主题与页面骨架，以及状态记忆、预览和与旧视图的互操作方式。配合官方物料清单版本对照表，给出可直接落地的写法与常见坑清单。</description></item><item><title>Kotlin 协程与结构化并发</title><link>https://plumephp.com/kotlin-coroutines-concurrency/</link><pubDate>Sat, 03 Oct 2026 11:00:00 +0800</pubDate><guid>https://plumephp.com/kotlin-coroutines-concurrency/</guid><description>协程是 Android 异步编程的事实标准，但结构化并发一旦理解错位，就会写出泄漏、错序与吞异常的代码。本文讲透协程的作用域与作业层级、挂起函数与状态机改写、启动与异步的取舍、异常传播与取消机制，以及冷热流与状态流在页面中的落地方式。文中给出调度器选型表与协程泄漏排查清单，帮你在视图模型作用域里写出可取消、可测试的并发代码。</description></item><item><title>Kotlin 扩展函数与高阶函数</title><link>https://plumephp.com/kotlin-extensions-higher-order/</link><pubDate>Sat, 03 Oct 2026 10:00:00 +0800</pubDate><guid>https://plumephp.com/kotlin-extensions-higher-order/</guid><description>扩展函数与高阶函数是 Kotlin 最常用也最容易误用的两块能力，写错时既拖慢性能又破坏可读性。本文讲清扩展的静态解析本质、成员优先规则，以及 let、run、with、apply、also 五个作用域函数的差异与选择依据，并覆盖内联函数、具体化类型参数、非内联与交叉内联、惰性序列求值和领域特定语言构建。读完可写出既高效又可读的链式接口，并避开内联与类型擦除的常见陷阱。</description></item><item><title>Kotlin 语言基础与空安全</title><link>https://plumephp.com/kotlin-language-null-safety/</link><pubDate>Sat, 03 Oct 2026 09:00:00 +0800</pubDate><guid>https://plumephp.com/kotlin-language-null-safety/</guid><description>空指针异常是 Android 线上崩溃的头号来源，Kotlin 的空安全正是为此设计。本文梳理 Kotlin 2.x 的语言基础与空安全机制：从变量声明与类型推断、可空类型与平台类型的区别，到安全调用、Elvis 运算符与 let 组成的调用链，再到智能转换、密封类穷尽分支、数据类与拷贝，以及同 Java 互操作时的空安全边界。文中给出写法对照表与常见坑清单，帮你把空指针异常挡在编译期。</description></item></channel></rss>