04. Flutter鸿蒙项目创建:生成第一个ohos项目并运行

在这里插入图片描述

环境通过后,第一件事不是写复杂页面,而是创建一个最小可运行的 ohos 项目。这个项目用来验证 Flutter SDK、鸿蒙工程、构建工具和设备调试链路是否真正打通。

在这里插入图片描述

创建项目

进入项目目录:

cd /d D:\flutter_ohos_workspace\projects
flutter create --platforms ohos hello_ohos
cd hello_ohos

创建后检查目录:

hello_ohos
├─ lib
│  └─ main.dart
├─ ohos
│  ├─ entry
│  ├─ build-profile.json5
│  └─ oh-package.json5
├─ pubspec.yaml
└─ test

如果没有 ohos 目录,先检查当前调用的 Flutter 是否来自 flutter_flutter\bin

写一个最小页面

lib/main.dart 改成下面的内容:

import 'package:flutter/material.dart';

void main() {
  runApp(const HelloOhosApp());
}

class HelloOhosApp extends StatelessWidget {
  const HelloOhosApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Hello OpenHarmony',
      theme: ThemeData(
        colorSchemeSeed: Colors.blue,
        useMaterial3: true,
      ),
      home: const HomePage(),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({super.key});

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Flutter 鸿蒙')),
      body: const Center(
        child: Text(
          '第一个 Flutter 鸿蒙应用',
          style: TextStyle(fontSize: 22, fontWeight: FontWeight.w600),
        ),
      ),
    );
  }
}

拉取依赖并运行

执行:

flutter pub get
flutter devices

如果能看到设备:

flutter run --debug -d <deviceId>

如果只有一个设备,可以省略 -d

flutter run --debug

第一次运行时间会比较长,因为需要下载缓存、构建鸿蒙工程并安装应用。

构建 hap 包

调试跑通后,再验证 release 构建:

flutter build hap --release

常见产物路径:

ohos/entry/build/default/outputs/default/entry-default-signed.hap

手动安装:

hdc install ohos/entry/build/default/outputs/default/entry-default-signed.hap

如果设备不止一个,使用:

hdc -t <deviceId> install ohos/entry/build/default/outputs/default/entry-default-signed.hap

项目创建检查

在这里插入图片描述

第一次创建项目只做一件事:保证最小页面能在鸿蒙设备上运行。不要同时改包名、签名、依赖、资源、原生插件。越多变量同时变化,越难定位问题。

把入口文件拆开

最小页面跑通后,可以把 main.dart 拆成入口和 App 配置两部分。后面增加页面、主题、路由时,就不需要把所有代码堆在一个文件里。

lib
├─ main.dart
└─ app.dart

main.dart

import 'package:flutter/material.dart';
import 'app.dart';

void main() {
  runApp(const HelloOhosApp());
}

app.dart

import 'package:flutter/material.dart';

class HelloOhosApp extends StatelessWidget {
  const HelloOhosApp({super.key});

  
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(colorSchemeSeed: Colors.blue, useMaterial3: true),
      home: const Scaffold(
        body: Center(child: Text('Hello OpenHarmony')),
      ),
    );
  }
}

创建失败的几个典型原因

flutter create --platforms ohos 失败时,常见原因集中在三类:

1. 当前 flutter 不是 flutter_flutter 仓库里的命令
2. DevEco SDK 变量没有配置完整
3. 项目路径过深、包含特殊字符或跨磁盘引用插件

先执行:

where flutter
flutter doctor -v

确认命令来源和 OpenHarmony 检查都正常,再重新创建项目。不要在失败目录里反复执行创建命令,目录已经生成一半时更容易出现残留配置。

第一次运行失败时的定位顺序

创建项目后运行失败,按下面顺序排查:

1. 当前目录是不是项目根目录
2. 项目中是否存在 ohos 目录
3. flutter pub get 是否成功
4. flutter devices 是否能看到设备
5. flutter run 输出的第一处错误是什么

不要直接删项目重建。第一次失败的日志通常最有价值,能看出是依赖问题、设备问题还是鸿蒙构建问题。

保留一个最小 Demo 分支

真实项目可以保留一个最小可运行分支或目录:

projects
├─ hello_ohos_min
└─ business_app

当业务项目构建失败时,先运行 hello_ohos_min。如果最小项目也失败,说明环境或设备有问题;如果最小项目正常,说明业务项目自身配置或依赖有问题。
通常最有价值,能看出是依赖问题、设备问题还是鸿蒙构建问题。

保留一个最小 Demo 分支

真实项目可以保留一个最小可运行分支或目录:

projects
├─ hello_ohos_min
└─ business_app

当业务项目构建失败时,先运行 hello_ohos_min。如果最小项目也失败,说明环境或设备有问题;如果最小项目正常,说明业务项目自身配置或依赖有问题。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐