看來,你需要下載只是你需要的部分。在沒有其他參數的情況下執行android update sdk --no-ui
會下載所有內容,因此非常耗時且浪費。
--filter
參數用於確定您需要的軟件包,並在每次要執行更新時使用它們。關於如何做here(甚至更多的android
命令here)有更詳細的解釋。
如果定期更改所需的組件(例如,針對不同的平臺),可以創建一個腳本來刪除不需要的各種文件夾下的組件(例如android-sdk-linux/platforms
下的API),然後用你想要的組件。
android list sdk -e
命令將給出擴展的軟件包列表,這些軟件包可以與--filter
參數一起使用,從而允許只安裝特定的組件。
審查an excellent answer自動化的方式來使用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
}
'
請注意使用參數--filter
指定的組件tools,build-tools-20.0.0,platform-tools,android-16,extra-android-support,extra-android-m2repository
,該參數將下載限制爲僅限於這些部分。
一旦下載這些組件,就運行這個腳本。再次運行確定什麼需要更新,但確實給人一個混亂的一組消息:
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
規範實際上並沒有卸載的組件。
不知道您是否使用Windows或Linux(或別的東西) – CJBS
問題的第一句話:「[...]在無頭Linux CI服務器上」 – Jonik