Flutter Azure DevOps集成Firebase时提示未知选项'--app'如何解决?
问题修复方案
错误根因
error: unknown option '--app'报错:日志显示你安装的是firebase-tools@9.19.0,该旧版本的App Distribution分发命令使用的应用标识参数为--app_id,--app是v10及以上版本才支持的参数。你指定的Node.js版本为10.x,无法兼容最新版firebase-tools,导致npm默认安装了最后一个适配Node10的旧版本工具。- 路径报错:你在Bash脚本中使用的APK相对路径不准确,且Windows代理的工作目录结构和Linux环境不同,相对路径容易匹配失败。你已经通过CopyFiles任务将所有APK复制到了构建暂存目录,直接从该目录取值即可避免路径问题。
- 冗余操作:你在CmdLine任务和Bash任务中重复安装了两次firebase-tools,无实际意义还会浪费构建时间。
- 日志中的fsevents相关警告是可选依赖的平台兼容提示,Windows环境下默认跳过安装,不影响firebase-tools的正常运行,无需处理。
修复步骤
- 升级Node.js版本到16.x及以上,满足最新版firebase-tools的运行要求
- 删除重复的firebase-tools安装步骤,仅保留一次全局安装即可
- 修正APK路径,直接从构建暂存目录读取APK文件
- 若你不想升级Node.js版本,也可以直接将命令中的
--app参数改为--app_id适配旧版firebase-tools
修改后的完整yml配置
# Flutter build variables: app_token: 1:403... firebase_token: 1//dsads... trigger: - develop jobs: - job: Android pool: vmImage: 'windows-latest' steps: - task: FlutterInstall@0 inputs: channel: 'stable' version: 'latest' - task: FlutterBuild@0 inputs: target: apk - task: CopyFiles@2 inputs: contents: '**/*release.apk' targetFolder: '$(build.artifactStagingDirectory)' flattenFolders: true # 将所有APK直接放到暂存目录根路径,避免层级嵌套匹配失败 - task: PublishBuildArtifacts@1 inputs: artifactName: 'myartifactname' pathtoPublish: '$(Build.ArtifactStagingDirectory)' - task: NodeTool@0 inputs: versionSpec: '18.x' # 升级Node版本适配最新firebase-tools displayName: 'Install Node.js' - task: CmdLine@2 inputs: script: 'npm install -g firebase-tools@latest' workingDirectory: '$(Agent.ToolsDirectory)' displayName: 'install firebase tools' - task: Bash@3 displayName: "Upload to firebase app distribution" inputs: targetType: "inline" script: | firebase appdistribution: distribute "$(Build.ArtifactStagingDirectory)/app-release.apk" \ --app "$(app_token)" \ --release-notes "From Azure Devops" \ --groups "testgroup" \ --token "$(firebase_token)"
内容的提问来源于stack exchange,提问作者Temp Azure
相关产品推荐
相关产品推荐

