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

如何在CI系统中用单行命令自动接受Flutter所需Android SDK许可证?

自动接受Android SDK许可证的可行命令行方案

针对CI环境中Flutter构建时自动处理flutter doctor --android-licenses的问题,你可以尝试以下几种可靠方案:

1. 用Android SDK原生sdkmanager工具直接处理

绕开flutter doctor,直接调用Android SDK自带的sdkmanager批量接受许可证,兼容性更强:

while true; do echo "y"; done | sdkmanager --licenses

这个命令会持续输出y,自动响应所有许可证确认提示,无需依赖yes工具(部分轻量CI镜像默认未预装该工具)。

2. 预先创建许可证文件

如果CI环境允许提前配置,可直接生成Android SDK许可证文件跳过交互:

mkdir -p $ANDROID_HOME/licenses
# 写入对应版本的许可证哈希值,以下为常见版本示例
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license

注意:哈希值需匹配你的Android SDK版本,可从本地已接受许可证的环境中复制对应文件内容。

3. Windows CI环境适配(PowerShell)

若CI基于Windows,可使用PowerShell循环输出确认指令:

for ($i=0; $i -lt 10; $i++) { Write-Output 'y' } | flutter doctor --android-licenses

循环次数可根据实际需要调整,确保覆盖所有许可证提示。

问题说明

你之前遇到的yes未识别问题,是因为部分轻量CI镜像(如Alpine-based)默认未预装yes工具,因此直接用循环输出y的方式更可靠。优先推荐sdkmanager方案,它是Android SDK原生工具,不受Flutter版本更新影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:35:33