5

這與"Uninstall old Android SDK versions"有關,除非我想在無頭Linux CI服務器上執行它(磁盤空間不足)。在命令行上卸載Android SDK的選定部分

android命令行工具是否提供用於刪除舊版SDK的選項?快速瀏覽一下,它可以刪除的唯一東西就是AVD。我忽略了什麼?

另外,我想我可以從SDK_HOME下手動刪除東西。但什麼東西可以安全地刪除?其他候選人比這些?

  • 我只需要支持API級別14了,所以我想我可以刪除platforms/下 東西一樣android-3android-4
  • docs(800MB),samples(300MB)
  • system-images怎麼樣?我是否需要android-18/armeabi-v7a/android-18/x86/如果我只想使用Gradle(和Ant)做自動化APK構建(不模擬器的東西)?

至少在刪除docs完全,下一次我跑android update sdk --no-ui,它開始再次獲取它們:

Downloading Documentation for Android SDK, API 19, revision 1 

我能避免update補充說,我扔掉了SDK的後面部分?

聲明:是的,磁盤很便宜,我真的應該添加更多。但現在在這個特定的服務器(8.5G磁盤)我沒有這個選項,但我仍然想要得到它運行Android 19的構建...

+0

不知道您是否使用Windows或Linux(或別的東西) – CJBS

+1

問題的第一句話:「[...]在無頭Linux CI服務器上」 – Jonik

回答

2

看來,你需要下載只是你需要的部分。在沒有其他參數的情況下執行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規範實際上並沒有卸載的組件。

3

任何東西,除了工具/一般可以用重新安裝了

android list sdk -a 

android update sdk --no-ui -a --filter <#index> 

我經常會吹走我的附加組件/和構建工具/文件夾,並重新安裝附加組件/和構建工具/。如果您需要自動化接受許可,另一個小竅門如下,至少,如果你在一個時間安裝它們一個:

android update sdk --no-ui -a --filter <#index> 0<<EOF 
y 
EOF 

的「Android」的命令本身生活在「SDK工具」內包或工具/目錄,所以你不能刪除它,因爲那樣你就不能安裝其他東西。我通常也不會刪除platform-tools /,因爲除非您安裝新版本/舊版本,否則您無法構建任何內容。如果你看看下< SDK文件夾>/SDK的Readme.txt,你會看到在第一段以下,以確認這一點:

歡迎的Android SDK!

Android SDK歸檔文件最初只包含基本的SDK工具。它不包含Android平臺或任何第三方庫。事實上,它甚至沒有開發應用程序所需的全部工具。

爲了開始開發應用程序,您必須使用SDK管理器安裝平臺工具和至少一個Android平臺版本。

1

從我已經能夠收集,你可以刪除目錄中/platforms/skins/system-images