{"_id":"@cordova-ohos/cordova-plugin-device","_rev":"5-5b15584d2648a7c4d8d19a1ae79f74b8","name":"@cordova-ohos/cordova-plugin-device","dist-tags":{"latest":"3.0.1"},"versions":{"3.0.0":{"name":"@cordova-ohos/cordova-plugin-device","version":"3.0.0","keywords":["cordova","device","ecosystem:cordova","cordova-openharmony"],"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","_id":"@cordova-ohos/cordova-plugin-device@3.0.0","maintainers":[{"name":"luqi_tan","email":"295099422@qq.com"}],"bugs":{"url":"https://gitcode.com/OpenHarmony-Cordova/cordova-plugin-device/issues"},"dist":{"shasum":"abd87d50effb2122f1c62079f365005a331d51e3","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-device/-/cordova-plugin-device-3.0.0.tgz","fileCount":9,"integrity":"sha512-NsmI1G0Cp8CdMWmM9aAQQEW56u2Nw0WvDzTqe5mlizb9LzA29iWbABpLbvB56ppSzZi/wjFZx5IEN6LaxIadiQ==","signatures":[{"sig":"MEUCIQCxLRpN6XbTwNBbzk1eFcj1BW/7NVscj44Yyyl9q1W88gIgCf/EhJ3PJeMv3VT86eIm5cJVRk9CfAgGrGcFKK7q9R8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37937},"cordova":{"id":"cordova-plugin-device","platforms":["ohos"]},"engines":{"cordovaDependencies":{"3.0.0":{"hcordova":">=1.0.0","@cordova-ohos/ohos":">=2.0.0"}}},"gitHead":"65f427a2fa65c0b3694bfd9b20646fdde409ff56","_npmUser":{"name":"luqi_tan","email":"295099422@qq.com"},"repository":{"url":"gitcode:OpenHarmony-Cordova/cordova-plugin-device","type":"git"},"_npmVersion":"10.5.1","description":"Cordova Device Plugin","directories":{},"_nodeVersion":"22.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cordova-plugin-device_3.0.0_1773827179500_0.7497118677731878","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@cordova-ohos/cordova-plugin-device","version":"3.0.1","description":"Cordova Device Plugin","cordova":{"id":"cordova-plugin-device","platforms":["ohos"]},"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-device"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-device/issues"},"keywords":["cordova","device","ecosystem:cordova","cordova-openharmony"],"engines":{"cordovaDependencies":{"3.0.1":{"@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-plugin-device@3.0.1","gitHead":"549bf6e20b379ae8f458803ad520a7cd4d8007e1","_nodeVersion":"22.0.0","_npmVersion":"10.5.1","dist":{"integrity":"sha512-DqGSwisHloRZpoZeOMMUvr7o7e7T1Rj8fZyIoWg/bd1dPvArDlhiclB8CL8q4YkCfiKqcH8UuwpspHKeL2r04A==","shasum":"49106bcff826d4bdbf8eb1073ee29f769e816169","tarball":"https://registry.npmjs.org/@cordova-ohos/cordova-plugin-device/-/cordova-plugin-device-3.0.1.tgz","fileCount":10,"unpackedSize":56045,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBtKGj/WfN3DdDzSYXsjO0x/vAjnyQOOxqnnujpOuFu+AiBaIo4tyXlQ+Ww5fzkKbBVLcXn09RWYshiPQNzKN85ZzQ=="}]},"_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-plugin-device_3.0.1_1785139807789_0.3948325431755262"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-18T09:46:19.356Z","modified":"2026-07-27T08:10:08.151Z","3.0.0":"2026-03-18T09:46:19.649Z","3.0.1":"2026-07-27T08:10:07.928Z"},"bugs":{"url":"https://gitcode.com/CPF-Cordova/cordova-plugin-device/issues"},"author":{"name":"Huawei Device, Inc. Ltd. and","email":"马弓手"},"license":"Apache-2.0","keywords":["cordova","device","ecosystem:cordova","cordova-openharmony"],"repository":{"type":"git","url":"gitcode:CPF-Cordova/cordova-plugin-device"},"description":"Cordova Device 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-plugin-device</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-plugin-device@3.0.0](https://www.npmjs.com/package/cordova-plugin-device/v/3.0.0) 开发，本文档重点阐述其在 OpenHarmony（OHOS）系统中的具体应用。\r\n\r\n- [cordova-plugin-device](#cordova-plugin-device)\r\n  - [简介](#简介)\r\n  - [支持平台](#支持平台)\r\n  - [下载安装](#下载安装)\r\n    - [1. 从 npm 安装（推荐）](#1-从-npm-安装推荐)\r\n    - [2. 安装指定版本](#2-安装指定版本)\r\n    - [3. 从 GitCode 安装（开发版本）](#3-从-gitcode-安装开发版本)\r\n    - [4. 离线安装（本地包）](#4-离线安装本地包)\r\n    - [5. 安装后验证](#5-安装后验证)\r\n    - [6. 卸载插件](#6-卸载插件)\r\n  - [约束与限制](#约束与限制)\r\n    - [兼容性](#兼容性)\r\n  - [使用示例](#使用示例)\r\n  - [使用说明](#使用说明)\r\n    - [核心 API：device 对象](#核心-apidevice-对象)\r\n      - [属性列表与说明](#属性列表与说明)\r\n    - [常见问题（FAQ）](#常见问题faq)\r\n      - [1. 为什么 `uuid` 会改变？](#1-为什么-uuid-会改变)\r\n      - [2. 虚拟机中 `uuid` 和 `serial` 为固定值？](#2-虚拟机中-uuid-和-serial-为固定值)\r\n  - [目录结构](#目录结构)\r\n  - [贡献代码](#贡献代码)\r\n  - [许可证](#许可证)\r\n  - [官方资源](#官方资源)\r\n\r\n\r\n## 简介\r\n\r\n`cordova-plugin-device` 是 OpenHarmony Cordova 生态系统中的核心插件，用于获取当前运行应用的设备硬件信息与软件环境数据，为跨平台应用开发提供设备差异化适配能力，兼容 Apache Cordova 的 Android、iOS 等主流移动平台及浏览器环境中使用，本文档只说明在 OpenHarmony 系统中的使用。插件提供全局 `device` 对象，该对象在 Cordova 设备就绪事件（`deviceready`）触发后可用，可用于获取设备型号、操作系统版本、唯一标识符等关键信息，解决跨平台设备信息获取差异化的难题。\r\n\r\n- 跨平台兼容：兼容 Android、iOS、OHOS 及浏览器环境，本文档专注说明 OpenHarmony 系统中的使用\r\n\r\n- 全局对象：提供全局 `device` 对象，设备就绪后即可使用，无需额外初始化\r\n\r\n- 丰富信息：支持获取设备型号、操作系统、唯一标识、制造商等多种关键设备信息\r\n\r\n- 适配性强：适配 OpenHarmony 系统特性，准确返回符合系统规范的设备信息（如 ODID）\r\n\r\n- 易用便捷：API 简洁，无需深入原生开发，快速实现设备信息获取功能\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- **Browser**：主流桌面及移动浏览器\r\n\r\n## 下载安装\r\n\r\n通过 hcordova CLI 即可快速安装插件，支持从 npm 仓库获取，可指定 OHOS 平台安装，安装前确保已创建 Cordova 项目并进入项目根目录。\r\n\r\n### 1. 从 npm 安装（推荐）\r\n\r\n通过 npm 安装最新稳定版，自动集成到 Cordova 项目，支持全平台或指定 OHOS 平台安装：\r\n\r\n```bash\r\n# 安装 hcordova 命令化工具\r\nnpm install -g hcordova\r\n\r\n# 全平台安装\r\nhcordova plugin add cordova-plugin-device\r\n\r\n# 指定 OHOS 平台安装\r\nhcordova plugin add cordova-plugin-device --platform ohos\r\n```\r\n\r\n### 2. 安装指定版本\r\n\r\n如需兼容特定 Cordova 或平台版本，可指定版本号安装（仅 OHOS 平台）：\r\n\r\n```bash\r\n# 安装 1.0.0 版本（指定 OHOS 平台）\r\nhcordova plugin add cordova-plugin-device@1.0.0 --platform ohos\r\n```\r\n\r\n### 3. 从 GitCode 安装（开发版本）\r\n\r\n如需测试最新功能或问题修复，可从 GitCode 仓库安装开发分支（仅 OHOS 平台）：\r\n\r\n```bash\r\n# 仅支持 OHOS 平台\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-device.git --platform ohos\r\n\r\n# 指定标签/分支安装\r\nhcordova plugin add https://gitcode.com/CPF-Cordova/cordova-plugin-device.git@develop --platform ohos\r\n```\r\n\r\n### 4. 离线安装（本地包）\r\n\r\n适用于无网络环境，先下载插件包到本地，再执行离线安装：\r\n\r\n```bash\r\n# 下载插件包到本地（示例路径：../Downloads/cordova-plugin-device）\r\n# 执行离线安装\r\nhcordova plugin add ../Downloads/cordova-plugin-device --platform ohos\r\n```\r\n\r\n\r\n### 5. 安装后验证\r\n\r\n安装完成后，可通过以下命令验证插件是否成功添加到项目中：\r\n\r\n```bash\r\n# 查看已安装的插件列表，若包含本插件 ID 则表示插件已成功安装\r\nhcordova plugin list\r\n```\r\n\r\n### 6. 卸载插件\r\n\r\n如需移除插件，执行以下命令，支持全平台卸载或仅卸载 OHOS 平台插件：\r\n\r\n```bash\r\n# 全平台卸载\r\nhcordova plugin remove cordova-plugin-device\r\n\r\n# 指定 OHOS 平台卸载\r\nhcordova plugin remove cordova-plugin-device --platform ohos\r\n```\r\n\r\n## 约束与限制\r\n\r\n* 依赖插件：无强制依赖，插件集成后可直接使用，无需额外配置\r\n\r\n* 调用时机：`device` 对象必须在 Cordova 设备就绪事件（`deviceready`）触发后使用，未触发前调用会导致 `device` 为 `undefined`\r\n\r\n* 标识限制：OpenHarmony 系统中，`uuid` 和 `serial` 均返回 ODID（开发者匿名设备标识符），虚拟机中二者固定为 `emulator123456`\r\n\r\n* 信息差异：不同 OpenHarmony 版本、不同设备型号返回的设备信息可能存在细微差异，以实际设备返回为准\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在项目的 `www/js/index.js` 中添加以下代码，在设备就绪后获取并打印设备信息：\r\n\r\n```js\r\n// 等待 Cordova 设备就绪事件\r\ndocument.addEventListener(\"deviceready\", onDeviceReady, false);\r\nfunction onDeviceReady() {\r\n   console.log(\"Cordova 设备就绪，开始获取设备信息...\");\r\n   // 打印所有核心设备属性\r\n   console.log(\"设备型号（model）：\", device.model);\r\n   console.log(\"操作系统（platform）：\", device.platform);\r\n   console.log(\"设备唯一标识（uuid）：\", device.uuid);\r\n   console.log(\"系统版本（version）：\", device.version);\r\n   console.log(\"设备制造商（manufacturer）：\", device.manufacturer);\r\n   console.log(\"是否为虚拟设备（isVirtual）：\", device.isVirtual);\r\n   console.log(\"设备序列号（serial）：\", device.serial);\r\n}\r\n\r\n```\r\n\r\n## 使用说明\r\n\r\n### 核心 API：device 对象\r\n\r\n`device` 是全局对象，**必须在 `deviceready` 事件触发后使用**（Cordova 插件初始化依赖该事件），未触发前调用会导致 `device` 为 `undefined`。通过该对象可获取设备硬件信息与软件环境数据，核心属性如下。\r\n\r\n#### 属性列表与说明\r\n\r\n| **属性名** | **类型** | **描述** |\r\n|---|---|---|\r\n| device.model | String | 设备型号（认证型号，示例：ALN-AL00） |\r\n| device.platform | String | 设备操作系统名称（系统版本，版本格式 OpenHarmony-x.x.x.x，x 为数值） |\r\n| device.uuid | String | ODID，开发者匿名设备标识符 |\r\n| device.version | String | 操作系统版本（版本 ID：由 deviceType、manufacture、brand、productSeries、osFullName、productModel、softwareModel、sdkApiVersion、incrementalVersion、buildType 拼接组成。示例：wearable/HUAWEI/HUAWEI/TAS/OpenHarmony-5.0.0.1/TAS-AL00/TAS-AL00/12/default/release:nolog） |\r\n| device.manufacturer | String | 设备制造商（Huawei） |\r\n| device.isVirtual | Boolean | 标识设备是否为模拟器 / 虚拟设备（模拟器返回 `true`，真机返回 `false`） |\r\n| device.serial | String | ODID，开发者匿名设备标识符 |\r\n\r\n### 常见问题（FAQ）\r\n\r\n#### 1. 为什么 `uuid` 会改变？\r\n\r\n* 原因：OHOS 的 `uuid` 普通应用无法获取，因此返回的是 ODID，ODID 可能因设备环境变化而改变。\r\n\r\n#### 2. 虚拟机中 `uuid` 和 `serial` 为固定值？\r\n\r\n* 原因：OHOS 的虚拟机中 `uuid` 和 `serial` 返回相同的值：`emulator123456`，属于正常现象。\r\n\r\n## 目录结构\r\n\r\n```\r\ncordova-plugin-device/\r\n├── src/                          # 源代码目录\r\n│   └── main/                     # 主要源代码\r\n│       ├── cpp/                  # C++ 原生代码\r\n│       │   └── Device/           # 设备模块\r\n│       │       ├── Device.cpp    # 设备信息获取功能的 C++ 实现\r\n│       │       └── Device.h      # 设备信息获取功能的头文件\r\n│       └── ets/                  # ArkTS 代码（OpenHarmony API）\r\n│           └── components/       # 组件目录\r\n│               └── PluginAction/ # 插件动作组件\r\n│                   └── GetDeviceInfo.ets  # 获取设备信息的 ArkTS 实现\r\n├── www/                          # Web 资源目录\r\n│   └── device.js                 # JavaScript 设备信息接口（Cordova 桥接层）\r\n├── .gitignore                    # Git 忽略文件配置\r\n├── LICENSE                       # 项目开源许可证\r\n├── OAT.xml                       # OpenHarmony 审核配置文件\r\n├── package.json                  # Node.js 包配置\r\n├── plugin.xml                    # Cordova 插件描述文件（核心配置）\r\n└── README.md                     # 项目说明文档\r\n```\r\n\r\n## 贡献代码\r\n\r\n使用过程中发现任何问题都可以提 [Issue](https://gitcode.com/CPF-Cordova/cordova-plugin-device/issues) ，当然也非常欢迎发 [PR](https://gitcode.com/CPF-Cordova/cordova-plugin-device/pulls) 共建。\r\n\r\n## 许可证\r\n\r\n本插件基于 **Apache License 2.0** 开源，详见 [LICENSE](LICENSE) 文件。\r\n\r\n## 官方资源\r\n\r\n- OHOS 系统设备信息说明：[https://docs.openharmony.cn](https://docs.openharmony.cn/pages/v6.0/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-system-device.md)\r\n\r\n- Android、iOS 插件说明：[https://www.npmjs.com/package/cordova-plugin-device](https://www.npmjs.com/package/cordova-plugin-device)\r\n","readmeFilename":"README.md"}