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

构建Android CI Docker镜像:管道命令输出重定向/dev/null问题

解决Android SDK Manager日志过大且许可未正确接受的问题

你的问题出在**后台运行命令(&)**和重定向的位置上——当你给第二个命令加了&让它后台运行时,echo "y"的输入无法正确传递给后台的sdkmanager进程,导致它没收到接受许可的确认,自然安装失败。

正确的命令写法

你需要对每个sdkmanager命令单独重定向输出,但保留echo "y"的管道输入(因为sdkmanager需要从标准输入接收y来确认许可)。修改后的命令如下:

echo "y" | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-27" > /dev/null 2>&1 && \
echo "y" | $ANDROID_HOME/tools/bin/sdkmanager "tools" "platform-tools" > /dev/null 2>&1

更简洁的优化方案

其实你可以把所有要安装的组件合并到一个sdkmanager命令里,这样只需要一次echo "y"就能完成所有许可确认,同时只做一次重定向:

echo "y" | $ANDROID_HOME/tools/bin/sdkmanager "platforms;android-27" "tools" "platform-tools" > /dev/null 2>&1

原理说明

  • > /dev/null:将命令的**标准输出(stdout)**丢弃到空设备
  • 2>&1:将**标准错误(stderr)**重定向到和标准输出相同的位置(也就是/dev/null),这样所有日志内容都会被丢弃
  • 管道|是把echo "y"的输出(也就是字符y)传给sdkmanager的标准输入(stdin),这个过程不受输出重定向的影响,所以sdkmanager能正常收到许可确认。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:42:52