鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙

鸿蒙Flutter实战:现有Flutter项目支持鸿蒙

背景

原来使用Flutter开发的项目,需要适配鸿蒙。

环境搭建

见文章[鸿蒙Flutter适配指南],搭建开发环境,使用fvm管理多版本SDK。

模块化

原有项目保持模块化,拆分为 apps/common/components/modules/plugins等目录,如下所示:

1. 2├── README.md 3├── analysis_options.yaml 4├── melos.yaml 5├── melos_ogw-flutter.iml 6├── node_modules 7├── packages 8│ ├── README.md 9│ ├── apps 10│ │ ├── app 11│ │ ├── dsm_app 12│ │ ├── ohos_app 13│ │ └── web 14│ ├── common 15│ │ ├── domains 16│ │ ├── extensions 17│ │ ├── services 18│ │ └── widgets 19│ ├── components 20│ │ ├── image_uploader 21│ │ ├── player 22│ │ └── scroll_banner 23│ ├── modules 24│ │ ├── address 25│ │ ├── community 26│ │ ├── home 27│ │ ├── invoice 28│ │ ├── me 29│ │ ├── message 30│ │ ├── order 31│ │ ├── shop 32│ │ ├── support 33│ │ ├── updater 34│ └── plugins 35│ ├── image_picker 36│ ├── printer 37├── pubspec.lock 38├── pubspec.yaml 39└── yarn.lock
  1. plugins 是依赖于原生平台的插件,

  2. components 是平台无关的组件,

  3. common 里面是领域对象,小组件,服务类,扩展等,平台无关,里面均为纯 Dart 代码。

  4. apps 是应用外套,通过组合不同的模块,向不同的平台打包。

  5. 使用 melos 管理多包仓库。

其中apps下的项目,则为需要打包成各平台,各app的入口项目。里面主要为项目配置代码,模块依赖配置,以及特定的平台适配代码。

在apps目录下新建鸿蒙项目,先把壳项目在鸿蒙中跑起来,确保没有问题。依次再添加依赖项,首先添加纯dart编写的包,再添加依赖于原生代码/插件的包。注意挨个添加依赖,不要一次添加太多依赖,方便排查定位问题,

解决版本依赖问题,鸿蒙Flutter项目目前需要依赖于3.7版本,如果原项目使用了更低的版本,则可将原项目SDK依赖升级至3.7;如果原项目SDK版本高于3.7,则有两种方案:一种是降级原项目SDK依赖为3.7;另外一种是使用多分支方案。

特定平台工程

在 apps 目录下新建一个项目,该项目运行鸿蒙平台适配和打包。

1flutter create --platforms ohos ohos_app

目录结构如下所示:

1. 2├── README.md 3├── analysis_options.yaml 4├── assets 5│ ├── icons 6│ │ ├── 2.0x 7│ │ ├── 3.0x 8│ │ └── placeholder.png 9│ └── images 10│ ├── 2.0x 11│ └── 3.0x 12├── build 13│ ├── ... 14├── env 15├── lib 16│ ├── config 17│ │ ├── easy_refresh.dart 18│ │ ├── routes.dart 19│ │ └── theme.dart 20│ └── main.dart 21├── ohos 22│ ├── AppScope 23│ │ ├── app.json5 24│ │ └── resources 25│ ├── build-profile.json5 26│ ├── entry 27│ │ ├── build 28│ │ ├── build-profile.json5 29│ │ ├── hvigorfile.ts 30│ │ ├── oh-package-lock.json5 31│ │ ├── oh-package.json5 32│ │ ├── oh_modules 33│ │ └── src 34│ ├── har 35│ │ ├── ... 36│ ├── hvigor 37│ │ └── hvigor-config.json5 38│ ├── hvigorfile.ts 39│ ├── local.properties 40│ ├── oh-package-lock.json5 41│ ├── oh-package.json5 42│ └── oh_modules 43│ └── ... 44├── pubspec.lock 45└── pubspec.yaml

可以看到,该项目只是一个壳工程,没有太多代码,主要为项目的一些特定配置,如主题、路由等,以及App入口初始化配置。

编辑 pubspec.yaml 文件,添加组件和模块依赖。

1environment: 2 sdk: '>=2.19.6 <3.0.0' 3dependencies: 4 flutter: 5 sdk: flutter 6 flutter_localizations: 7 sdk: flutter 8 # 下拉刷新 9 easy_refresh: ^3.0.4+2 10 flutter_dotenv: ^5.1.0 11 go_router: ^6.0.0 12 13 # 领域对象 14 domains: 15 path: '../../common/domains' 16 services: 17 path: '../../common/services' 18 widgets: 19 path: '../../common/widgets' 20 address: 21 path: '../../modules/address' 22 support: 23 path: '../../modules/support' 24 me: 25 path: '../../modules/me' 26 message: 27 path: '../../modules/message' 28 order: 29 path: '../../modules/order' 30 shop: 31 path: '../../modules/shop' 32 home: 33 path: '../../modules/home'

配置对特定插件进行鸿蒙化适配

部分第三方插件以及插件依赖的其他库,如果没有适配鸿蒙,则可以通过 override配置鸿蒙化的版本

1dependency_overrides: 2 # ohos 3 path_provider: 4 git: 5 url: "https://gitee.com/openharmony-sig/flutter_packages.git" 6 path: "packages/path_provider/path_provider"

编译运行

运行 Flutter 项目,查看相关日志和运行界面,针对出现的问题再单独处理。

查看日志,可以在运行Flutter处的IDE调试控制台查看 Flutter 项目日志,可以使用 hdc hilog 命令或DevEco 查看系统日志。

点赞
收藏

评论区

加载中...

相关推荐

鸿蒙Flutter实战:12-使用模拟器开发调试

鸿蒙Flutter实战:使用模拟器开发调试前提开发电脑需为M系列芯片(ARM架构)的Mac电脑目前Flutter鸿蒙开发,无法使用X86架构的模拟器,只能使用ARM架构的模拟器创建项目等开发环境搭建成功,使用fluttercreate命令创建项目新项目ba

鸿蒙Flutter实战:02-Windows环境搭建踩坑指南

鸿蒙Flutter实战:02Windows环境搭建踩坑指南环境搭建1.下载FlutterSDK,配置环境变量鸿蒙FlutterSDK需要在。目前建议下载dev分支代码。需要配置以下用户变量注意鸿蒙开发需要安装Java和配置相关变量bashfluttersd

鸿蒙Flutter实战:04-如何使用DevTools调试Webview

鸿蒙Flutter如何使用DevTools调试Webview在《鸿蒙Flutter开发中集成Webview》,介绍了如果在Flutter中集成Webview.本文则为Webview的调试方法。配置WebviewCustomView.ets文件中,在生命周期

鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件

使用ArkTs开发Flutter鸿蒙平台插件本文讲述如何开发一个Flutter鸿蒙插件,如何实现Flutter与鸿蒙的混合开发,以及双端消息通信。Flutter侧,编写MethodChanneldartconstMethodChannelmethodCha

鸿蒙Flutter实战:07-混合开发

鸿蒙Flutter实战:混合开发鸿蒙Flutter混合开发主要有两种形式。1.基于har将fluttermodule打包成har包,在原生鸿蒙项目中,以har包的方式引入。其优点是主项目开发者可以不关注Flutter实现,不需要安装配置Flutter开发环

鸿蒙Flutter实战:08-如何调试代码

鸿蒙Flutter实战:如何调试代码1.环境搭建参考文章搭建好开发环境。IDE安装好DevEco和VsCode/AndroidStudio。2.配置如果是vscode,可以在.vscode/launch.json文件中,增加以下配置json"name":"