Как установить Android SDK Build Tools в командной строке?


Answers

Как упоминалось в других ответах, вы можете использовать опцию --filter для ограничения установленных пакетов:

android update sdk --filter ...

В других ответах не упоминается, что вы можете использовать константные строковые идентификаторы вместо индексов (которые будут меняться) для параметров фильтра. Это полезно для автоматической установки или сценариев. Человек для опции --filter :

... Это также принимает идентификаторы, возвращаемые «list sdk --extended».

android list sdk --all --extended :

Packages available for installation or update: 97
----------
id: 1 or "tools"
     Type: Tool
     Desc: Android SDK Tools, revision 22.6.2
----------
id: 2 or "platform-tools"
     Type: PlatformTool
     Desc: Android SDK Platform-tools, revision 19.0.1
----------
id: 3 or "build-tools-19.0.3"
     Type: BuildTool
     Desc: Android SDK Build-tools, revision 19.0.3

Затем вы можете использовать идентификаторы строк в качестве параметров фильтра, чтобы точно указать нужные вам версии:

android update sdk --filter tools,platform-tools,build-tools-19.0.3 т. д.

Question

Я хочу настроить среду Android dev из командной строки и столкнуться с следующей проблемой:

wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz

после извлечения файла, запустите

tools/android update sdk --no-ui

Однако он работает слишком медленно

Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml

В результате ничего в инструментах сборки папок, и я хочу, это aapt и apkbuilder, так как я хочу построить apk из командной строки без муравья.




Однако он работает слишком медленно

Да, у меня была такая же проблема. Некоторые загрузки файлов чрезвычайно медленные (или, по крайней мере, они были в последние пару дней). Если вы хотите скачать все, что не так много, вы можете это сделать.

В результате ничего в инструментах сборки папок, и я хочу, это aapt и apkbuilder, так как я хочу построить apk из командной строки без муравья.

Вы позволили этому доработать?

Одна вещь, которую вы можете сделать, это отфильтровать пакеты, которые загружаются с помощью ключа -t .

Например:

tools/android update sdk --no-ui -t platform-tool

Когда я попробовал это, на днях я получил версию 18.0.0 установленных инструментов сборки. По какой-то причине последняя версия 18.0.1 не включена в этот фильтр, и единственный способ получить ее - установить все с помощью ключа --all .




Инструменты сборки ADB не будут загружаться автоматически, с помощью команды android update sdk --no-ui

Поэтому для установки типа Buil-Tool (в консоли):

android list sdk --all

Помните номер, который указан перед элементом, и выполните следующее:

android update sdk -u --all --filter <number>

команды должны быть введены в / YourFolder / android-sdk-linux / tools

Также для удаленной папки (например, сервер, открытый ssh):

**./android** list sdk --all
**./android** update sdk -u --all --filter <number>

Для простого списка типов пакетов ADB в терминале:

android list sdk

для установки всех пакетов:

android update sdk --no-ui

Или с фильтрами (запятая является разделителем):

android update sdk --no-ui --filter 3,5,8,14



Инструменты сборки не могли автоматически загружаться по умолчанию, как сказал Нейт в сообщении https://.com/a/19416222/1104031 .

Но я написал небольшой инструмент, который делает все для вас

Я использовал инструмент «ожидать» как данс в сообщении https://.com/a/17863931/1104031 . python27 , вам понадобятся только андроид-sdk и python27 .

Этот скрипт установит все инструменты сборки, все sdks и все, что вам нужно для автоматической сборки:

import subprocess,re,sys

w = subprocess.check_output(["android", "list", "sdk", "--all"])
lines = w.split("\n")
tools = filter(lambda x: "Build-tools" in x, lines)
filters = []
for tool in tools:
  m = re.search("^\s+([0-9]+)-", tool)
  tool_no = m.group(1)
  filters.append(tool_no)

if len(filters) == 0:
  raise Exception("Not found build tools")


filters.extend(['extra', 'platform', 'platform-tool', 'tool'])

filter = ",".join(filters)

expect= '''set timeout -1;
spawn android update sdk --no-ui --all --filter %s;
expect {
  "Do you accept the license" { exp_send "y\\r" ; exp_continue }
  eof
}''' % (filter)

print expect

ret = subprocess.call(["expect", "-c", expect])
sys.exit(ret)



Пытаться

1. Перечислите все пакеты

android list sdk --all

2. Установите пакеты, используя следующую команду

android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 



Я просто потратил время на получение зависимостей sdk от android, установленных через командную строку, и поскольку документации, которая поставляется с инструментами и в Интернете, крайне не хватает, я думал, что опубликую то, что я открыл здесь.

Я работаю с android sdk r24.4.1 для linux . Есть две команды, которые вы можете запустить для отображения доступных пакетов:

android list sdk

и тем более исчерпывающим:

android list sdk --all

Номера пакетов для определенных пакетов различаются для каждой команды выше! Например, предыдущий перечисляет пакет API 23.1 revision 3 как пакет #3 а последний перечисляет его как #29 .

Теперь, используя команду android, можно установить два разных способа.

tools/android update sdk --no-ui --filter <package number>

а также

tools/android update sdk -u -a -t <package number>

Учитывая, что команды установки могут принимать пакет # в качестве параметра, какой номер пакета вы используете? После многого поиска в Интернете и проб и ошибок, я обнаружил, что

android update sdk --no-ui --filter использует номера пакетов из android list sdk

а также

android update sdk -u -a -t использует номера пакетов из android list sdk --all

Другими словами - для установки версии API 23.1 revision 3 вы можете:

android update sdk --no-ui --filter 3

или

android update sdk -u -a -t 29

Сумасшедший, но он работает.




Вдохновленный ответами @ i4niac & @ Aurélien Lambert, вот что я придумал

csv_update_numbers=$(./android list sdk --all | grep 'Android SDK Build-tools' | grep -v 'Obsolete' | sed 's/\(.*\)\- A.*/\1/'|sed '/^$/d'|sed -e 's/^[ \t]*//'| tr '\n' ',')
csv_update_numbers_without_trailing_comma=${csv_update_numbers%?}

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | ./android update sdk --all -u -t $csv_update_numbers_without_trailing_comma

объяснение

  • получите список номеров, разделенных запятыми, которые являются индексами пакетов инструментов сборки в результате команды android list sdk --all (Игнорирование устаревших пакетов).
  • продолжайте бросать «y» на терминал каждые несколько миллисекунд, чтобы принять лицензии.



Я попробовал это для обновления, и все получилось!

echo y | $ANDROID_HOME/tools/android update sdk --no-ui





Related