system_info2 库 OHOS 适配总结
成功将库适配到 OpenHarmony (OHOS) 平台,实现了完整的系统信息获取功能。本次适配工作成功实现了库在 OpenHarmony 平台上的完整功能支持。通过合理的架构设计和充分利用平台特性,我们以最小的代码改动实现了最大的功能覆盖。代码统计新增文件: 1 个修改文件: 9 个新增代码: ~200 行适配时间: 约 2 小时这次适配为其他 Dart/Flutter 库的 OHOS 平台适
system_info2 库 OHOS 适配总结
欢迎大家加入开源鸿蒙跨平台开发者社区:
适配概述
成功将 system_info2 库适配到 OpenHarmony (OHOS) 平台,实现了完整的系统信息获取功能。
修改文件列表
1. 配置文件修复
- 文件:
ohos/build-profile.json5 - 修改: 添加
modules字段,修复 Flutter 工具链崩溃问题
2. 新增文件
- 文件:
lib/src/platform/cpu_ohos.dart - 功能: OHOS 平台专用的 CPU 信息获取
- 特性: 支持华为海思处理器识别
3. 平台适配文件(添加 ‘ohos’ case)
| 文件 | 功能 | 实现方式 |
|---|---|---|
cpu.dart |
CPU 路由 | 添加 OHOS 路由到 getOhosCores() |
operating_system.dart |
操作系统信息 | 使用 param 命令获取 OHOS 信息 |
kernel.dart |
内核信息 | 复用 Linux 实现(uname 命令) |
memory.dart |
内存信息 | 读取 /proc/meminfo |
storage.dart |
存储信息 | 使用 stat 命令 |
user.dart |
用户信息 | 使用 POSIX 标准命令 |
userspace.dart |
用户空间信息 | 使用 getconf 命令 |
4. 示例应用
- 文件:
example/lib/main.dart - 功能: 展示所有系统信息的完整 UI 界面
5. 文档更新
- 文件:
README.md - 内容: 添加 OHOS 平台支持说明
技术实现要点
1. 平台识别
switch (Platform.operatingSystem) {
case 'ohos':
// OHOS 特定实现
break;
}
2. OHOS 特有命令
// 获取系统参数
exec('param', ['get', 'const.ohos.fullname'])
exec('param', ['get', 'const.ohos.version.id'])
3. Linux 兼容性
大部分功能复用 Linux 实现:
/proc/cpuinfo- CPU 信息/proc/meminfo- 内存信息uname- 内核信息stat- 文件系统信息
4. 厂商识别
switch (cpuImplementer.toLowerCase()) {
case '0x41':
vendor = 'ARM';
break;
case '0x48':
vendor = 'HiSilicon'; // 华为海思
break;
case '0x51':
vendor = 'Qualcomm';
break;
}
支持的功能
✅ 操作系统名称和版本
✅ 内核名称、版本、架构、位数
✅ CPU 核心数、架构、厂商
✅ 物理内存(总量、空闲、可用)
✅ 虚拟内存(总量、空闲)
✅ 存储空间(总量、空闲)
✅ 用户信息(用户名、ID、主目录)
✅ 用户空间位数
使用示例
import 'package:system_info2/system_info2.dart';
void main() {
// 操作系统信息
print('OS: ${SysInfo.operatingSystemName}');
print('Version: ${SysInfo.operatingSystemVersion}');
// 内核信息
print('Kernel: ${SysInfo.kernelName} ${SysInfo.kernelVersion}');
print('Architecture: ${SysInfo.rawKernelArchitecture}');
print('Bitness: ${SysInfo.kernelBitness}-bit');
// CPU 信息
print('CPU Cores: ${SysInfo.cores.length}');
if (SysInfo.cores.isNotEmpty) {
print('CPU Name: ${SysInfo.cores.first.name}');
print('CPU Vendor: ${SysInfo.cores.first.vendor}');
}
// 内存信息
print('Total Memory: ${SysInfo.getTotalPhysicalMemory()} bytes');
print('Free Memory: ${SysInfo.getFreePhysicalMemory()} bytes');
// 存储信息
print('Total Storage: ${SysInfo.getTotalStorage()} bytes');
print('Free Storage: ${SysInfo.getFreeStorage()} bytes');
// 用户信息
print('User: ${SysInfo.userName}');
print('User ID: ${SysInfo.userId}');
print('Home: ${SysInfo.userDirectory}');
}
测试验证
编译测试
flutter pub get
dart analyze lib/
运行测试
cd example
flutter run -d <ohos-device-id>
预期结果
- ✅ 代码分析无错误
- ✅ 编译成功
- ✅ 在 HarmonyOS 设备上正常运行
- ✅ 正确显示所有系统信息
兼容性
| 平台 | 支持状态 |
|---|---|
| Linux | ✅ 原生支持 |
| macOS | ✅ 原生支持 |
| Windows | ✅ 原生支持 |
| Android | ✅ 原生支持 |
| OpenHarmony | ✅ 新增支持 |
适配策略
- 复用优先: 最大化复用 Linux 实现
- 特殊处理: 为 OHOS 特有功能提供专门实现
- 降级方案: 每个功能都有备用实现
- 错误处理: 完善的异常处理机制
关键优势
- 零侵入: 不影响其他平台的功能
- 高兼容: 充分利用 OHOS 的 Linux 兼容性
- 易维护: 清晰的代码结构和注释
- 可扩展: 易于添加更多 OHOS 特有功能
后续优化方向
- 添加 HarmonyOS 分布式设备信息获取
- 支持更多 OHOS 系统参数
- 性能优化和缓存机制
- 单元测试和集成测试
- 发布到 pub.dev
问题排查
问题 1: Flutter 工具链崩溃
解决: 在 ohos/build-profile.json5 中添加 modules 字段
问题 2: 命令执行失败
解决: 检查设备权限,确保应用有执行系统命令的权限
问题 3: 信息获取不完整
解决: 检查 OHOS 版本,某些命令可能在不同版本中有差异
总结
本次适配工作成功实现了 system_info2 库在 OpenHarmony 平台上的完整功能支持。通过合理的架构设计和充分利用平台特性,我们以最小的代码改动实现了最大的功能覆盖。
代码统计:
- 新增文件: 1 个
- 修改文件: 9 个
- 新增代码: ~200 行
- 适配时间: 约 2 小时
这次适配为其他 Dart/Flutter 库的 OHOS 平台适配提供了很好的参考范例。
项目地址:https://atomgit.com/oh-flutter/system_info
更多推荐



所有评论(0)