作为一名长期奋战在Flutter跨平台开发一线的工程师,我深刻理解在鸿蒙(HarmonyOS)环境下进行Flutter开发的痛点。每次构建HAP包、清理缓存、同步资源这些重复性操作,不仅消耗大量时间,还容易因人为操作失误导致构建失败。这正是blue_bird_cli工具诞生的背景——它像一位不知疲倦的构建助手,将那些需要记忆复杂命令和参数的操作简化为几个直观的指令。
blue_bird_cli本质上是一个用Dart编写的全局命令行工具,通过封装Flutter和鸿蒙构建工具链的常用操作,为开发者提供了一套标准化的工作流。它的核心价值在于:
hvigorw的各种参数组合,通过bb build即可触发完整的构建流程提示:虽然blue_bird_cli简化了操作流程,但建议开发者仍要了解底层工具链的基本原理,这在排查复杂问题时非常有用。
在开始集成blue_bird_cli前,请确保开发环境满足以下基础条件:
安装过程非常简单,只需一行命令:
bash复制dart pub global activate blue_bird_cli
安装完成后,建议执行以下命令验证安装是否成功:
bash复制bb --version
如果看到版本号输出(如blue_bird_cli 1.2.0),说明安装正确。若提示"command not found",可能需要将Dart的全局包路径加入系统PATH:
~/.zshrc或~/.bashrc中添加export PATH="$PATH":"$HOME/.pub-cache/bin"%USERPROFILE%\AppData\Local\Pub\Cache\bin在鸿蒙项目的根目录下执行初始化命令:
bash复制bb init
这会在当前目录生成一个bb.yaml配置文件,其默认结构如下:
yaml复制# blue_bird 基础配置
project_name: my_hmos_app
build_commands:
debug: flutter build haps --debug
release: flutter build haps --release
resource_path: assets
hooks:
post_build: echo "构建完成!"
blue_bird_cli的核心是一个任务编排引擎,其工作流程可分为四个阶段:
bb.yaml中的指令定义和环境变量当执行bb build时,实际发生的操作序列是:
flutter pub get确保依赖最新hvigorw进行原生层构建bb build)支持多种构建模式:
bash复制# 调试模式构建
bb build --mode=debug
# 发布模式构建(自动使用release签名)
bb build --mode=release
# 指定目标平台(当项目支持多平台时)
bb build --target=ohos
构建过程中,控制台会输出彩色化的日志,关键信息会高亮显示。建议首次使用时添加-v参数查看详细日志:
bash复制bb build -v
bb sync)这个命令解决了Flutter与鸿蒙资源管理的痛点问题。它会:
resource_path指定的目录R.dartresources目录生成的资源类大致如下:
dart复制class R {
static const String imagesLogo = 'assets/images/logo.png';
static const String iconsHome = 'assets/icons/home.svg';
}
这样在代码中可以直接使用R.imagesLogo引用资源,避免硬编码路径字符串。
bb clean)相比简单的flutter clean,此命令执行更彻底的清理:
/build)/entry/build).dart_tool)--ide参数)通过bb.yaml可以定义不同环境的构建参数:
yaml复制environments:
dev:
build_command: flutter build haps --debug --dart-define=ENV=DEV
assets_path: assets/dev
prod:
build_command: flutter build haps --release --dart-define=ENV=PROD
assets_path: assets/prod
使用时指定环境参数:
bash复制bb build --env=prod
钩子(hook)允许在构建生命周期的特定节点插入自定义操作:
yaml复制hooks:
pre_build: echo "开始构建..."
post_build:
- cp ./build/haps/*.hap ./dist/
- ./scripts/upload_to_fir.sh
支持的事件节点包括:
pre_build:构建开始前post_build:构建成功后on_error:构建失败时鸿蒙SDK路径常包含空格(如Program Files),在bb.yaml中需要特殊处理:
yaml复制harmony_sdk: "/Applications/HarmonyOS SDK" # macOS示例
# 或
harmony_sdk: "C:\\Program Files\\HarmonyOS SDK" # Windows示例
工具内部会自动处理路径转义,确保hvigorw能正确调用。
鸿蒙构建日志通常非常冗长,可以通过以下配置过滤关键信息:
yaml复制log_filters:
includes: ["error", "warning", "BUILD SUCCESSFUL"]
excludes: ["Note:", "Skipping"]
推荐将签名信息存储在单独的配置文件中(不提交到Git),通过环境变量引用:
yaml复制signing_config: ${SIGNING_CONFIG_PATH}/harmony_sign.json
签名JSON文件格式:
json复制{
"storeFile": "path/to/keystore",
"storePassword": "password",
"keyAlias": "alias",
"keyPassword": "password"
}
在.github/workflows/build.yml中添加如下步骤:
yaml复制- name: Setup blue_bird_cli
run: dart pub global activate blue_bird_cli
- name: Build HAP
run: bb build --mode=release
env:
SIGNING_CONFIG_PATH: ${{ secrets.SIGNING_CONFIG_PATH }}
结合bb deploy可以实现完整的发布流程:
bash复制bb deploy --pipeline=app_store
对应的bb.yaml配置:
yaml复制deploy_pipelines:
app_store:
steps:
- bb sync
- bb build --mode=release
- ./scripts/notify_slack.sh
- ./scripts/upload_to_appgallery.sh
| 错误现象 | 可能原因 | 解决方案 |
|---|---|---|
hvigorw command not found |
鸿蒙环境未正确配置 | 检查DevEco Studio安装,确认hvigorw在PATH中 |
| 资源同步失败 | 路径包含中文或特殊字符 | 确保资源路径为英文,避免空格和特殊符号 |
| 构建产物缺失 | 输出目录配置错误 | 检查bb.yaml中的output_dir设置 |
查看详细日志:
bash复制bb build -v --stacktrace
手动执行子命令:
工具会在临时目录生成实际执行的脚本,路径会在-v模式下显示
检查环境变量:
bash复制bb debug --env
启用构建缓存:
在bb.yaml中添加:
yaml复制cache_enabled: true
cache_path: ./bb_cache
并行执行任务:
对于多模块项目,可以配置并行构建:
yaml复制parallel_build: true
资源增量同步:
默认情况下,bb sync会使用文件哈希检查,只同步变更的资源
经过三个月的生产环境验证,blue_bird_cli已稳定支持日均300+次的构建任务,将平均构建时间从原来的4分钟缩短至1分半钟。特别是在团队协作场景下,统一的构建流程消除了因环境差异导致的各种奇怪问题。