2017-02-10 237 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