2017-02-10 488 views
0

我有一個shell腳本,定期運行以保持Android SDK在我的CI服務器上保持最新。我正在從:android update sdk --filter <foopackage>遷移到:sdkmanager <foopackage>安裝軟件包安裝是否也更新已安裝的軟件包

對於其標識符中沒有major.minor.patch的包(例如,platform-tools,toolsextras;*) - 這些將在先前的方法下隱式更新。閱讀文檔(https://developer.android.com/studio/command-line/sdkmanager.html),目前還不清楚sdkmanager <foopackage>是否會在軟件包已經安裝的情況下更新軟件包,或者僅在缺失時才安裝軟件包? (在這種情況下,sdkmanager --update <foopackage>也將被要求)

+0

當您在命令'(build-tools; 25.0.0)中傳遞版本'時,它會隱式地安裝包含該編號的包並且不會更新它。您將需要運行'update'命令來更新它們。 –

+0

同意。我對哪些軟件包會發生什麼情況感興趣,它們在其標識符中不包括版本,例如平臺工具,演員。 – Ben

回答

1

從文檔:

The packages argument is an SDK-style path as shown with the --list command, wrapped in quotes (for example, "build-tools;25.0.0" or "platforms;android-25")

--list給出了一個輸出類似:

Available Packages: 
Path        | Version  | Description      
-------       | -------  | -------       
add-ons;addon-g..._apis-google-23 | 1   | Google APIs      
add-ons;addon-g..._apis-google-24 | 1   | Google APIs      
add-ons;addon-g...e_gdk-google-19 | 11   | Glass Development Kit Preview  
build-tools;25.0.0    | 25.0.0  | Android SDK Build-Tools 25  
build-tools;25.0.1    | 25.0.1  | Android SDK Build-Tools 25.0.1 
build-tools;25.0.2    | 25.0.2  | Android SDK Build-Tools 25.0.2 
cmake;3.6.3155560     | 3.6.3155560 | CMake 3.6.3155560     
docs        | 1   | Documentation for Android SDK  
extras;android;gapid;3   | 3.1.0  | GPU Debugging tools    
extras;android;m2repository  | 43.0.0  | Android Support Repository  
extras;google;auto    | 1.1   | Android Auto Desktop Head Unit... 
extras;google;play_billing  | 5   | Google Play Billing Library  
extras;google;simulators   | 1   | Android Auto API Simulators  
extras;google;webdriver   | 2   | Google Web Driver     
extras;m2reposi...ut;1.0.0-alpha9 | 1   | ConstraintLayout for Android 1... 
extras;m2reposi...out;1.0.0-beta5 | 1   | ConstraintLayout for Android 1... 
lldb;2.2       | 2.2.3271982 | LLDB 2.2       
ndk-bundle      | 13.1.3345770 | NDK        
patcher;v4      | 1   | SDK Patch Applier v4    
platform-tools     | 25.0.3  | Android SDK Platform-Tools  
platforms;android-24    | 2   | Android SDK Platform 24   
platforms;android-25    | 3   | Android SDK Platform 25      
sources;android-25    | 1   | Sources for Android 25   
system-images;a...google_apis;x86 | 5   | Google APIs Intel x86 Atom Sys... 
system-images;a...ult;armeabi-v7a | 5   | ARM EABI v7a System Image   
system-images;a...google_apis;x86 | 3   | Google APIs Intel x86 Atom Sys... 
system-images;a...gle_apis;x86_64 | 3   | Google APIs Intel x86 Atom_64 ... 
tools        | 25.2.5  | Android SDK Tools 25.2.5   

Available Updates: 
ID       | Installed | Available 
-------     | ------- | ------- 
extras;google;m2repository | 42  | 43  

所以對於更新包,您需要通過Path列下的完整值。例如,以下命令sdkmanager "platform-tools"將更新平臺工具,因爲Path列中沒有它的版本。

但命令sdkmanager "build-tools"將拋出一個錯誤

Error: Failed to find package build-tools

所以,你需要通過安裝完整的價值/更新使用命令sdkmanager <foopackage>包。

但是,如果您使用sdkmanager --update它將安裝所有當前安裝的軟件包的更新。

+0

「sdkmanager」platform-tools「將更新平臺工具,因爲在Pathcolumn中沒有它的版本。」 - 你是說這是因爲它會是一個明智的實施,或者因爲你已經測試過它? – Ben

+1

我測試過了。 –

+0

不要粗魯 - 它只是一個古老的工具表現在一堆奇怪的方式,你不會從閱讀文檔合理期望! – Ben