You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter gen-l10n本地化问题:GitHub Actions编译失败及输出目录异常

解决方案

方案1:通过pubspec.yaml配置固定输出目录(推荐)

命令行指定--output-dir不生效,是因为Flutter官方的gen-l10n会优先读取pubspec.yaml中的配置。直接在配置文件里定义输出路径,确保本地和CI环境生成路径一致:

  1. 打开项目根目录的pubspec.yaml,在flutter节点下添加本地化输出配置:
flutter:
  generate: true
  localizations:
    sdk: flutter
    locales:
      - en  # 你的本地化语言列表
      - zh
    output-dir: lib/flutter_gen/l10n  # 指定输出到lib目录下
    output-class: AppLocalizations  # 保持类名和之前一致
  1. 执行flutter gen-l10n,此时文件会生成到lib/flutter_gen/l10n目录下,而非.dart_tool。

  2. 修改代码中的导入路径,替换为项目包名的绝对导入:

import 'package:你的项目名称/flutter_gen/l10n/app_localizations.dart';

(注:你的项目名称是pubspec.yaml中name字段的值)

方案2:在GitHub Actions中显式执行生成命令

如果不想改动输出目录,只需在CI构建流程中先执行本地化文件生成步骤,确保.dart_tool下的文件存在:

在你的GitHub Actions workflow文件(如.github/workflows/build.yml)中,添加生成步骤:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.x'  # 指定你的Flutter版本
      - name: Get dependencies
        run: flutter pub get
      - name: Generate localization files
        run: flutter gen-l10n  # 显式执行生成命令
      - name: Build app
        run: flutter build apk  # 替换为你的构建命令

关键说明

  • 本地环境中你可能手动执行过flutter gen-l10n,但GitHub Actions的CI环境是全新的,默认不会自动生成本地化文件,必须显式添加生成步骤。
  • 如果同时配置了pubspec.yaml的output-dir和命令行参数,pubspec的配置会覆盖命令行参数,这也是你之前指定--output-dir无效的原因。

内容的提问来源于stack exchange,提问作者Arty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 15:52:13