在Jenkins运行的CI构建中,我有一个下载sdk的步骤,如果它不存在于机器上,那么它将下载并更新所需的一切。我的构建工作在我的macbook上,并在一个新鲜的流浪汉ubuntu机器上,但是当我在Jenkins主机上运行时,它总是失败。
我在shell脚本中有这个,它应该下载我需要的所有必要的android工具。
expect -c 'set timeout -1;
spawn android update sdk --all --filter build-tools-20.0.0,platform-tools,android-20,extra-android-support,extra-google-m2repository,extra-android-m2repository --no-ui;
expect {
"Do you accept the license" {
exp_send "y\r"
exp_continue
}
eof
}
catch wait result
exit [lindex \$result 3]'
它只是一个自动接受许可证的expect脚本。有问题的一行是
android update sdk --all --filter build-tools-20.0.0,platform-tools,android-20,extra-android-support,extra-google-m2repository,extra-android-m2repository --no-ui
构建机器上的输出是......
Error: Ignoring unknown package filter 'build-tools-20.0.0'
Error: Ignoring unknown package filter 'android-20'
Error: Ignoring unknown package filter 'extra-google-m2repository'
Error: Ignoring unknown package filter 'extra-android-m2repository'
这些ID存在于sdk中,所以我有点迷失,有什么想法?
答案 0 :(得分:3)
来自Xavier Ducrochet的Google+ Post的评论。
旧版本(< 23)为组件列表使用不同的XML架构,因此命中不同的URL以获取组件列表。此列表不包含API 20.
将工具升级到23,然后再次运行脚本它应该可以工作。
我只需要将工具升级到版本23,一切都按预期工作。