<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[学习的最佳方式，就是把它写下来!]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hirohrj123</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hirohrj123]]></copyright><item><title><![CDATA[Android开发中函数式编程的3个核心思考（附规范+示例）]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/170243212</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/170243212</guid><author>hirohrj123</author><pubDate>Sat, 07 Nov 2026 15:00:01 +0800</pubDate><description><![CDATA[函数式编程的核心特性是「不可变性、纯函数、Lambda/高阶函数、流式处理、无副作用」，在Android开发中，它不是“万能工具”，关键在于“用对场景”——贴合特性的场景能最大化发挥优势，反之则会增加维护成本、引发性能或内存问题。Android开发中大量存在回调场景（点击事件、监听器、异步回调），函数式编程的Lambda、高阶函数能消除冗余的匿名类，同时封装通用逻辑，提升代码复用性。纯业务逻辑（无IO、无外部依赖）、工具类方法，完全符合“纯函数”的特性，适合用函数式编程实现，可提升可测试性和复用性。]]></description><category></category></item><item><title><![CDATA[Gson + Kotlin 数据类的空安全陷阱：一次线上 NPE 崩溃的完整分析与修复]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/170195465</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/170195465</guid><author>hirohrj123</author><pubDate>Fri, 06 Nov 2026 15:54:29 +0800</pubDate><description><![CDATA[服务端返回 {"provinceName": null, ...}│▼Gson 反射赋值，绕过主构造函数和空检查│▼data.provinceName 实际是 null（但类型仍标记为非空 String）│▼主线程 lambda 拿着这个"假的非空值"传给非空参数│▼Intrinsics.checkNotNullParameter 抛出 NPE，主线程崩溃项目内容崩溃现象根本原因Gson 反射赋值绕过 Kotlin 构造函数与空检查，服务端返回显式null。]]></description><category></category></item><item><title><![CDATA[踩坑实录：iOS 真机微信小程序选图点击无反应？废弃的 chooseImage 害的，全量迁移 chooseMedia]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/169846849</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/169846849</guid><author>hirohrj123</author><pubDate>Mon, 02 Nov 2026 18:14:29 +0800</pubDate><description><![CDATA[废弃 API 不报错、只静默失效是最难排查的一类问题——在部分 iOS 微信版本上无响应且无 errMsg。新项目选媒体文件直接用，不要再用。“模拟器能跑"不等于"配置正确”：开发者工具同时跳过了隐私协议校验和合法域名校验，而 Android 真机对废弃接口更宽容，所以 iOS 真机往往成为唯一暴露问题的端。排查顺序建议：真机调试开 vConsole 看原始回调 → 有类 errMsg 查后台《用户隐私保护指引》→ 有域名类错误查uploadFile。]]></description><category></category></item><item><title><![CDATA[Android 复制到剪贴板重复提示问题排查与修复]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/169646207</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/169646207</guid><author>hirohrj123</author><pubDate>Sat, 31 Oct 2026 14:12:12 +0800</pubDate><description><![CDATA[三条提示来自三个不同来源，不要混为一谈。Android 13+ 系统会自动提示复制成功，应用应移除自定义 Toast。Shell 已从剪贴板粘贴是剪贴板读取隐私提示，由读取方触发，复制方无法通过代码消除。使用版本判断，只在 Android 12L 及以下显示自定义提示，是官方推荐做法。]]></description><category></category></item><item><title><![CDATA[全景解读 CPF-Cordova 与 CPF-Ionic：鸿蒙混合开发双生态的组织、治理与协作模式]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167222264</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167222264</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 16:28:56 +0800</pubDate><description><![CDATA[一个常见质疑：鸿蒙已经有 ArkTS 原生、Flutter-OH、React Native-OH，为什么还要投入 Cordova/Ionic？存量规模：Cordova 2009 年至今积累了数十万企业应用（银行、政务、零售内勤等场景尤多），这些应用的迁移预算远低于重写预算——"不重写就能上鸿蒙"是唯一的迁移方案；开发者结构：Web 前端开发者基数远大于原生/Flutter 开发者，Cordova/Ionic 是他们零学习成本进入鸿蒙生态的通道；双生态互补。]]></description><category></category></item><item><title><![CDATA[一个 manifest 仓库背后的工程化：用 repo 管理近 80 个 Cordova 鸿蒙化三方库]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167222239</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167222239</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 16:27:20 +0800</pubDate><description><![CDATA[1. 聚合 ── 1 框架 + 78 插件，一个 XML 索引，repo sync 一键拉全2. 双轨 ── develop/master 两套 manifest，适配与稳定版本并行3. 独立 ── 每插件独立仓库独立发版，manifest 只管"在哪、跟哪个分支"对迁移开发者：先读 manifest 清单确认你依赖的插件是否已适配（78 个覆盖了核心插件 + 微信/QQ/微博/支付宝/推送等本土刚需），再决定迁移方案；对生态贡献者：新增插件适配后，记得在 manifest 仓库同步添加一份——]]></description><category></category></item><item><title><![CDATA[拆解一个鸿蒙化插件：CPF-Ionic 是如何把 43 个 Capacitor 插件搬上 OpenHarmony 的]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167222214</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167222214</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 16:26:08 +0800</pubDate><description><![CDATA[plugin.xml（声明式安装协议）× 双层实现（ArkTS 调 API + C++ NAPI 编译）× 语义对齐三原则（类型不变 / 隐私对等 / 权限显式）× 双轨 API（capacitor-* 与 ionic-native-* 各一套）= 43 个插件批量鸿蒙化挑一个列表里没有的官方插件 → 套五步法 → 参考 device 的 plugin.xml 写安装协议 → 提 PR 到 CPF-Ionic。模板已备好，缺的只是你的那一个插件。]]></description><category></category></item><item><title><![CDATA[搜不到 CPF-Cordova 和 CPF-Ionic？一文讲清鸿蒙 Cordova/Capacitor 生态的正确入口（2026 实测）]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167222200</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167222200</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 16:24:28 +0800</pubDate><description><![CDATA[鸿蒙上的 Cordova = CPF-Cordova（hcordova），鸿蒙上的 Capacitor/Ionic = CPF-Ionic（hionic），入口都在 AtomGit。本文收纳了两个组织的全部仓库入口、实测版本号、上手命令、插件清单与 10 个高频踩坑实测环境：macOS arm64 / Node 26 / DevEco Studio / OpenHarmony 模拟器 7.0.0.105（2026-10 验证）。转载请注明两个组织主页链接。]]></description><category></category></item><item><title><![CDATA[从 Cordova 到 Capacitor： CPF 生态把两大混合应用框架整体搬上鸿蒙]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167219439</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167219439</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 11:58:38 +0800</pubDate><description><![CDATA[框架诞生维护方定位Cordova（前身 PhoneGap）2009Apache 基金会混合应用开山之作，WebView + 插件桥接Capacitor2017Ionic 团队“现代版 Cordova”，原生工程归开发者所有，桥接更薄Ionic2013Ionic 团队基于 Angular/React/Vue 的 UI 框架，底层依赖 Capacitor/Cordova三者的存量应用规模巨大，且大量企业内部应用仍在维护。迁移鸿蒙的现实路径不是重写，而是换原生容器。]]></description><category></category></item><item><title><![CDATA[Capacitor 插件鸿蒙化实战：@capacitor/device 从安装到模拟器验证全记录]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167219426</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167219426</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 11:56:33 +0800</pubDate><description><![CDATA[在鸿蒙上给 Capacitor 应用装插件，核心路径可以概括为三步走1. 一条命令 ── hionic plugin add @capacitor/xxx，四项工程修改全自动2. 零改动 ── React 层 import 原包调用，API 与 Android/iOS 完全一致3. 三连循环 ── buildui → sync → hvigorw，hilog + snapshot 验证以。]]></description><category></category></item><item><title><![CDATA[Capacitor 应用鸿蒙化实战：用 hionic 把 React 应用跑在 OpenHarmony 上]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167219421</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167219421</guid><author>hirohrj123</author><pubDate>Wed, 07 Oct 2026 11:55:32 +0800</pubDate><description><![CDATA[本文基于 hionic 工具链，将 Vite + React 项目成功迁移至 OpenHarmony 平台。通过 hionic init 初始化 Capacitor 工程，添加 openharmony 平台并同步前端构建产物（dist/），解决 webDir 配置与 libssl.so.3 缺失等关键问题，最终在 DevEco Studio 中完成签名 HAP 构建并运行于模拟器。全程零前端代码修改，验证了 Capacitor 鸿蒙化的可行性与工程落地路径。]]></description><category></category></item><item><title><![CDATA[Cordova 应用鸿蒙化实战：用 hcordova 把 Web 应用跑在 OpenHarmony 模拟器上]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167177320</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167177320</guid><author>hirohrj123</author><pubDate>Tue, 06 Oct 2026 20:59:54 +0800</pubDate><description><![CDATA[（前身是 PhoneGap）是最老牌的混合应用（Hybrid App）框架，比 React Native（2015）、Flutter（2017）都要早。它的核心思想非常简单：用系统自带的 WebView 加载本地 HTML/CSS/JavaScript，再通过一层"桥接"（Bridge）让 JS 能调用设备原生能力。层内容说明Web 层www/目录下的 HTML/CSS/JS应用业务代码，一次编写桥接层cordova.jsJS↔原生的消息队列与回调协议原生层各平台容器工程 + 插件系统。]]></description><category></category></item><item><title><![CDATA[CPF-Cordova 组织介绍]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167167243</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167167243</guid><author>hirohrj123</author><pubDate>Tue, 06 Oct 2026 10:07:35 +0800</pubDate><description><![CDATA[提供核心框架能力（接口完全兼容 Apache Cordova 的 Android/iOS 版本），hcordova提供对标上游 cordova CLI 的全流程命令行支撑，则以完整可运行的 Demo 工程集成 79 款插件作为最佳实践参考。配合 80+ 个鸿蒙化插件仓库，存量 Cordova 应用可以低成本移植到鸿蒙平台，新项目可以真正实现一套代码三端运行。]]></description><category></category></item><item><title><![CDATA[CPF-Ionic 组织介绍]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/167166931</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/167166931</guid><author>hirohrj123</author><pubDate>Tue, 06 Oct 2026 10:05:38 +0800</pubDate><description><![CDATA[仓库地址定位：整个组织的项目总览与入口文档，说明 Capacitor 项目迁移到开源鸿蒙的三步法：基于框架完成基础框架与业务代码移植；对比项目已使用的 Capacitor 插件与组织下的鸿蒙化插件，完成对应插件移植；参照各插件项目的官方说明书完成详细操作。插件目录。]]></description><category></category></item><item><title><![CDATA[GooglePlay上架应用的新要求]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/164727703</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/164727703</guid><author>hirohrj123</author><pubDate>Wed, 09 Sep 2026 11:00:21 +0800</pubDate><description><![CDATA[Google Play需要完成整改,这次提出的两项新质量要求，。]]></description><category></category></item><item><title><![CDATA[ERP→DRP→Agentic ERP：企业数智化演进三部曲（附架构全景图与落地路线图）]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/163079418</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/163079418</guid><author>hirohrj123</author><pubDate>Tue, 21 Jul 2026 15:40:34 +0800</pubDate><description><![CDATA[在企业数字化转型的深水区，技术叙事正经历从“系统替换”到“范式重构”的转变。]]></description><category></category></item><item><title><![CDATA[Android 离线中文 TTS 播报技术方案]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/162480877</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/162480877</guid><author>hirohrj123</author><pubDate>Wed, 01 Jul 2026 10:56:49 +0800</pubDate><description><![CDATA[针对 Android 5.1 设备不支持中文 TTS 的问题，放弃系统级 TTS 切换，采用应用内集成离线 SDK 是唯一稳定可靠的解法。该方案不仅规避了老旧系统的兼容性陷阱，还保证了离线环境下的播报成功率与用户体验。在落地时，需重点关注引擎的生命周期管理与音频焦点的抢占逻辑。]]></description><category></category></item><item><title><![CDATA[JD-GUI：Java反编译图形化工具详解与使用指南]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/162041279</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/162041279</guid><author>hirohrj123</author><pubDate>Tue, 16 Jun 2026 17:11:54 +0800</pubDate><description><![CDATA[该工具以直观的树形结构展示包和类的层次，并提供语法高亮、快速搜索等功能，是Java程序员日常开发中不可或缺的“瑞士军刀”之一。正是这样一款免费、开源且跨平台的图形化Java反编译工具，它能将字节码还原为可读的Java源代码，极大地提升了工作效率。本文将详细介绍JD-GUI的功能特点、下载安装、基本使用方法、工作原理以及使用时的注意事项，帮助您快速上手这一实用工具。在Java开发、调试或安全分析过程中，我们时常需要查看第三方库或遗留系统中的源代码，但手头可能只有编译好的。反编译库的图形化界面程序。]]></description><category></category></item><item><title><![CDATA[mac install scrcpy ]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/161536927</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/161536927</guid><author>hirohrj123</author><pubDate>Sat, 30 May 2026 11:11:32 +0800</pubDate><description><![CDATA[mac install scrcpy]]></description><category></category></item><item><title><![CDATA[View Binding的基础使用]]></title><link>https://blog.youkuaiyun.com/hirohrj123/article/details/161105729</link><guid>https://blog.youkuaiyun.com/hirohrj123/article/details/161105729</guid><author>hirohrj123</author><pubDate>Fri, 15 May 2026 11:46:49 +0800</pubDate><description><![CDATA[View Binding 是 Android 团队推出的轻量级视图绑定方案，它提供了类型安全的视图访问，同时避免了 Data Binding 的复杂性和性能开销。]]></description><category></category></item></channel></rss>