Skip to content

配置参考

flu_release.yaml 是 app-ship 上传引擎和 VSCode 发布中心共用的核心配置文件,放置在项目根目录中。本文档详细说明所有可用的配置字段。

📂 文件位置

your-flutter-project/
├── lib/
├── pubspec.yaml
└── flu_release.yaml    ← 发布配置文件

完整结构概览

yaml
# 构建配置
build:
  android: { ... }
  ios: { ... }

# 重试策略
retry:
  maxRetries: 3
  initialDelayMs: 1000
  backoffMultiplier: 2
  maxDelayMs: 30000

# 发布平台配置
publish:
  pgyer: { ... }
  huawei: { ... }
  xiaomi: { ... }
  oppo: { ... }
  vivo: { ... }
  tencent: { ... }
  app_store: { ... }
  harmony: { ... }

build — 构建配置

build.android

字段类型必填默认值说明
type'apk' | 'appbundle''apk'构建产物类型
flavorstring构建风味(如 productionstaging
targetstring构建入口文件
buildNamestring版本名称(覆盖 pubspec.yaml)
buildNumberstring构建号(覆盖 pubspec.yaml)
yaml
build:
  android:
    type: 'apk'
    flavor: 'production'

build.ios

字段类型必填默认值说明
schemestring'Runner'Xcode Scheme
exportMethodstring'app-store'导出方式:app-store / development / ad-hoc / enterprise
teamIdstringApple Team ID
configurationstring'Release'构建配置:Debug / Release
yaml
build:
  ios:
    scheme: 'Runner'
    exportMethod: 'app-store'
    teamId: 'ABCDE12345'

retry — 重试策略

上传过程中遇到网络波动时,系统会自动重试。采用 指数退避 策略,每次重试等待时间翻倍。

字段类型必填默认值说明
maxRetriesnumber3最大重试次数
initialDelayMsnumber1000首次重试等待时间(毫秒)
backoffMultipliernumber2退避乘数
maxDelayMsnumber30000最大等待时间(毫秒)
yaml
retry:
  maxRetries: 3
  initialDelayMs: 1000    # 第 1 次重试等 1s
  backoffMultiplier: 2    # 第 2 次等 2s,第 3 次等 4s
  maxDelayMs: 30000       # 等待时间不超过 30s

publish — 平台配置

每个平台都有 enable 字段控制是否启用,以及各自的认证参数。

各平台快速对照

平台标识必填认证详细文档
蒲公英pgyerapiKey蒲公英配置
华为huaweiauth.clientId + auth.clientSecret + appId华为配置
小米xiaomiauth.userName + auth.privateKey小米配置
OPPOoppoauth.clientId + auth.clientSecretOPPO 配置
vivovivoauth.accessKey + auth.accessSecretvivo 配置
腾讯应用宝tencentauth.appId + auth.appKey腾讯配置
App Storeapp_storeauth.appleId + auth.appPasswordApp Store 配置
鸿蒙harmonyauth.clientId + auth.clientSecret + appId鸿蒙配置

每个平台的详细配置说明见对应的 平台指南


🔐 环境变量

配置文件支持通过 ${VAR_NAME} 语法引用环境变量,强烈建议 将所有敏感凭证通过环境变量传入:

yaml
publish:
  pgyer:
    enable: true
    apiKey: '${PGYER_API_KEY}'

  huawei:
    enable: true
    auth:
      clientId: '${HUAWEI_CLIENT_ID}'
      clientSecret: '${HUAWEI_CLIENT_SECRET}'
    appId: '${HUAWEI_APP_ID}'

设置环境变量

macOS / Linux(添加到 ~/.bashrc~/.zshrc):

bash
export PGYER_API_KEY="your-api-key"
export HUAWEI_CLIENT_ID="your-client-id"
export HUAWEI_CLIENT_SECRET="your-client-secret"

Windows(PowerShell):

powershell
$env:PGYER_API_KEY = "your-api-key"

安全最佳实践

  1. 永远不要 将明文凭证提交到 Git:

    gitignore
    # .gitignore
    flu_release.yaml   # 如果包含明文凭证
  2. 推荐方案:提交一个 模板文件,使用环境变量引用:

    yaml
    # flu_release.yaml(可安全提交)
    publish:
      pgyer:
        enable: true
        apiKey: '${PGYER_API_KEY}'
  3. CI/CD 环境:在 CI 平台的密钥管理中配置环境变量


📋 完整配置示例

yaml
# flu_release.yaml — 完整配置示例

# 构建配置
build:
  android:
    type: 'apk'
  ios:
    scheme: 'Runner'
    exportMethod: 'app-store'
    teamId: 'ABCDE12345'

# 重试策略
retry:
  maxRetries: 3
  initialDelayMs: 1000
  backoffMultiplier: 2
  maxDelayMs: 30000

# 发布平台
publish:
  # 蒲公英 — 内测分发
  pgyer:
    enable: true
    apiKey: '${PGYER_API_KEY}'
    description: '新版本发布'

  # 华为 AppGallery
  huawei:
    enable: true
    auth:
      clientId: '${HUAWEI_CLIENT_ID}'
      clientSecret: '${HUAWEI_CLIENT_SECRET}'
    appId: 'C100xxxxx'
    releaseType: 'draft'

  # 小米应用商店
  xiaomi:
    enable: true
    auth:
      userName: '${XIAOMI_EMAIL}'
      privateKey: '${XIAOMI_API_PASSWORD}'
      publicKeyPath: './xiaomi-public-key.cer'
    uploadType: 'update'

  # OPPO 开放平台
  oppo:
    enable: true
    auth:
      clientId: '${OPPO_CLIENT_ID}'
      clientSecret: '${OPPO_CLIENT_SECRET}'

  # vivo 开发者平台
  vivo:
    enable: true
    auth:
      accessKey: '${VIVO_ACCESS_KEY}'
      accessSecret: '${VIVO_ACCESS_SECRET}'

  # 腾讯应用宝
  tencent:
    enable: true
    auth:
      appId: '${TENCENT_APP_ID}'
      appKey: '${TENCENT_APP_KEY}'

  # Apple App Store
  app_store:
    enable: true
    mode: 'app_store'
    appId: '123456789'
    auth:
      appleId: '${APPLE_ID}'
      appPassword: '${APPLE_APP_PASSWORD}'

  # 鸿蒙应用市场
  harmony:
    enable: true
    auth:
      clientId: '${HARMONY_CLIENT_ID}'
      clientSecret: '${HARMONY_CLIENT_SECRET}'
    appId: 'C100xxxxx'
    releaseType: 'draft'

Released under the MIT License.