现有Flutter项目支持鸿蒙-环境搭建

使用 Flutter SDK 3.22.0

SDK 安装

准备工作

1.安装 DevEco Studio NEXT IDE, 注意版本应该是 Next,当前最新的是 5.0.3

2.安装Git, 如果要同时适配安卓,需要安装Android Studio; 如果要适配ios,需要安装Xcode

Mac 安装(推荐)

环境变量配置

# Flutter Mirror
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

# HarmonyOS SDK
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents/
export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin
export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin

Windows 安装

配置用户变量

FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn

PUB_HOSTED_URL=https://pub.flutter-io.cn

DEVECO_SDK_HOME=C:\Program Files\Huawei\DevEco Studio\sdk

JAVA_HOME=C:\Program Files\Huawei\DevEco Studio\jbr

配置环境变量

编辑 PATH,添加以下路径

C:\Program Files\Huawei\DevEco Studio\tools\ohpm\bin

C:\Program Files\Huawei\DevEco Studio\tools\hvigor\bin

C:\Program Files\Huawei\DevEco Studio\tools\node

管理多个 Flutter 版本

如果在项目开发中,需要使用多个 Flutter 版本,可以考虑使用 fvm

  1. 安装 FVM
  2. 使用 fvm 官方 flutter 版本
fvm install 3.22.0
  1. 安装自定义鸿蒙版本,进入 fvm/version 目录,通常位于用户目录下,如 ~/fvm/versions/3.22.0, 拷贝仓库并重命名为 custom_x.y.z的名字
git clone https://gitee.com/openharmony-sig/flutter_flutter.git custom_3.22.0
  1. 在项目中使用单独的 flutter sdk 版本, 在项目目录中执行:
fvm use custom_3.22.0

接下来使用 fvm list 命令查看 SDK版本 列表。

┌───────────────┬─────────┬─────────────────┬──────────────┬──────────────┬────────┬───────┐
│ Version       │ Channel │ Flutter Version │ Dart Version │ Release Date │ Global │ Local │
├───────────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ custom_3.22.0 │         │ Need setup      │              │              │        │       │
├───────────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ 3.22.0        │ stable  │ 3.22.0          │ 3.4.0        │ May 13, 2024 │ ●      │       │
└───────────────┴─────────┴─────────────────┴──────────────┴──────────────┴────────┴───────┘

可以看到,SDK中出现了两个版本,其中使用命令 fvm global 3.22.0 将 官方的3.22.0 设置成了全局默认版本。鸿蒙化的 SDK 需要配置安装,我们稍后进入项目,执行安装。

常见问题

  1. 运行 flutter doctor 出现 Error: Unable to find git in your PATH.

执行以下命令

git config --global --add safe.directory '*'

项目配置

1.进入项目根目录,如果项目还未创建,则使用 flutter create 命令创建项目

flutter create my_app

2.在当前项目目录,设置使用的 Flutter SDK 版本

fvm use custom_3.22.0

此时会自动安装 sdk 版本,运行成功后如果再运行 fvm list, 可以看到 SDK 已经准备就绪。

┌───────────────┬─────────┬─────────────────┬──────────────┬──────────────┬────────┬───────┐
│ Version       │ Channel │ Flutter Version │ Dart Version │ Release Date │ Global │ Local │
├───────────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤
│ custom_3.22.0 │         │ 3.22.0-ohos     │ 3.4.0        │              │        │       │
├───────────────┼─────────┼─────────────────┼──────────────┼──────────────┼────────┼───────┤

同时,配置命令执行完成后,将会在项目目录中创建 .fvm 目录,里面 flutter_sdk 会软连接到实际的 custom_3.22.0 SDK 目录。

查看 .vscode/settings.json 文件可以发现,自动创建了一条配置 flutter sdk 的项目:

"dart.flutterSdkPath": ".fvm/versions/custom_3.22.0"

如果项目使用了 melos, 则需要在 melos.yaml 文件的底部,添加以下配置,使得 melos 可以使用自定义的 flutter sdk

sdkPath: .fvm/versions/custom_3.22.0

3.如果项目已经创建,还未添加鸿蒙平台支持,则使用以下命令添加鸿蒙平台支持。

flutter create --platforms ohos .

其中,.代表当前目录。

目录结构类似如下所示

├── README.md
├── analysis_options.yaml
├── assets
├── build
├── env
├── lib
│   ├── config
│   └── main.dart
├── melos_ohos_app.iml
├── ohos
│   ├── AppScope
│   ├── build-profile.json5
│   ├── entry
│   ├── har
│   ├── hvigor
│   ├── hvigorfile.ts
│   ├── local.properties
│   ├── oh-package-lock.json5
│   ├── oh-package.json5
│   └── oh_modules
├── pubspec.lock
├── pubspec.yaml
└── pubspec_overrides.yaml

创建命令执行成功后,项目中会出现 ohos目录,这里面存放的就是鸿蒙平台的相关代码。

签名

1.在运行项目前,先对项目进行签名,否则在运行过程中会出现这样的错误

请通过DevEco Studio打开ohos工程后配置调试签名(File -> Project Structure -> Signing Configs 勾选Automatically generate signature)

2.用 DevEco 打开上面的 ohos 目录,注意不是项目目录,是项目下面的 ohos 鸿蒙目录,然后根据提示依次打开 File -> Project Structure -> Signing Configs, 点击自动签名即可。

3.签名成功后,文件 ohos/build-profile.json5 会自动更新,里面的字段 signingConfigs 出现相应的签名配置信息。

运行

运行 Flutter 项目,在项目根目录使用 fvm flutter run 或者在 IDE 中点击运行按钮

参考资料

  • FVM
  • 鸿蒙Flutter实战:01-搭建开发环境
  • 鸿蒙 Flutter 3.22.0
### 鸿蒙系统上开发 Flutter 项目的概述 鸿蒙系统(HarmonyOS)是华为推出的一款分布式操作系统,旨在支持多种设备和平台。Flutter 是一个跨平台的 UI 框架,允许开发者使用 Dart 编程语言构建高性能的应用程序。尽管 Flutter 官方尚未完全支持 HarmonyOS,但开发者可以通过一些第三方工具和资源实现兼容性[^1]。 #### 兼容性分析 在 HarmonyOS 上运行 Flutter 应用需要解决以下关键问题: - **平台支持**:Flutter 的核心架构依赖于 Android 和 iOS 的原生功能,因此需要额外的适配层来支持 HarmonyOS。 - **API 调用**:HarmonyOS 提供了独特的 API 集合,可能与 Flutter现有插件不兼容。开发者需要创建或寻找已有的鸿蒙专用插件[^2]。 - **编译工具链**:需要确保 Flutter 项目能够通过 DevEco Studio 或其他工具链进行编译和部署。 #### 开发环境搭建 为了在鸿蒙系统上开发 Flutter 项目,可以参考以下步骤: 1. **安装必要的开发工具**:DevEco Studio 是华为提供的官方 IDE,支持 HarmonyOS 应用的开发[^3]。虽然它目前没有直接支持 Flutter 的选项,但可以通过配置自定义工具链实现兼容。 2. **配置 Flutter 环境**:确保本地安装了最新版本的 Flutter SDK,并将其与鸿蒙开发环境集成。这可能需要手动调整项目的 `build.gradle` 文件以适应鸿蒙的构建需求[^4]。 ```gradle android { defaultConfig { // 添加鸿蒙相关的配置 ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } } ``` 3. **使用鸿蒙专用插件**:许多常见的 Flutter 插件可能无法直接在 HarmonyOS 上工作。开发者需要寻找或开发专门针对 HarmonyOS 的插件。例如,`huawei_map` 插件提供了地图功能的支持[^5]。 #### 示例代码 以下是一个简单的 Flutter 项目示例,展示了如何在鸿蒙系统上初始化应用: ```dart import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'HarmonyOS App', theme: ThemeData( primarySwatch: Colors.blue, ), home: MyHomePage(title: 'Flutter on HarmonyOS'), ); } } class MyHomePage extends StatefulWidget { MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override _MyHomePageState createState() => _MyHomePageState(); } class _MyHomePageState extends State<MyHomePage> { int _counter = 0; void _incrementCounter() { setState(() { _counter++; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(widget.title), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text( 'You have pushed the button this many times:', ), Text( '$_counter', style: Theme.of(context).textTheme.headline4, ), ], ), ), floatingActionButton: FloatingActionButton( onPressed: _incrementCounter, tooltip: 'Increment', child: Icon(Icons.add), ), ); } } ``` #### 教程和资源推荐 - **官方文档**:华为提供了详细的 HarmonyOS 开发文档,虽然主要面向原生开发,但也为跨平台开发者提供了基础指导[^6]。 - **社区支持**:GitHub 和 Stack Overflow 上有许多开发者分享了他们在鸿蒙系统上使用 Flutter经验。搜索关键词如“Flutter HarmonyOS”可以找到相关项目和解决方案[^7]。 - **第三方教程**:一些技术博客和 YouTube 频道也发布了关于如何将 Flutter 应用移植到 HarmonyOS 的教程[^8]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值