现有 Flutter 项目支持鸿蒙

现有 Flutter 项目支持鸿蒙

最近这关税战打的是不亦说乎,从另一方面来说,国产替代浪潮奔涌,鸿蒙适配已成为一个必答题,这里面跨端框架是破局多 OS 割裂的最优解。比如 Flutter,之前有很多 app 可能是用 Flutter 做的,那么如何支持鸿蒙呢?

第一步:配置鸿蒙版 Flutter SDK

关于如何配置,大家可以查看前面的几篇文章,或者大家关注这个仓库[1],根据这个项目的说明,也是可以配置成功的。

使用最新的 Flutter SDK 3.22.1 构建 HarmonyOS 应用

这里面注意就是切换成为 3.22 的版本。

3.22 版本是去年发布的,目前已经能满足大部分场景的使用。

image-20250414173416884

第二步:项目添加鸿蒙侧的支持

配置好环境好,就可以使用这条命令完成对鸿蒙平台的支持

代码语言:javascript代码运行次数:0运行复制
flutter create --platforms ohos fluttertoharmony

然后大家可以看到在 apps 目录下新建一个项目,该项目运行鸿蒙平台适配和打包。

进入到 fluttertoharmony 目录,将 ohos 目录复制出来就完成了对鸿蒙平台的支持。

代码语言:javascript代码运行次数:0运行复制
jianguo@nutpi my_app %  tree -L 3
.
├── README.md
├── analysis_options.yaml
├── android
│   ├── app
│   │   ├── build.gradle
│   │   └── src
│   ├── build.gradle
│   ├── gradle
│   │   └── wrapper
│   ├── gradle.properties
│   ├── gradlew
│   ├── gradlew.bat
│   ├── local.properties
│   ├── my_app_android.iml
│   └── settings.gradle
├── ios
│   ├── Flutter
│   │   ├── AppFrameworkInfo.plist
│   │   ├── Debug.xcconfig
│   │   ├── Generated.xcconfig
│   │   ├── Release.xcconfig
│   │   └── flutter_export_environment.sh
│   ├── Runner
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets
│   │   ├── Base.lproj
│   │   ├── GeneratedPluginRegistrant.h
│   │   ├── GeneratedPluginRegistrant.m
│   │   ├── Info.plist
│   │   └── Runner-Bridging-Header.h
│   ├── Runner.xcodeproj
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace
│   │   └── xcshareddata
│   ├── Runner.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   └── RunnerTests
│       └── RunnerTests.swift
├── lib
│   └── main.dart
├── linux
│   ├── CMakeLists.txt
│   ├── flutter
│   │   ├── CMakeLists.txt
│   │   ├── generated_plugin_registrant
│   │   ├── generated_plugin_registrant.h
│   │   └── generated_plugins.cmake
│   ├── main
│   ├── my_application
│   └── my_application.h
├── macos
│   ├── Flutter
│   │   ├── Flutter-Debug.xcconfig
│   │   ├── Flutter-Release.xcconfig
│   │   ├── GeneratedPluginRegistrant.swift
│   │   └── ephemeral
│   ├── Runner
│   │   ├── AppDelegate.swift
│   │   ├── Assets.xcassets
│   │   ├── Base.lproj
│   │   ├── Configs
│   │   ├── DebugProfile.entitlements
│   │   ├── Info.plist
│   │   ├── MainFlutterWindow.swift
│   │   └── Release.entitlements
│   ├── Runner.xcodeproj
│   │   ├── project.pbxproj
│   │   ├── project.xcworkspace
│   │   └── xcshareddata
│   ├── Runner.xcworkspace
│   │   ├── contents.xcworkspacedata
│   │   └── xcshareddata
│   └── RunnerTests
│       └── RunnerTests.swift
├── my_app.iml
├── ohos
│   ├── AppScope
│   │   ├── app.json5
│   │   └── resources
│   ├── build-profile.json5
│   ├── entry
│   │   ├── build-profile.json5
│   │   ├── hvigorfile.ts
│   │   ├── oh-package.json5
│   │   └── src
│   ├── hvigor
│   │   └── hvigor-config.json5
│   ├── hvigorfile.ts
│   ├── local.properties
│   └── oh-package.json5
├── pubspec.lock
├── pubspec.yaml
├── test
│   └── widget_test.dart
├── web
│   ├── favicon.png
│   ├── icons
│   │   ├── Icon-192.png
│   │   ├── Icon-512.png
│   │   ├── Icon-maskable-192.png
│   │   └── Icon-maskable-512.png
│   ├── index.html
│   └── manifest.json
└── windows
    ├── CMakeLists.txt
    ├── flutter
    │   ├── CMakeLists.txt
    │   ├── generated_plugin_registrant
    │   ├── generated_plugin_registrant.h
    │   └── generated_plugins.cmake
    └── runner
        ├── CMakeLists.txt
        ├── Runner.rc
        ├── flutter_window.cpp
        ├── flutter_window.h
        ├── main.cpp
        ├── resource.h
        ├── resources
        ├── runner.exe.manifest
        ├── utils.cpp
        ├── utils.h
        ├── win32_window.cpp
        └── win32_window.h

46 directories, 79 files
jianguo@nutpi my_app %

第三步:三方库添加鸿蒙侧的适配

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

鸿蒙版 Flutter 三方库适配案例【screen_brightness】

适配好的可以学如下方式添加支持。

代码语言:javascript代码运行次数:0运行复制
dependency_overrides:
 video_player:
    git:
      url: ".git"
      path: "packages/video_player/video_player"
 camera:
    git:
      url: ".git"
      path: "packages/camera/camera"
 shared_preferences:
    git:
      url: ".git"
      path: "packages/shared_preferences/shared_preferences"
 url_launcher:
    git:
      url: ".git"
      path: "packages/url_launcher/url_launcher"
 path_provider:
    git:
      url: ".git"
      path: "packages/path_provider/path_provider"
 flutter_phone_direct_caller:
    git:
      url: ".git"
 flutter_sms:
    git:
      url: ".git"
 permission_handler:
    git:
      url: ".git"
      path: "permission_handler/"

 screen:
    git:
      url: ".git"
      path: .
image_gallery_saver:
    git:
      url: ".git"
      path: .
fluttertoast:
    git:
      url: ".git"
      path: "./"

第四步:打包上架

完成整个开发后,就打包上架,打包上架按照鸿蒙的打包上架流程操作就好。

坚果派

坚果派由坚果等人创建,团队拥有若干华为 HDE,以及若干其他领域的三十余位万粉博主运营。专注于分享的技术包括 HarmonyOS/OpenHarmony,ArkUI-X,元服务,服务卡片,华为自研语言,BlueOS 操作系统、团队成员聚集在北京、上海、广州、深圳、南京、杭州、苏州、宁夏等地。 聚焦“鸿蒙原生应用”、“智能物联”和“AI 赋能”、“人工智能”四大业务领域,依托华为开发者专家等强大的技术团队,以及涵盖需求、开发、测试、运维于一体的综合服务体系,赋能文旅、媒体、社交、家居、消费电子等行业客户,满足社区客户数字化升级转型的需求,帮助客户实现价值提升。 目前上架鸿蒙原生应用 18 款,三方库 72 个。

地址:

参考资料

[1] 关注这个仓库: .22.0-ohos

[2] 可以查看这个库:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-14,如有侵权请联系 cloudcommunity@tencent 删除打包flutter华为开发配置