{"_id":"@cordova-ohos/cordova-hot-code-push-plugin","_rev":"5-6f9461cefe59320446d39b2790b80944","name":"@cordova-ohos/cordova-hot-code-push-plugin","dist-tags":{"latest":"1.5.4"},"versions":{"1.5.3":{"name":"@cordova-ohos/cordova-hot-code-push-plugin","version":"1.5.3","keywords":["cordova","advanced-http","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-hot-code-push-plugin@1.5.3","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-hot-code-push-plugin/issues"},"dist":{"shasum":"d4e77aebd0e3304a4e5143fcd343fd3fad380b46","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-hot-code-push-plugin/-/cordova-hot-code-push-plugin-1.5.3.tgz","fileCount":11,"integrity":"sha512-P+oskbD4c90m4bWNZ2e3lA4N6z3lFNF4S6Pmj05iT77B2uvaaOLYaheR4rjCc6L0Yv2ONQThtugR3VHTpczG5g==","signatures":[{"sig":"MEUCIQCDka8MvW8kW93qzSSNPfdkLs2EG8f1Ojiwg3aw92KrFgIgaB/yMEf6lqeoZFg5iRRLL2xGJPwJ+ZArlxTy4Lqaq5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":59878},"cordova":{"id":"cordova-hot-code-push-plugin","platforms":["ohos"]},"engines":{"cordovaDependencies":{"1.5.3":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"289afa42a4b48835fdb05f9ab9d7a7d21182b2ec","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-hot-code-push-plugin","type":"git"},"_npmVersion":"10.5.1","description":"Cordova Hot code Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-hot-code-push-plugin_1.5.3_1773926743696_0.019132999159981567","host":"s3://npm-registry-packages-npm-production"}},"1.5.4":{"name":"@cordova-ohos/cordova-hot-code-push-plugin","version":"1.5.4","description":"Cordova Hot code Plugin","cordova":{"id":"cordova-hot-code-push-plugin","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-hot-code-push-plugin"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin/issues"},"keywords":["cordova","advanced-http","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"1.5.4":{"@cordova-ohos/ohos":">=2.0.0","hcordova":">=1.0.0"}}},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-hot-code-push-plugin@1.5.4","gitHead":"03fa2116be615a2f91461d2f1e399f7f5e6c74e6","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-bvlLeROQ7gIoPEh/AldeIg8ZimtQLBJF3f0vQd8ubOiJ2/hKs1zU4xfUbojOvJEPLWI+MzX6hbxmbBpd9VPSyA==","shasum":"b56e15d34633f3875dcd02f3b3ac8a62163d1709","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-hot-code-push-plugin/-/cordova-hot-code-push-plugin-1.5.4.tgz","fileCount":12,"unpackedSize":78903,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAV0Qeou/FUcjri4M01jiojd268PSESmd9f2TarSfLajAiB9U1bLB/KULiKXyG9BgStbPCnIh7lkA6JS8ijcstfxAA=="}]},"_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"directories":{},"maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cordova-hot-code-push-plugin_1.5.4_1785139026549_0.7265290252824472"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-19T13:25:43.485Z","modified":"2026-07-27T07:57:06.918Z","1.5.3":"2026-03-19T13:25:43.861Z","1.5.4":"2026-07-27T07:57:06.675Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","advanced-http","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-hot-code-push-plugin"},"description":"Cordova Hot code Plugin","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"},{"name":"wanpengsz","email":"wanpengsz@163.com"},{"name":"xkh111","email":"xukaihui11@163.com"},{"name":"hcordova","email":"chenlihuiabc@163.com"}],"readme":"# <center>cordova-hot-code-push-plugin</center>\r\n\r\n[![zh-CN](https://img.shields.io/badge/lang-中文-blue.svg)](README.md)\r\n[![en](https://img.shields.io/badge/lang-English-blue.svg)](README.en.md)\r\n\r\n本项目基于 [cordova-hot-code-push-plugin@1.5.3](https://www.npmjs.com/package/cordova-hot-code-push-plugin/v/1.5.3) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-hot-code-push-plugin](#cordova-hot-code-push-plugin)\r\n  - [简介](#简介)\r\n  - [核心概念](#核心概念)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [从 npm 安装（推荐）](#从-npm-安装推荐)\r\n    - [指定平台安装 ohos](#指定平台安装-ohos)\r\n    - [从 GitCode 仓库安装](#从-gitcode-仓库安装)\r\n    - [安装指定版本](#安装指定版本)\r\n    - [离线安装（本地包）](#离线安装本地包)\r\n    - [安装后验证](#安装后验证)\r\n    - [卸载](#卸载)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n    - [权限要求](#权限要求)\r\n  - [使用示例](#使用示例)\r\n    - [示例 1：触发热更新检测与安装](#示例-1触发热更新检测与安装)\r\n  - [使用说明](#使用说明)\r\n    - [工作原理](#工作原理)\r\n      - [1. 本地配置](#1-本地配置)\r\n      - [2. 服务器端配置](#2-服务器端配置)\r\n      - [3. 更新流程](#3-更新流程)\r\n    - [基本配置步骤](#基本配置步骤)\r\n      - [1. 修改 config.xml，增加如下配置](#1-修改-configxml增加如下配置)\r\n      - [2. chcp.json 配置文件示例](#2-chcpjson-配置文件示例)\r\n      - [3. chcp.manifest 配置文件（可通过插件 CLI 工具生成）](#3-chcpmanifest-配置文件可通过插件-cli-工具生成)\r\n  - [新增特性](#新增特性)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\ncordova-hot-code-push-plugin 是 Harmony Cordova 生态系统中一款高性能核心插件，专为混合移动应用设计，提供无需应用商店审核的跨平台代码更新解决方案。插件通过对比本地与服务器端的代码版本，实现 HTML、CSS、JavaScript、图片等静态资源的增量/全量更新，无需重新打包，无需用户手动下载新版本，适用于紧急 Bug 修复、功能快速迭代、资源优化等场景，大幅缩短更新周期、降低发布成本。\r\n\r\n- 跨平台兼容：统一 Android/iOS/OpenHarmony 热更新逻辑，API 调用无需区分平台\r\n\r\n- 增量更新：仅传输变更文件（差异补丁），更新体积缩减 70%-90%\r\n\r\n- 灵活可控：支持自动更新、手动触发更新、强制更新、灰度发布\r\n\r\n- 安全可靠：支持 HTTPS 传输加密、文件校验（MD5）、更新失败回滚\r\n\r\n- 低侵入式：不影响原生代码逻辑，仅作用于 Web 资源，集成成本低\r\n\r\n- 完整监控：提供更新进度回调、成功/失败状态通知，支持日志上报\r\n\r\n## 核心概念\r\n\r\n- **本地版本**：应用安装时内置的 Web 资源版本（存储在 `config.xml` 中）\r\n\r\n- **服务器版本**：部署在远程服务器的最新 Web 资源版本（通过 `chcp.json` 声明）\r\n\r\n- **全量更新包**：包含完整 Web 资源的压缩包（`chcp.zip`，适用于版本差异较大时）\r\n\r\n- **热更新配置文件**：`chcp.json`（版本信息）、`chcp.manifest`（文件清单与校验值）\r\n\r\n## 支持平台\r\n\r\n- **Android**：API 19 及以上（Android 4.4+）\r\n\r\n- **iOS**：10.0 及以上\r\n\r\n- **OHOS**：5.0+\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库或 GitCode 仓库获取。\r\n\r\n### 从 npm 安装（推荐）\r\n\r\n```bash\r\n# 使用 hcordova CLI 安装\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装插件（推荐稳定版）\r\nhcordova plugin add cordova-hot-code-push-plugin\r\n```\r\n\r\n### 指定平台安装 ohos\r\n\r\n仅为 OHOS 平台安装插件：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add cordova-hot-code-push-plugin --platform ohos\r\n```\r\n\r\n### 从 GitCode 仓库安装\r\n\r\n仅为 OHOS 平台安装插件（获取最新开发版）：\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin.git@develop --platform ohos\r\n```\r\n\r\n### 安装指定版本\r\n\r\n```bash\r\n# 仅安装到 OHOS 平台指定版本\r\nhcordova plugin add cordova-hot-code-push-plugin@1.0.0 --platform ohos\r\n```\r\n\r\n### 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：~/Downloads/cordova-hot-code-push-plugin）\r\n# 执行离线安装\r\nhcordova plugin add ~/Downloads/cordova-hot-code-push-plugin  --platform ohos\r\n```\r\n### 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 卸载\r\n\r\n```bash\r\n# Cordova CLI 全平台卸载\r\nhcordova plugin remove cordova-hot-code-push-plugin \r\n\r\n# 指定平台卸载\r\nhcordova plugin remove cordova-hot-code-push-plugin --platform ohos\r\n\r\n```\r\n\r\n## 约束与限制\r\n\r\n* 依赖插件：无强制依赖，集成时需确保 Cordova 设备就绪事件（`deviceready`）已触发。\r\n\r\n* 更新间隔周期需大于 1 分钟，测试时需修改 `chcp.json` 的 release 版本号及 `chcp.manifest` 中文件对应的 MD5 值。\r\n\r\n* 热更新仅作用于 Web 资源，无法更新原生代码及插件本身，原生部分变更需重新打包发布。\r\n\r\n### 兼容性\r\n\r\n支持：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| SDK | API12+ |\r\n| IDE | DevEco Studio: 5.0+ |\r\n| ROM | 5.1+ |\r\n| Emulator | OpenHarmony 6.0+ |\r\n\r\n在以下版本中已测试通过：\r\n\r\n| 项目 | 版本/信息 |\r\n|-----|--------|\r\n| @cordova-ohos/ohos | 14.0.1-ohos-14.0.1 |\r\n| SDK | 5.0.0(12) |\r\n| IDE | DevEco Studio: 6.0.13.200 |\r\n| ROM | 5.1.0.120 SP3 |\r\n| Emulator | OpenHarmony 6.0.1(21) |\r\n\r\n### 权限要求\r\n\r\n需授予应用网络访问权限（用于与远程服务器通信、下载更新文件），插件自动适配各平台基础权限，无需额外手动配置。\r\n\r\n## 使用示例\r\n\r\n### 示例 1：触发热更新检测与安装\r\n\r\n通过 JS 代码调用插件接口，检测服务器更新并手动触发安装，支持自定义更新地址及请求头。\r\n\r\n```javascript\r\nfunction chcpUpdate() {\r\n    // 配置新的更新地址，如果不传 option，更新地址使用 www/chcp.json 配置的地址\r\n    var options = {\"config-file\":\"https://www.chuzhitong.com/chcp/www/chcp.json\",\"request-headers\":{\"userName\":\"chenlh\"}};\r\n    chcp.fetchUpdate(function(action, error, data){\r\n        if(action == \"chcp_updateIsReadyToInstall\") {\r\n            // 检测到更新，更新成功后会自动重启 app，每次更新间隔周期需大于 1 分钟\r\n            // 如果要进行测试，修改 www/chcp.json 的 release 版本号，修改 www/chcp.manifest 文件内，其中文件对应的 md5 值\r\n            if(confirm(\"是否立即更新\")) {\r\n                chcp.installUpdate();\r\n            }\r\n        } else {\r\n            document.getElementById(\"updateAppInfo\").innerHTML = \"无更新\";\r\n        }\r\n\r\n    },options);\r\n}\r\n```\r\n\r\n## 使用说明\r\n\r\n### 工作原理\r\n\r\n#### 1. 本地配置\r\n\r\n在项目的 config.xml 中配置插件和更新服务器地址。\r\n\r\n#### 2. 服务器端配置\r\n\r\n在服务器上放置两个文件：chcp.json（定义版本、更新内容 URL 等）、chcp.manifest（列出所有文件及其哈希值，用于校验）。\r\n\r\n#### 3. 更新流程\r\n\r\n应用启动 → 检查服务器 chcp.json → 对比版本 → 下载差异文件 → 安装更新。\r\n\r\n### 基本配置步骤\r\n\r\n#### 1. 修改 config.xml，增加如下配置\r\n\r\n```xml\r\n<chcp>\r\n    <!-- 当前版本不支持自动下载和安装，需调用 fetchUpdate 检测更新和安装 -->\r\n    <auto-download enabled=\"false\" />\r\n    <auto-install enabled=\"true\" />\r\n    <config-file url=\"https://www.chuzhitong.com/chcp/www/chcp.json\" />\r\n</chcp>\r\n```\r\n\r\n#### 2. chcp.json 配置文件示例\r\n\r\n该文件在本地 rawfile/www 目录下存放一份，然后在服务器存储一份\r\n\r\n- **release：** 版本号，chcp 会判断该版本号和本地版本号比较，判断是否要更新\r\n\r\n- **content_url：** 更新文件的存储位置\r\n\r\n```json\r\n{\r\n  \"name\": \"cordova\",\r\n  \"autogenerated\": true,\r\n  \"ios_identifier\": \"\",\r\n  \"android_identifier\": \"\",\r\n  \"update\": \"now\",\r\n  \"min_native_interface\": 1,\r\n  \"content_url\": \"https://www.chuzhitong.com/chcp/www\",\r\n  \"release\": \"2024.03.05-16.47.30\"\r\n}\r\n```\r\n\r\n#### 3. chcp.manifest 配置文件（可通过插件 CLI 工具生成）\r\n\r\n该文件在本地 rawfile/www 目录下存放一份，然后在服务器存储一份，服务端存储在 chcp.json 项目目录内\r\n\r\n```json\r\n[\r\n  {\r\n    \"file\": \"css/jquery.mobile-1.4.5.min.css\",\r\n    \"hash\": \"d6ce4358ecdfe0463a7dddf2d82e3fd7\"\r\n  },\r\n  {\r\n    \"file\": \"js/jquery.mobile-1.4.5.min.js\",\r\n    \"hash\": \"f5cf4358ecdfe0463a7rfdf2d82e3f4f\"\r\n  }\r\n]\r\n```\r\n\r\n## 新增特性\r\n\r\n无新增特性，保持原生插件核心热更新功能，适配 OpenHarmony 平台运行需求，确保跨平台更新逻辑统一。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-hot-code-push-plugin/                # 热更新插件根目录\r\n├── LICENSE                                  # 开源许可证\r\n├── OAT.xml                                  # 开源审查配置\r\n├── package.json                             # npm 包配置，定义依赖和版本\r\n├── plugin.xml                               # Cordova 插件核心配置，声明平台和模块\r\n├── README.md                                # 使用说明文档\r\n├── src/                                     # 源代码目录\r\n│   └── main/                                # 主要源码目录\r\n│       └── cpp/                             # C++ 原生代码\r\n│           └── HotCodePushPlugin/           # 热更新 C++ 模块\r\n│               ├── FetchUpdateOptions.cpp   # 更新选项实现\r\n│               ├── FetchUpdateOptions.h     # C++ 头文件更新选项头文件\r\n│               ├── HotCodePushPlugin.cpp    # C++ 插件实现部分\r\n│               └── HotCodePushPlugin.h      # C++ 头文件\r\n└── www/                                     # 前端 JS 代码目录\r\n    ├── chcp.js                              # JS 插件接口，应用调用后转入 C++ 侧\r\n    └── LICENSE                              # 前端代码许可证\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- Android 和 iOS：[cordova-hot-code-push-plugin 官方指南](https://www.npmjs.com/package/cordova-hot-code-push-plugin)\r\n\r\n- GitCode 仓库：[CPF-Cordova/cordova-hot-code-push-plugin](https://gitcode.com/CPF-Cordova/cordova-hot-code-push-plugin)\r\n","readmeFilename":"README.md"}