- 博客(220)
- 资源 (4)
- 收藏
- 关注
原创 Android开发中函数式编程的3个核心思考(附规范+示例)
函数式编程的核心特性是「不可变性、纯函数、Lambda/高阶函数、流式处理、无副作用」,在Android开发中,它不是“万能工具”,关键在于“用对场景”——贴合特性的场景能最大化发挥优势,反之则会增加维护成本、引发性能或内存问题。Android开发中大量存在回调场景(点击事件、监听器、异步回调),函数式编程的Lambda、高阶函数能消除冗余的匿名类,同时封装通用逻辑,提升代码复用性。纯业务逻辑(无IO、无外部依赖)、工具类方法,完全符合“纯函数”的特性,适合用函数式编程实现,可提升可测试性和复用性。
2026-11-07 15:00:01
206
原创 Gson + Kotlin 数据类的空安全陷阱:一次线上 NPE 崩溃的完整分析与修复
服务端返回 {"provinceName": null, ...}│▼Gson 反射赋值,绕过主构造函数和空检查│▼data.provinceName 实际是 null(但类型仍标记为非空 String)│▼主线程 lambda 拿着这个"假的非空值"传给非空参数│▼Intrinsics.checkNotNullParameter 抛出 NPE,主线程崩溃项目内容崩溃现象根本原因Gson 反射赋值绕过 Kotlin 构造函数与空检查,服务端返回显式null。
2026-11-06 15:54:29
177
原创 踩坑实录:iOS 真机微信小程序选图点击无反应?废弃的 chooseImage 害的,全量迁移 chooseMedia
废弃 API 不报错、只静默失效是最难排查的一类问题——在部分 iOS 微信版本上无响应且无 errMsg。新项目选媒体文件直接用,不要再用。“模拟器能跑"不等于"配置正确”:开发者工具同时跳过了隐私协议校验和合法域名校验,而 Android 真机对废弃接口更宽容,所以 iOS 真机往往成为唯一暴露问题的端。排查顺序建议:真机调试开 vConsole 看原始回调 → 有类 errMsg 查后台《用户隐私保护指引》→ 有域名类错误查uploadFile。
2026-11-02 18:14:29
321
原创 Android 复制到剪贴板重复提示问题排查与修复
三条提示来自三个不同来源,不要混为一谈。Android 13+ 系统会自动提示复制成功,应用应移除自定义 Toast。Shell 已从剪贴板粘贴是剪贴板读取隐私提示,由读取方触发,复制方无法通过代码消除。使用版本判断,只在 Android 12L 及以下显示自定义提示,是官方推荐做法。
2026-10-31 14:12:12
315
原创 全景解读 CPF-Cordova 与 CPF-Ionic:鸿蒙混合开发双生态的组织、治理与协作模式
一个常见质疑:鸿蒙已经有 ArkTS 原生、Flutter-OH、React Native-OH,为什么还要投入 Cordova/Ionic?存量规模:Cordova 2009 年至今积累了数十万企业应用(银行、政务、零售内勤等场景尤多),这些应用的迁移预算远低于重写预算——"不重写就能上鸿蒙"是唯一的迁移方案;开发者结构:Web 前端开发者基数远大于原生/Flutter 开发者,Cordova/Ionic 是他们零学习成本进入鸿蒙生态的通道;双生态互补。
2026-10-07 16:28:56
1105
原创 一个 manifest 仓库背后的工程化:用 repo 管理近 80 个 Cordova 鸿蒙化三方库
1. 聚合 ── 1 框架 + 78 插件,一个 XML 索引,repo sync 一键拉全2. 双轨 ── develop/master 两套 manifest,适配与稳定版本并行3. 独立 ── 每插件独立仓库独立发版,manifest 只管"在哪、跟哪个分支"对迁移开发者:先读 manifest 清单确认你依赖的插件是否已适配(78 个覆盖了核心插件 + 微信/QQ/微博/支付宝/推送等本土刚需),再决定迁移方案;对生态贡献者:新增插件适配后,记得在 manifest 仓库同步添加一份——
2026-10-07 16:27:20
1149
原创 拆解一个鸿蒙化插件:CPF-Ionic 是如何把 43 个 Capacitor 插件搬上 OpenHarmony 的
plugin.xml(声明式安装协议)× 双层实现(ArkTS 调 API + C++ NAPI 编译)× 语义对齐三原则(类型不变 / 隐私对等 / 权限显式)× 双轨 API(capacitor-* 与 ionic-native-* 各一套)= 43 个插件批量鸿蒙化挑一个列表里没有的官方插件 → 套五步法 → 参考 device 的 plugin.xml 写安装协议 → 提 PR 到 CPF-Ionic。模板已备好,缺的只是你的那一个插件。
2026-10-07 16:26:08
1133
原创 搜不到 CPF-Cordova 和 CPF-Ionic?一文讲清鸿蒙 Cordova/Capacitor 生态的正确入口(2026 实测)
鸿蒙上的 Cordova = CPF-Cordova(hcordova),鸿蒙上的 Capacitor/Ionic = CPF-Ionic(hionic),入口都在 AtomGit。本文收纳了两个组织的全部仓库入口、实测版本号、上手命令、插件清单与 10 个高频踩坑实测环境:macOS arm64 / Node 26 / DevEco Studio / OpenHarmony 模拟器 7.0.0.105(2026-10 验证)。转载请注明两个组织主页链接。
2026-10-07 16:24:28
1208
原创 从 Cordova 到 Capacitor: CPF 生态把两大混合应用框架整体搬上鸿蒙
框架诞生维护方定位Cordova(前身 PhoneGap)2009Apache 基金会混合应用开山之作,WebView + 插件桥接Capacitor2017Ionic 团队“现代版 Cordova”,原生工程归开发者所有,桥接更薄Ionic2013Ionic 团队基于 Angular/React/Vue 的 UI 框架,底层依赖 Capacitor/Cordova三者的存量应用规模巨大,且大量企业内部应用仍在维护。迁移鸿蒙的现实路径不是重写,而是换原生容器。
2026-10-07 11:58:38
1070
原创 Capacitor 插件鸿蒙化实战:@capacitor/device 从安装到模拟器验证全记录
在鸿蒙上给 Capacitor 应用装插件,核心路径可以概括为三步走1. 一条命令 ── hionic plugin add @capacitor/xxx,四项工程修改全自动2. 零改动 ── React 层 import 原包调用,API 与 Android/iOS 完全一致3. 三连循环 ── buildui → sync → hvigorw,hilog + snapshot 验证以。
2026-10-07 11:56:33
1181
原创 Capacitor 应用鸿蒙化实战:用 hionic 把 React 应用跑在 OpenHarmony 上
本文基于 hionic 工具链,将 Vite + React 项目成功迁移至 OpenHarmony 平台。通过 hionic init 初始化 Capacitor 工程,添加 openharmony 平台并同步前端构建产物(dist/),解决 webDir 配置与 libssl.so.3 缺失等关键问题,最终在 DevEco Studio 中完成签名 HAP 构建并运行于模拟器。全程零前端代码修改,验证了 Capacitor 鸿蒙化的可行性与工程落地路径。
2026-10-07 11:55:32
1172
原创 Cordova 应用鸿蒙化实战:用 hcordova 把 Web 应用跑在 OpenHarmony 模拟器上
(前身是 PhoneGap)是最老牌的混合应用(Hybrid App)框架,比 React Native(2015)、Flutter(2017)都要早。它的核心思想非常简单:用系统自带的 WebView 加载本地 HTML/CSS/JavaScript,再通过一层"桥接"(Bridge)让 JS 能调用设备原生能力。层内容说明Web 层www/目录下的 HTML/CSS/JS应用业务代码,一次编写桥接层cordova.jsJS↔原生的消息队列与回调协议原生层各平台容器工程 + 插件系统。
2026-10-06 20:59:54
1150
原创 CPF-Cordova 组织介绍
提供核心框架能力(接口完全兼容 Apache Cordova 的 Android/iOS 版本),hcordova提供对标上游 cordova CLI 的全流程命令行支撑,则以完整可运行的 Demo 工程集成 79 款插件作为最佳实践参考。配合 80+ 个鸿蒙化插件仓库,存量 Cordova 应用可以低成本移植到鸿蒙平台,新项目可以真正实现一套代码三端运行。
2026-10-06 10:07:35
1190
原创 CPF-Ionic 组织介绍
仓库地址定位:整个组织的项目总览与入口文档,说明 Capacitor 项目迁移到开源鸿蒙的三步法:基于框架完成基础框架与业务代码移植;对比项目已使用的 Capacitor 插件与组织下的鸿蒙化插件,完成对应插件移植;参照各插件项目的官方说明书完成详细操作。插件目录。
2026-10-06 10:05:38
1167
原创 ERP→DRP→Agentic ERP:企业数智化演进三部曲(附架构全景图与落地路线图)
在企业数字化转型的深水区,技术叙事正经历从“系统替换”到“范式重构”的转变。
2026-07-21 15:40:34
392
原创 Android 离线中文 TTS 播报技术方案
针对 Android 5.1 设备不支持中文 TTS 的问题,放弃系统级 TTS 切换,采用应用内集成离线 SDK 是唯一稳定可靠的解法。该方案不仅规避了老旧系统的兼容性陷阱,还保证了离线环境下的播报成功率与用户体验。在落地时,需重点关注引擎的生命周期管理与音频焦点的抢占逻辑。
2026-07-01 10:56:49
201
原创 JD-GUI:Java反编译图形化工具详解与使用指南
该工具以直观的树形结构展示包和类的层次,并提供语法高亮、快速搜索等功能,是Java程序员日常开发中不可或缺的“瑞士军刀”之一。正是这样一款免费、开源且跨平台的图形化Java反编译工具,它能将字节码还原为可读的Java源代码,极大地提升了工作效率。本文将详细介绍JD-GUI的功能特点、下载安装、基本使用方法、工作原理以及使用时的注意事项,帮助您快速上手这一实用工具。在Java开发、调试或安全分析过程中,我们时常需要查看第三方库或遗留系统中的源代码,但手头可能只有编译好的。反编译库的图形化界面程序。
2026-06-16 17:11:54
284
原创 View Binding的基础使用
View Binding 是 Android 团队推出的轻量级视图绑定方案,它提供了类型安全的视图访问,同时避免了 Data Binding 的复杂性和性能开销。
2026-05-15 11:46:49
386
原创 View Binding与Data Binding 核心区别及实战指南
哈喽,各位Android开发者小伙伴们~ 日常开发中,我们总会被视图绑定的各种方案搞得眼花缭乱,尤其是View Binding和Data Binding,两者都是Google官方推出的、用于替代findViewById的解决方案,很多新手甚至老开发者都会混淆它们的用法和适用场景。先给大家一个最核心的结论,记牢这句话,后面的内容就很好理解了:Data Binding 是 View Binding 的超集,View Binding只做视图绑定,Data Binding在其基础上增加了数据绑定的能力。
2026-05-15 10:39:32
384
原创 Android DataBinding数据绑定表达式、双向绑定
本文介绍了Android数据绑定的两种主要方式:单向数据绑定和双向数据绑定。单向数据绑定部分详细讲解了基本表达式(包括属性访问、方法调用、字符串格式化、算术逻辑运算等)、字符串资源引用以及Import语句的使用方法。双向数据绑定部分对比了单向和双向绑定的区别,并提供了三种实现方式:使用Observable Field、ObservableField和MutableLiveData,分别展示了在ViewModel和布局文件中的具体实现代码。文章通过大量代码示例,全面演示了Android数据绑定的各种应用场景和
2026-04-23 18:42:41
203
原创 Android Navigation组件核心问题深度解析
小项目/简单页面:用 FragmentTransaction 没问题。中大型项目/标准架构必须用 Navigation 组件,减少 80% 导航相关 Bug。Navigation 优势:自动管理回退栈、类型安全、可视化、支持 DeepLink,适合单 Activity 架构。导航设计原则:中心化、单 Activity、嵌套导航、作用域隔离、回退栈可预测。与 Jetpack 配合实现导航图内共享 ViewModelLiveData 做数据驱动Safe Args 做安全参数传递。
2026-04-23 18:07:44
560
原创 Android Navigation Fragment 导航实战
获取 NavController:8.3.2 基本导航操作导航到不同的 Fragment:8.3.3 数据传递方式1:使用 Bundle 传递参数:方式2:使用 Safe Args(推荐):8.3.4 返回堆栈管理popUpTo 和 popUpToInclusive:XML 配置返回堆栈管理:8.4 高级导航功能8.4.1 深层链接(Deep Link)深层链接的概念:深层链接允许用户直接导航到应用中的特定目的地,无需经过首页。配置深层链接:在 AndroidManifes
2026-04-23 17:30:12
463
原创 ViewModel、LiveData的使用
### 核心要点回顾1. **ViewModel 的设计理念** - 配置变更数据保持 - 分离视图逻辑与业务逻辑 - ViewModel 的生命周期2. **ViewModel 基础用法** - ViewModel 的创建与获取 - ViewModelProvider.Factory - ViewModel 与 Fragment 共享数据3. **ViewModel 与协程集成** - viewModelScope 的使用 - 协程取消机制
2026-04-22 14:30:29
178
原创 ViewModel 的生命周期与数据保持
什么是配置变更?配置变更是指设备配置发生变化,系统会重建 Activity/Fragment:配置变更的问题:ViewModel 的解决方案:6.1.2 分离视图逻辑与业务逻辑传统方式的问题:ViewModel 的解决方案:6.1.3 ViewModel 的生命周期ViewModel 的生命周期示意图:ViewModel 生命周期的特点:
2026-04-22 11:56:41
100
原创 Kotlin 协程:串行/并行请求、async/await、coroutineScope 管理并发、重试机制
串行/并行请求、async/await、coroutineScope 管理并发、重试机制
2026-04-21 17:39:17
368
原创 Android函数式编程代码规范文档
为统一团队Android函数式编程编码风格,降低维护成本,规避性能与内存风险,结合Kotlin语言特性及Android工程化实践,制定本规范。本规范适用于团队所有Android开发人员,涵盖函数式编程的命名、语法、使用场景、内存安全等核心内容,需严格遵循并纳入CodeReview检查项。本规范参考Android代码风格指南的核心原则,兼顾可读性、可维护性与性能,聚焦函数式编程在Android场景的落地细节,避免理论化,突出实用性与可执行性。
2026-04-21 17:13:26
335
原创 Kotlin协程
> - 理解协程的概念与优势> - 掌握协程构建器的使用(launch, async, runBlocking)> - 理解协程作用域(CoroutineScope)与协程上下文> - 掌握协程的异常处理机制> - 能够用协程优化网络请求链
2026-04-21 16:41:44
400
原创 Kotlin函数一
本文介绍了Kotlin中Lambda表达式和高阶函数的基础知识。主要内容包括:1)函数式编程核心理念如不可变性和纯函数;2)Lambda表达式语法及特性,包括赋值、参数传递和返回值;3)尾递归优化解决栈溢出问题;4)匿名函数与Lambda的区别;5)高阶函数定义,包括函数类型语法、函数作为参数和返回值。通过示例展示了如何利用这些特性编写简洁、可维护的代码,如过滤器实现和函数工厂模式。这些特性使Kotlin能够更好地支持函数式编程范式。
2026-04-21 11:47:04
295
原创 空安全与类型系统
*** 网络请求结果封装类(使用密封类)*//*** 成功结果*//*** 错误结果*//*** 加载中*//*** 判断是否成功*//*** 判断是否失败*//*** 判断是否加载中*//*** 获取数据,如果失败则返回 null*//*** 获取数据,如果失败则抛出异常*//*** 映射数据*//*** 处理结果*/action()/*** 用户数据类*//*** API 响应数据类*//*** 用户 API*/
2026-04-20 17:40:37
176
原创 Kotlin 与 Java 互操作空安全处理策略
最优解:改造 Java 代码添加 @Nullable/@NotNull 注解,让 Kotlin 编译器在编译期识别空类型,从源头杜绝 NPE。兜底解:无法修改 Java 代码时,用“安全调用+空合并”“扩展函数”处理平台类型,禁止滥用!!。特殊场景:集合/泛型需处理“集合本身空+元素空”双层风险,统一用“过滤+空集合兜底”。标准化落地:通过团队执行流程、工具化校验,确保策略统一落地,减少人为遗漏。
2026-04-20 16:18:36
416
原创 Kotlin数据类equals和 == 会返回true
✅ book1 == book3 返回true:因为Book是数据类,equals()被自动重写,比较的是所有主构造属性的值,两者属性完全一致,因此相等;❌ book1 === book3 返回false:因为两者是独立创建的对象,内存地址不同,引用的不是同一个实例;✅ 核心规律:Kotlin数据类的==判“内容相同”,===判“同一个对象”,这是数据类最核心的特性之一,也是我们日常开发中最常用的判断方式。
2026-04-20 15:53:24
384
原创 Kotlin 特有语法糖
表示受限的类继承结构,编译器知道所有子类。:在不修改原有类的情况下,为类添加新的方法。:简化数据模型的定义,自动生成常用方法。
2026-04-20 15:13:08
91
原创 Kotlin 基础语法快速回顾
本文回顾了Kotlin基础语法,包括变量声明(val/var)、函数定义、类与继承、接口与抽象类等核心概念。Kotlin语法具有从左到右的可读性优势,支持类型推断、默认参数、命名参数等特性。在面向对象方面,Kotlin通过主/次构造函数、open/override关键字实现继承,并提供接口与抽象类的灵活选择。最佳实践建议优先使用不可变变量(val),仅在必要时使用可变变量(var)。这些基础语法特性使Kotlin代码更简洁、安全且易于维护。
2026-04-20 14:58:36
92
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅