您似乎只需要下载所需的部分。在没有其他参数的情况下执行 aandroid update sdk --no-ui
会下载所有内容,因此既耗时又浪费。
该--filter
参数用于确定您需要的软件包,并在每次您想要进行更新时使用它们。这里有关于如何做到这一点的更详细的解释(这里还有更多关于android
命令的解释)。
如果定期更改需要的组件(例如针对不同的平台),您可以创建一个脚本,删除各种文件夹下不需要的组件(例如 API 下android-sdk-linux/platforms
),然后仅使用您想要的组件重新创建.
该android list sdk -e
命令将给出可与该--filter
参数一起使用的软件包的扩展列表,因此只允许安装特定组件。
在查看了使用命令自动接受许可证提示的出色答案自动化方式之后expect
,我最终安装和更新了我需要的组件,而无需下载其他所有内容(在 Ubuntu 上):
expect -c '
set timeout -1;
spawn /opt/android-sdk-linux/tools/android update sdk --no-ui --filter tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository;
expect {
"Do you accept the license" { exp_send "y\r" ; exp_continue }
eof
}
'
请注意tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository
使用参数指定的组件,这些组件--filter
将下载限制为仅这些部分。
运行此脚本一次只会下载这些组件。再次运行确定没有什么需要更新,但确实给出了一组令人困惑的消息:
Error: Ignoring unknown package filter 'tools'
Error: Ignoring unknown package filter 'build-tools-20.0.0'
Error: Ignoring unknown package filter 'platform-tools'
Error: Ignoring unknown package filter 'android-16'
Error: Ignoring unknown package filter 'extra-android-support'
Error: Ignoring unknown package filter 'extra-android-m2repository'
Warning: The package filter removed all packages. There is nothing to install.
Please consider trying to update again without a package filter.
这些消息只是意味着没有更新——--filter
规范中包含的组件实际上并没有被卸载。