> 技术文档 > 3.现有Flutter项目适配鸿蒙(上)_flutter 代码打包鸿蒙

3.现有Flutter项目适配鸿蒙(上)_flutter 代码打包鸿蒙


文章目录

    • 一、运行前必要准备
      • 1.1 创建Ohos模块
      • 1.2 三方库添加鸿蒙侧的适配
      • 1.3 解决三方库版本冲突
    • 二、运行项目
      • 2.1 更新依赖
      • 2.2 鸿蒙签名
      • 2.3 项目运行

写在前面,之前我们已经写了两篇关于配置Flutter鸿蒙版本的环境以及运行第一个Flutter鸿蒙demo

目前鸿蒙的开源 tpc 和 sig 仓都迁移到了 gitcode 平台了,本次更新对 Flutter SDK 也有所涉及,所以我们就用最新的 Flutter SDK 来一起看一下如何构建 HarmonyOS 应用

最新的仓库是https://gitcode.com/openharmony-sig/flutter_flutter
这个仓库里面有两个版本,一个是3.7版本,一个是3.22版本

一、运行前必要准备

1.1 创建Ohos模块

在需要适配的Flutter项目文件里,打开从终端,输入如下命令

flutter create --platforms ohos .

其中,.代表当前目录
项目会多出ohos文件夹
文件结构

1.2 三方库添加鸿蒙侧的适配

因为我们开发的项目肯定不可能没有任何三方库的依赖,所以需要三方库也完成对鸿蒙侧的支持,如果这个库是纯 dart 库,那么很好,不用迁移,相反就要迁移。

查看插件官方代码仓的pubsepc.yaml文件,查找platforms字段,存在说明该插件依赖平台能力,需要做HarmonyOS适配;若无该字段,说明插件是纯Dart编写,可以直接采用中心仓引用方式,直接使用

是否适配,可以查看这个库,[地址](项目文件预览 - flutter_packages - GitCode)
适配列表

核心适配依赖有以下两个仓库

  • flutter_packages仓库[地址](项目首页 - flutter_packages - GitCode)
    该仓库主要新增对OpenHarmony平台的兼容

  • flutter_plus_plugins仓库[地址](项目首页 - flutter_plus_plugins:开发和维护平台适配核心,包括为Openharmony拓展UI范式,让Web应用和各类小程序应用适配Openharmony的能力 - GitCode)
    该仓库主要是开发和维护平台适配核心,包括为Openharmony拓展UI范式,让Web应用和各类小程序应用适配Openharmony的能力

因为当前三方库主要由华为和开源社区自行适配的,相当于独立分支,归档在git仓上,所以HarmonyOS的Flutter引用三方库主要采用git引入方式

具体替换依赖适配如下:

dependency_overrides: video_player: git: url: \"https://gitcode.com/openharmony-sig/flutter_packages.git\" path: \"packages/video_player/video_player\" camera: git:url: \"https://gitcode.com/openharmony-sig/flutter_packages.git\" path: \"packages/camera/camera\" shared_preferences: git: url: \"https://gitcode.com/openharmony-sig/flutter_packages.git\" path: \"packages/shared_preferences/shared_preferences\" path_provider: git: url: \"https://gitcode.com/openharmony-sig/flutter_packages.git\" path: \"packages/path_provider/path_provider\" flutter_phone_direct_caller: git: url: \"https://gitcode.com/openharmony-sig/fluttertpc_flutter_phone_direct_caller.git\" flutter_sms: git: url: \"https://gitcode.com/openharmony-sig/fluttertpc_flutter_sms.git\" screen: git: url: \"https://gitcode.com/nutpi/screen.git\" image_gallery_saver: git: url: \"https://gitcode.com/openharmony-sig/flutter_image_gallery_saver.git\" 

1.3 解决三方库版本冲突

如果项目中依赖的三方库里面依赖了与你项目中相同的库,并且版本不一致会导致冲突,需要将本地项目的依赖写到dependency_overrides里面来解决版本冲突的问题
例如:三方库依赖版本是:
版本
本地库依赖版本:
本地库依赖版本

二、运行项目

2.1 更新依赖

原生Flutter项目的依赖在替换后,需要重新更新下

flutter cleanflutter pub get 更新依赖

2.2 鸿蒙签名

自己调试的话自动签名即可,如果是公司需要在AGC注册应用申请证书,详情可查看官方文档
签名

2.3 项目运行

这里有两种方式

  • 通过VsCode运行
    首先是直接在flutter编辑器的终端里执行
flutter run

执行完后会自动执行构建hap包,打包结束后就可以跑在鸿蒙真机上
也可以采用第二种方法

  • 通过DevEco运行
    在flutter编辑器的终端里执行
flutter build hap

然后在DevEco里点击Run即可运行

后面我会更新官方未适配库如何适配,敬请期待!