在之前的文章鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙中,介绍了如何改造项目,适配鸿蒙平台。

文中讲述了整体的理念和思路,本文更进一步,结合可实操的项目代码,详细说明如何实施。

通过模块化、鸿蒙壳工程,结合 FVM 管理多版本 Flutter SDK,最终,保持原 Flutter 代码纯净,最小化修改,完成了鸿蒙化的适配示例。

本项目代码地址:GitHub地址

准备工作

1.安装 FVM

dart pub global activate melos

2.使用 FVM 安装 Flutter SDK

分别安装官方的3.22版本,以及鸿蒙社区的 3.22.0 版本

3.搭建 Flutter鸿蒙开发环境

搭建项目架构

创建目录

# 创建项目目录
mkdir flutter-ohos-demo

设置使用的 Flutter SDK 版本 推荐在 VsCode 的命令行中执行以下命令,这将创建 .fvm 目录, .vscode/setting.json 文件, 和.fvmrc 文件

fvm use 3.22.0


初始化工作区间

创建目录,项目结构如下所示:

.
├──  packages
│   ├── apps  #该目录用于存放各端应用壳工程
│   ├── common #该目录用于存放公共库,均为纯 dart 代码,不依赖于 ios/android 等原生实现
│   │   ├── domains #领域对象,存放各类实体文件,如枚举/模型/vo/事件等
│   │   ├── extensions #存放扩展类文件,对于类的扩展方法/属性
│   │   ├── services #服务类:如请求服务/授权服务/缓存服务/平台调用服务/路由服务/工具类等
│   │   └── widgets #通用小型 widgets, 纯dart编写的 Flutter UI 组件
│   ├── components #封装组件库,可以依赖于第三方库/第三方插件,或依赖于 plugins中的插件
│   │   ├── image_uploader
│   │   └── player
│   ├── modules
│   │   ├── address
│   │   ├── home
│   │   ├── me
│   │   ├── message
│   │   ├── order
│   │   ├── shop
│   │   └── support
│   └── plugins #插件库,自行封装的插件库,依赖于原生平台(ios/android)的代码
│       └── printer
├── README.md
├── melos.yaml
└── pubspec.yaml


运行 melos bootstrap

melos bootstrap


开始编写代码

在各个 package 初始化代码,如在 packages/common/domains 目录运行

fvm flutter create --template package .

创建壳工程

新建两个壳工程,一个为 app,另外一个为 ohos_app


App 壳工程

进入 package/apps/app 目录, 创建 app 项目,该项目为一个 App 项目,用于各平台(ios/android/mac 等, 不包含鸿蒙)打包

fvm flutter create --template app --org com.moguyun.flutter app

增加依赖项

修改 pubspec.yaml,添加以下内容

services:
   path: '../../common/services'
 domains:
   path:  '../../common/domains'
 widgets:
   path: '../../common/widgets'

 home:
   path: '../../modules/home'
 me:
   path: '../../modules/me'
 support:
   path: '../../modules/support'


安装依赖

运行以下命令,安装依赖

fvm flutter pub get


切换鸿蒙 Flutter SDK

首先在 flutter-ohos-demo 项目根目录,将 Flutter 版本切换到鸿蒙化的版本

fvm use custom_3.22.0

SDK 变更以后,需要重启 IDE (或者 Dart:Restart Analysis Server),以便让 Flutter 插件重启


创建 ohos_app 项目

进入 packages/apps 目录,创建 ohos_app 项目

fvm flutter create --template app --platforms ohos --org com.moguyun.flutter ohos_app


增加依赖项

进入 packages/apps/ohos_app 目录中的 pubspec.yaml, 同样增加依赖项

services:
   path: '../../common/services'
 domains:
   path:  '../../common/domains'
 widgets:
   path: '../../common/widgets'

 home:
   path: '../../modules/home'
 me:
   path: '../../modules/me'
 support:
   path: '../../modules/support'

三方库鸿蒙化适配

编辑 pubspec.yaml文件,增加以下配置,通过 dependency_overrides 来替换鸿蒙化的三方库,注意鸿蒙化的库与原库,保持版本统一

# 鸿蒙适配
dependency_overrides:
  flutter_inappwebview:
    git:
      url: https://gitee.com/openharmony-sig/flutter_inappwebview.git
      path: "flutter_inappwebview"

每次修改完 pubspec.yaml,使用 fvm flutter pub get 更新下依赖安装。


运行调试

用 Deveco 打开apps/ohos_app/ohos 目录。


在 Deveco 左上角 打开 File -> Project Structure..., 点击 Siging Configs, 勾选 Automatically generate signature, 对鸿蒙项目签名。

在 ohos_app 目录下,使用 fvm flutter run,或者点击运行按钮,运行flutter项目。


注意事项


  1. melos.yaml 文件中的 sdkPath: .fvm/flutter_sdk 配置了 melos 使用的 flutter SDK 版本,即由FVM 配置的当前项目版本
  2. 每次切换 Flutter SDK 时,都会修改文件 .fvm/, vscode/settings.json 文件
  3. ohos_app/pubsec.yaml 中的 dependency_overrides, 仅添加需要鸿蒙化的三方库
  4. ohos-3.22 在 build 时,有的 har 包可能确实,建议保持 ohos-Flutter 版本最新,如果还是不行,可以考虑手动复制 har 包(使用 3.7 构建出来)ohos_app/pubsec.yaml 中的 dependency_overrides, 仅添加需要鸿蒙化的三方库
  5. 已知插件删除问题,如果删除插件,可能需要在ohos里面手动修改代码,移除相关依赖ohos/oh-package.json5


如何判断三方库是否需要鸿蒙化,简而言之,如果三方库由纯 Dart 实现,则不需要单独适配,直接使用;如果三方库依赖系统底层实现,则需要鸿蒙化适配。

ohos-3.22 在 build 时,有的 har 包可能确实,建议保持 ohos-Flutter 版本最新,如果还是不行,可以考虑手动复制 har 包(使用 3.7 构建出来)

三方库的适配情况,可以查询 Gitee/Github,或者查阅表格 Flutter三方库适配计划

应用截图

总结

  1. 通过 FVM 管理多个 Flutter SDK 版本,仅在鸿蒙调测打包时,切换到 ohos-flutter SDK
  2. 通过 apps 壳工程,将鸿蒙化适配的代码,尽量在 ohos_app 项目中完成。通过 pub 包管理的 dependency_overrides 配置,逐个替换鸿蒙化的三方库
  3. 通过 melos 管理多包项目,Flutter 项目进行模块化、组件化、插件化拆分,职责分离,平台抽象,不同平台组合打包,有效解决平台不一致问题


参考资料

鸿蒙flutter实战——环境搭建




AMD RX 9070系列发布后,一度有传闻称,AMD还会推出一款32GB的旗舰,可能叫做RX 9070 XTX,但最终落空了。

现在,有网友发现了一块Radeon AI PRO R9700专业显卡的EVT原型开发板,它恰好就有32GB显存。

该卡市售只有非公版,所以这款AMD的原型卡还是相当有收藏价值的,而且保存相当完好。

从标签上看,这块卡是今年1月10日生产的,那时候RX 9070系列还远未发布,或许这就是32GB RX 9070 XTX传闻的由来。

标签上还明确写着,它的核心编号是Navi 48 XTW(W代表工作站),不仅版本A0(最早期的),整卡功耗300W。


今年iPhone 17系列的一大变化,就是放弃了钛合金材质,转而“开倒车”回归铝合金。

名记马克·古尔曼撰文称,苹果之所以作出这一决定,自然有其核心原因。简单来说,铝合金主要有两个关键优势——轻和散热。

“2023年iPhone 15 Pro改用钛金属框架后,iPhone 17 Pro将回归铝制框架。铝制框架更轻,散热效率更高,对于习惯使用15 Pro或16 Pro的用户来说,这将是一个不错的改变。”


苹果两年前在iPhone 15 Pro中首次采用了钛金属材质,并将其作为一项高端功能,iPhone 16 Pro也延续了这一配置。


但从用户反馈来看,iPhone 15 Pro在某些情况下会出现过热现象。“我自己也遇到过很多次这个问题,但从未将其归咎于钛金属。”古尔曼说。


就重量而言,iPhone 17系列的一大卖点就是轻,iPhone 17 Air是有史以来最轻薄的iPhone,Pro系列的重量势必也会进一步减轻。


此外,17 Pro Max今年配备了更大的电池,如果再使用钛金属,那就是“真板砖”了。


另外一个重要原因就是散热。在Apple Intelligence时代(AI需要大量运算),这一点变得比以往任何时候都更加重要。iOS 26将推出20 多项新的Apple Intelligence功能。


不仅如此,iPhone 17系列的相机也有重要升级,这也会是一个发热大户。

与不锈钢和钛相比,铝具有最佳的导热性,在一些特定情况下,铝的导热性比钛高出33倍。


所以,为什么苹果要用铝代替钛,答案就不言而喻了——更轻,更利于散热,而且它的制造成本要低得多。


来源于网络,侵权联系删除。

你还记得上次被大模型产品 amazing 的瞬间吗?如今,AI 已经从惊艳的 Demo 转向一场关乎架构、系统、数据与商业闭环的硬核攻坚战。真正的考题摆在眼前:如何让技术突破成为可持续的产业能力?10 月 16–17 日,由 CSDN与奇点智能研究院联合举办的 2025 全球机器学习技术大会将在北京威斯汀酒店隆重举行,汇聚来自高校科研工作者、顶会论文作者与一线科技产业技术实践派的 50+ 位重量级嘉宾。他们将以实战经验与前沿洞察,带来关于智能体工程与实践、AI 编程、多模态大模型、具身智能、开源模型与框架等领域的深度解读与破局思路。

从顶尖议题看 AI 落地真径,首批嘉宾阵容重磅揭晓为了系统性地回答这一时代命题,本次大会精心设计了一份 AI “全栈作战地图”。围绕技术深度与应用价值的双重驱动,共设置了大语言模型技术演进、智能体工程与实践、多模态与世界模型、AI 赋能软件研发与氛围编程、大模型应用开发实践、GenAI 产品创新与探索、具身智能与智能硬件、大模型+行业落地实践、开源模型与框架、大模型系统架构、AI Infra 大模型基础设施、算力基建与性能优化这 12 大核心专题,旨在穿透喧嚣,直击要害。这不仅是一份议题列表,更是一份导航图。接下来,我们将逐一揭晓那些站在浪潮之巅的领航者,聆听他们带来的破局之声。赵健:AI 安全与治理

赵健是中国电信人工智能研究院多媒体认知学习实验室主任、资深研究科学家。他长期专注于 AI 治理与临地安防研究,博士毕业于新加坡国立大学(师从颜水成教授),发表 CCF-A 类论文 40 余篇,其中多篇发表于 T-PAMI、IJCV 等国际顶刊,谷歌学术引用超 4900 次。作为多项国家级及企业合作项目负责人,其成果已在中国电信等多家领军企业落地,取得显著效益。赵健曾获吴文俊人工智能优秀青年奖、吴文俊人工智能自然科学奖一等奖等重要荣誉,并在国内外科技赛事中 8 次夺冠,是国内外公认的青年学者与技术领军人才。在 2025 ML-Summit 上,赵健将从多个维度介绍在 AI 治理方面的思考探索与创新实践,并给出未来展望。周盼:理想同学实时语音对话大模型 MindGPT-4o-Audio 技术实践