@oh-expo/expo-device
v55.0.21-harmony.1
Published
expo-device 的 HarmonyOS 适配包(ExpoModule 原生模块,expo-modules-core 体系)
Maintainers
Readme
@oh-expo/expo-device
让 expo-device(设备信息)在 HarmonyOS / OpenHarmony 上运行的适配包。
通过 expo-modules-core 体系提供 ExpoDeviceModule 原生模块(模块名 ExpoDevice:
18 常量字段 + 7 方法,接口收口自 [email protected] 权威 d.ts)。
支持基线
| 项 | 值 |
| --- | --- |
| 适配目标 | [email protected] |
| 运行时底座 | @expo-harmony/[email protected](本地 HAR) |
| 鸿蒙 SDK | API 26(SDK 26.0.0 锚定,@ohos.deviceInfo / @ohos.systemDateTime) |
| 权限 | 无(只读设备信息) |
实现字段(诚实分级)
真实映射:isDevice / brand / manufacturer / modelName(productModel)/
deviceType(phone/tablet/2in1/desktop/tv → DeviceType 枚举)/ osName(HarmonyOS)/
osVersion(displayVersion)/ platformApiLevel(鸿蒙 sdkApiVersion,语义=API 版本)/
deviceName(marketName)+ 方法 getDeviceTypeAsync / getUptimeAsync
(systemDateTime.TimeType.STARTUP,毫秒)。
诚实置 null/false/空数组(无对应鸿蒙能力,不臆造):modelId / designName /
productName / deviceYearClass / totalMemory(本 SDK 无总内存 API,待核实后补)/
supportedCpuArchitectures / osBuildId / osInternalBuildId / osBuildFingerprint
- 方法
getMaxMemoryAsync(按 d.ts 语义返回 MAX_SAFE_INTEGER)/isRootedExperimentalAsync(false)/isSideLoadingEnabledAsync(false)/getPlatformFeaturesAsync([])/hasPlatformFeatureAsync(false)。
快速开始(宿主接入)
- 安装(npm):
npm install @oh-expo/expo-device(peer 自动带 expo-device 原包与 expo-modules-core); - 从
node_modules/@oh-expo/expo-device/local-hars/拷贝expo_device.har到宿主harmony/local-hars/,宿主oh-package.json5依赖"@oh-expo/expo-device": "file:local-hars/expo_device.har"(ohpm 公共源无 @oh-expo scope,本地 HAR 必须用相对路径); - expo-modules 体系模块经 expo-modules-core 运行时注册(无需改 RNOHPackagesFactory);
- JS 侧直接
import * as Device from 'expo-device'(对外契约由原包提供)。
构建与校验
pnpm har:prepare # hvigorw assembleHar → local-hars/expo_device.har
pnpm har:prepack # 发布前校验(必需文件 / scope / -harmony.N 版本 / HAR 产物)状态与来源
- ⚠️ 实现已落盘(接口收口自 npm 实包权威 d.ts,无上游 harmony 参照包——@oh-expo 独立实现); 编译与宿主接入验证状态见 expo-harmony 主仓 [acceptance/ledger.md](S4 前置门口径)。
- 适配细节与接口规格:expo-harmony 主仓
docs/adaptations/expo-device.md与docs/adaptations/expo-modules-75.md(75 模块台账)。
