2017-02-10 14 views
0

У меня есть сценарий оболочки, периодически запускаемый, чтобы поддерживать Android SDK в актуальном состоянии на моем сервере CI. Я перехожу от: android update sdk --filter <foopackage> в: sdkmanager <foopackage>.Устанавливает ли установка пакета также обновление установленного пакета

Для пакетов без major.minor.patch в их идентификатора (например platform-tools, tools, то extras;*) - это было ранее обновляться неявно в рамках предыдущего подхода. Чтение документов (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