Jak zainstalować narzędzia do kompilacji zestawu SDK systemu Android w wierszu polecenia?

292

Chcę skonfigurować środowisko programistyczne Androida z wiersza polecenia i napotkałem następujący problem:

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

po rozpakowaniu pliku uruchom

tools/android update sdk --no-ui

Jednak działa zbyt wolno

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

Powoduje to, że nic w narzędziach do budowania folderów, a chcę, nie jest aapt i apkbuilder, ponieważ chcę budować apk z wiersza poleceń bez mrówki.

Zhenguo Yang
źródło

Odpowiedzi:

479

Domyślnie Menedżer SDK z wiersza poleceń nie zawiera narzędzi kompilacji na liście. Są w kategorii „przestarzałe”. Aby zobaczyć wszystkie dostępne pliki do pobrania, użyj

android list sdk --all

A następnie, aby uzyskać jeden z pakietów na tej liście z wiersza poleceń, użyj:

android update sdk -u -a -t <package no.>

Gdzie -u oznacza --no-ui, -a oznacza --all, a -t oznacza --filter.

Jeśli musisz zainstalować wiele pakietów:

aktualizacja Androida sdk -u -a -t 1,2,3,4, .., n 

Gdzie 1,2, .., n jest numerem pakietu wymienionym za pomocą powyższej komendy list

nsg
źródło
4
Jeśli brakuje Ci narzędzi do budowania, takich jak 18.1.1, to jest to właściwy sposób na zainstalowanie go za pomocą wiersza poleceń.
Cray
19
to trochę do bani, nie wymienili --allopcji w oficjalnych wskazówkach . Dziękuję Ci.
Alexander Malakhov
4
@DanielJonker Tak, to prawda. Po prostu powtórz polecenie „tak”, tzn. Echo tak | Aktualizacja Androida SDK - WSZYSTKIE - Narzędzia do filtrów --no-ui --force> / dev / null
NSG
4
echo "yes"można skrócić echo "y", ale i tak to nie działa we wszystkich przypadkach. W niektórych przypadkach możesz uzyskać więcej niż jeden monit o licencję r / n, w zależności od filtra i konkretnych pakietów. echo "y"odpowie tylko na pierwsze pytanie, ale nie na resztę. Staram się, aby działało to z yespoleceniem bez powodzenia.
i4niac
3
@AlexanderMalakhov Zgadzam się, jeśli twój system operacyjny hosta ma narzędzie, użycie go jest najlepszą opcją. Najpierw spojrzałem na oczekiwanie, ale w moim przypadku muszę uruchomić skrypt na pewnej dystrybucji Linuksa działającej w chmurze AWS. Ta dystrybucja nie wymaga instalacji i nie mam wystarczających uprawnień, aby ją zainstalować w ramach planu kompilacji. Po rozejrzeniu się, najlepszym rozwiązaniem, jakie znalazłem, jest <pre> <kod> # aktualizacja zestawu Android SDK na serwerze bezgłowym FILTER = narzędzie, platforma, android-20 (spać 5 i & podczas [1]; spać 1; echo y; gotowe ) \ | aktualizacja Androida sdk --no-ui --all \ --filter $ {FILTER} </code> </pre>
i4niac
140

Jak wspomniano w innych odpowiedziach, możesz użyć --filteropcji ograniczenia zainstalowanych pakietów:

android update sdk --filter ...

Inne odpowiedzi nie wspominają, że można użyć stałych identyfikatorów ciągu zamiast indeksów (które się zmienią) dla opcji filtrowania. Jest to pomocne w przypadku instalacji nienadzorowanych lub skryptowych. Człowiek dla --filteropcji:

... Akceptuje to także identyfikatory zwrócone przez '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

Następnie możesz użyć identyfikatorów ciągu jako opcji filtru, aby precyzyjnie określić żądane wersje:

android update sdk --filter tools,platform-tools,build-tools-19.0.3 itp

okradziony
źródło
27
+1 dla --extendedopcji, wyjaśniając, co należy zainstalować dla skryptów CI.
nhaarman
16
android updatebędzie również wymagać tej --allopcji, w przeciwnym razie zostanie wyświetlona pomoc użytkowania. Na przykład: android update sdk --no-ui --all --filter build-tools-21.1.0(i +1 dla --extendedopcji, która pozwala zobaczyć aliasy takie jak build-tools-21.1.0)
Petrus Repo
1
Gdzie jest człowiek dla opcji --filteri --extended?
Ciro Santilli 10 冠状 病 六四 事件 法轮功
2
Zgadzam się, że znacznie lepiej jest użyć ciągu zamiast liczby, która nie jest ustalona.
wisbucky
1
Szukałem tej --extendedopcji, aby móc napisać skrypt i użyć go na moim serwerze Continuous Integration Server, gdzie może on odświeżyć same zasoby SDK. Dobra wskazówka!
osayilgan
73

Wersja 25.2.3 (i wyższa) Android SDK Toolspakietu zawiera nowe narzędzie - sdkmanager - które upraszcza to zadanie instalowania narzędzi do budowania z wiersza poleceń.
Znajduje się w android_sdk/tools/binfolderze.

Zastosowanie (z dokumentacji ):

sdkmanager packages [options]

packagesArgumentem jest ścieżka SDK stylu, owinięte w cudzysłowie (na przykład, "build-tools;25.0.0"albo "platforms;android-25"). Możesz przekazać wiele ścieżek pakietów, oddzielonych spacją, ale każda z nich musi być owinięta własnym zestawem cudzysłowów.

Przykładowe użycie (na moim komputerze Mac):

alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/   
alex@mbpro:~/sdk/tools/bin$ ./sdkmanager "build-tools;25.0.2"  
done   
alex@mbpro:~/sdk/tools/bin$ ls ../../build-tools/  
25.0.0/ 25.0.2/

Możesz także określić różne opcje , na przykład wymusić na wszystkich połączeniach korzystanie z HTTP ( --no_https) lub w celu użycia serwera proxy (--proxy_host=address i --proxy_port=port).

Aby sprawdzić dostępne opcje, użyj --helpflagi. Na moim komputerze (Mac) wyniki są następujące:

alex@mbpro:~/sdk/tools/bin$ ./sdkmanager --help
Usage: 
  sdkmanager [--uninstall] [<common args>] \
    [--package_file <package-file>] [<packages>...]
  sdkmanager --update [<common args>]
  sdkmanager --list [<common args>]

In its first form, installs, or uninstalls, or updates packages.
    <package> is a sdk-style path (e.g. "build-tools;23.0.0" or 
             "platforms;android-23").
    <package-file> is a text file where each line is a sdk-style path
                   of a package to install or uninstall.
    Multiple --package_file arguments may be specified in combination
     with explicit paths.
In its second form (with --update), currently installed packages are
    updated to the latest version.
In its third form, all installed and available packages are printed out.

Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool
    --channel=<channelId>: Include packages in channels up to <channelId>.
                           Common channels are:
                           0 (Stable), 1 (Beta), 2 (Dev), and 3 (Canary).

    --include_obsolete: With --list, show obsolete packages in the
                        package listing. With --update, update obsolete
                        packages as well as non-obsolete.
    --no_https: Force all connections to use http rather than https.
    --proxy=<http | socks>: Connect via a proxy of the given type.
    --proxy_host=<IP or DNS address>: IP or DNS address of the proxy to use.
    --proxy_port=<port #>: Proxy port to connect to.

* If the env var REPO_OS_OVERRIDE is set to "windows",
  "macosx", or "linux", packages will be downloaded for that OS.
Alex Lipov
źródło
1
Ktoś jeszcze dostaje Warning: Unknown argument --package_file?
ulidtko
3
@ulidtko Wystąpił błąd w dokumentacji użytkowania. Prawidłowym sposobem jest dołączenie znaku równości, np --package_file=packages.txt.
Alex Lipov,
Niestety nie upraszcza to zadania instalacji. Nie wszyscy programiści systemu Android wykonują programowanie w systemie Linux bez GUI. Niektórzy z nas robią to w systemie Windows i wolą interfejs użytkownika, który działa jak każda inna aplikacja Windows. To przesuwa się do tyłu zamiast do przodu
AaA
2
@AaA Upraszcza to zadanie instalacji z wiersza poleceń . OP wyraźnie stwierdził, że szuka rozwiązania dla wiersza poleceń , dlatego twój komentarz nie ma znaczenia w tym kontekście.
Alex Lipov
55

Narzędzia do budowania ADB nie będą pobierane automatycznie, za pomocą polecenia android update sdk --no-ui

Aby zainstalować typ Buil-Tool (w konsoli):

android list sdk --all

Zapamiętaj numer podany przed pozycją i wykonaj następujące czynności:

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

polecenia należy wpisać w / YourFolder / android-sdk-linux / tools

Również dla folderu zdalnego (serwer otwarty na przykład przez ssh) wpisz:

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

Aby wyświetlić prostą listę pakietów ADB, wpisz w terminalu:

android list sdk

do instalacji wszystkich pakietów:

android update sdk --no-ui

Lub z filtrami (przecinek to separator):

android update sdk --no-ui --filter 3,5,8,14
Flinbor
źródło
w przypadku starych nieaktualnych plików sdk należy użyć opcji --all. na przykład aktualizacja Androida sdk --no-ui --all - filtr 27, aby zainstalować platformę 8
fluke
ponieważ instalator SDK ciągle się zawieszał, kiedy korzystałem z GUI, musiałem przejść do wiersza poleceń, więc to naprawdę pomogło. Dzięki.
Yvonne Aburrow
32

Świetnym źródłem informacji, na które natknąłem się, próbując zainstalować wszystko związane z zestawem SDK systemu Android z wiersza poleceń, był ten plik Docker. Wewnątrz pliku Docker widać, że autor wykonuje pojedyncze polecenie, aby zainstalować platform toolsi build toolsbez żadnej innej interakcji. W przypadku przedstawienia PO, polecenie zostanie dostosowane do:

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui
geoand
źródło
Co jeśli nie chcę wszystkich paczek? Po prostu chcę 21.1.0 .
IgorGanapolsky
@IgorGanapolsky Być może powinieneś spróbować bez --allflagi
geo i
21

Właśnie miałem trochę czasu na zainstalowanie zależności Android SDK za pomocą wiersza polecenia, a ponieważ dokumentacja dostarczana z narzędziami i online jest bardzo żałosna, pomyślałem, że opublikuję tutaj to, co odkryłem.

Pracuję android sdk r24.4.1dla linux. Istnieją dwa polecenia, które można uruchomić, aby wyświetlić listę dostępnych pakietów:

android list sdk

i bardziej wyczerpujące:

android list sdk --all

Numery pakietów dla poszczególnych pakietów różnią się dla każdego polecenia powyżej! Na przykład pierwsza lista zawiera pakiet API 23.1 revision 3jako pakiet, #3a druga wyświetla go jako#29 .

Teraz istnieją dwa różne sposoby instalacji za pomocą polecenia Androida.

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

i

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

Biorąc pod uwagę, że każde z poleceń instalacyjnych może przyjmować nr pakietu jako parametr, którego numeru pakietu używasz? Po wielu poszukiwaniach online oraz próbach i błędach odkryłem to

android update sdk --no-ui --filter używa numerów paczek z android list sdk

i

android update sdk -u -a -t używa numerów paczek z android list sdk --all

Innymi słowy - aby zainstalować API 23.1 revision 3, możesz:

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

lub

android update sdk -u -a -t 29

Szalony, ale działa.

lps
źródło
1
-ajest krótką wersją --all, dlatego używa tego numeru pakietu. ( -ujest skrótem od --no-uii -tjest skrótem od --filter.)
darthmaim,
Wierzę w to, co mówi Ips. Google jest znany z tego, że nie usage()aktualizuje tekstu w rzeczywistości.
not2qubit
na Ubuntu uruchomiłem: $ echo y | $ ANDROID_HOME / tools / android update sdk -u -a -t 27 Jak potwierdzić, że zostałem zaktualizowany do Androida 8?
Ashish Karpe,
$ ANDROID_HOME / tools / android list target | grep „W oparciu o Androida” W oparciu o Androida 4.0.3 (API poziom 15) W oparciu o Android 4.1.2 (API poziom 16) W oparciu o Android 4.2.2 (API poziom 17) W oparciu o Android 4.3.1 (API poziom 18) W oparciu o Android 4.4.2 (API poziom 19) W oparciu o Android 4.4.2 (API poziom 19) W oparciu o Android 5.0.1 (API poziom 21) W oparciu o Android 5.1.1 (API poziom 22) W oparciu o Android 6.0 (API poziom 23) W oparciu o system Android 7.0 (poziom API 24)
Ashish Karpe,
Bo kiedy uruchomiłem: $ ANDROID_HOME / tools / android list sdk Pakiety dostępne do instalacji lub aktualizacji: 1 1- Platforma SDK Android 8.1.0, API 27, wersja 1
Ashish Karpe
20

Większość odpowiedzi wydaje się ignorować fakt, że może być konieczne uruchomienie aktualizacji w środowisku bezgłowym bez uprawnień superużytkownika, co oznacza, że ​​skrypt musi odpowiedzieć na wszystkie pytania y/n monity dotyczące licencji.

Oto przykład, który rozwiązuje problem.

FILTER=tool,platform,android-20,build-tools-20.0.0,android-19,android-19.0.1

( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) \
    | android update sdk --no-ui --all \
    --filter ${FILTER}

Bez względu na liczbę podpowiedzi otrzymasz odpowiedzi na wszystkie. Ta while/sleeppętla wygląda jak symulacja polecenia tak , a właściwie jest prawie całkowicie . Problem yespolega na tym, że zalewane są standardowe 'y'i nie ma praktycznie żadnych opóźnień między wysłaniem tych znaków, a wersja, z którą miałem do czynienia, nie miała żadnej opcji limitu czasu. „Zanieczyści” standardowe wyjście, a skrypt nie będzie narzekał na nieprawidłowe dane wejściowe. Rozwiązaniem jest opóźnienie wysyłania 'y'do standardowego wyjścia i właśnie to while/sleeprobi kombinacja.

expect nie jest domyślnie dostępny na niektórych dystrybucjach linuksa i nie miałem sposobu, aby zainstalować go jako część moich skryptów CI, więc musiałem użyć najbardziej ogólnego rozwiązania i nic nie może być bardziej ogólne niż prosty skrypt bash, prawda?

W rzeczywistości blogowałem o tym ( NSBogan ), sprawdź tutaj, aby uzyskać więcej informacji, jeśli jesteś zainteresowany.

i4niac
źródło
--all zainstaluje wszystkie możliwe sdk. Nie jest to idealne rozwiązanie, jeśli chcesz ograniczyć się do określonego filtra.
IgorGanapolsky
17

Jeśli masz sdkmanager zainstalowany (używam MAC)

biegać sdkmanager --list aby wyświetlić listę dostępnych pakietów.

Jeśli chcesz zainstalować narzędzia do budowania, skopiuj preferowaną wersję z listy dostępnych pakietów.

Aby zainstalować preferowaną wersję, uruchom

sdkmanager "build-tools;27.0.3"
Lasithds
źródło
1
Dzięki. To działa! Polecenie „android” jest już nieaktualne w najnowszej wersji Androida-sdk, musimy użyć ./sdkmanager z katalogu / tools / bin
JLavoie
8

Jednak działa zbyt wolno

Tak, miałem ten sam problem. Niektóre pliki do pobrania są bardzo powolne (a przynajmniej były w ciągu ostatnich kilku dni). Jeśli chcesz pobrać wszystko, niewiele możesz na to poradzić.

Powoduje to, że nic w narzędziach do budowania folderów, a chcę, nie jest aapt i apkbuilder, ponieważ chcę budować apk z wiersza poleceń bez mrówki.

Czy pozwoliłeś, aby zakończyło się to?

Jedną rzeczą, którą możesz zrobić, jest filtrowanie pakietów, które są pobierane za pomocą -tprzełącznika.

Na przykład:

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

Kiedy próbowałem tego innego dnia, zainstalowałem wersję 18.0.0 narzędzi do kompilacji. Z jakiegoś powodu najnowsza wersja 18.0.1 nie jest uwzględniona przez ten filtr, a jedynym sposobem na uzyskanie tego było zainstalowanie wszystkiego za pomocą --allprzełącznika.

Dan Dyer
źródło
2
Uruchom to, aby uzyskać dostępne filtry: „android update sdk -h” ... Filtr, który ogranicza aktualizację do określonych typów pakietów w postaci rozdzielonej przecinkami listy [platforma, obraz systemu, narzędzie, platforma -tool, doc, sample, source]. Akceptuje to także identyfikatory zwrócone przez 'list sdk --extended'.
aleb
6

Wolę umieścić skrypt instalujący moje zależności

Coś jak:

#!/usr/bin/env bash
#
# Install JUST the required dependencies for the project.
# May be used for ci or other team members.
#

for I in android-25 \
         build-tools-25.0.2  \
         tool \
         extra-android-m2repository \
         extra-android-support \
         extra-google-google_play_services \
         extra-google-m2repository;

 do echo y | android update sdk --no-ui --all --filter $I ; done

https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh

Daniel Gomez Rico
źródło
Dzięki, pomóż mi zaoszczędzić dużo czasu.
utzcoz
4

Właśnie miałem ten problem, więc w końcu napisałem brudne rozwiązanie bash 1-liniowe, czytając i analizując listę dostępnych narzędzi:

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')
Aurélien Lambert
źródło
Zamieniłem mój projekt na usługi, poprosiłem o licencje znacznie więcej niż tylko narzędzi do budowania, więc to rozwiązanie jest bardzo ograniczone.
nurettin
Czuje się o wiele bardziej deterministyczny niż indeksy, które mogą się zmieniać w miarę ewolucji wersji ...
Augustin Riedinger
4

Zainspirowany odpowiedziami @ i4niac i @ Aurélien Lambert, właśnie to wymyśliłem

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

Wyjaśnienie

  • otrzymaj listę liczb oddzielonych przecinkami, które są indeksami pakietów narzędzi do budowania w wyniku android list sdk --allpolecenia (Ignorowanie przestarzałych pakietów).
  • co kilka milisekund wrzucaj terminal do terminalu, aby zaakceptować licencje.
Vinay W.
źródło
4

Pobierz Android SDK z developer.android.com (obecnie jest to plik 149 MB dla systemu operacyjnego Windows). Warto zauważyć, że Android usunął GUI sdkmanager, ale ma wersję sdkmanager z wiersza poleceń w folderze bin, który znajduje się w folderze narzędzi.

  1. Znajdując się w folderze bin, przytrzymaj klawisz Shift, kliknij prawym przyciskiem myszy, a następnie wybierz tutaj otwórz wiersz poleceń. Shift + kliknięcie prawym przyciskiem myszy >> otwórz tutaj wiersz poleceń.
  2. Po otwarciu wiersza polecenia wpisz polecenie sdkmanagerenter.
  3. Następnie uruchom typ sdkmanager(spacja), podwójny łącznik ( --), wpisz listę sdkmanager --list (wyświetla wszystkie pakiety w menedżerze SDK)
  4. Wpisz sdkmanager (spacja), a następnie nazwę pakietu i naciśnij klawisz Enter. Na przykład. sdkmanager platform-tools (naciśnij enter) Spowoduje załadowanie umowy licencyjnej. Z opcjami (t / n). Wpisz y, aby zaakceptować, a pobierze określony pakiet.

Aby uzyskać więcej informacji, skorzystaj z oficjalnego dokumentu tutaj

Mam nadzieję, że to pomoże. :)

philemon uchechukwu
źródło
4

Polecenie „android” jest nieaktualne.

W przypadku narzędzi wiersza polecenia użyj narzędzi / bin / sdkmanager i tools / bin / avdmanager

Jeśli nie potrzebujesz Android Studio, możesz pobrać podstawowe narzędzia wiersza poleceń Androida z developer.android.com w sekcji Tylko narzędzia wiersza poleceń .

z CLI powinno być coś w stylu:

curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

lub

wget --output-document sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip

Następnie wystarczy rozpakować archiwum do folderu docelowego

unzip sdk-tools-linux.zip

A teraz możemy zainstalować wszystko, czego potrzebujesz ...

./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

Możesz uzyskać pełną listę pakietów za pomocą polecenia ./tools/bin/sdkmanager --list

Niektóre pakiety wymagają akceptacji umowy licencyjnej. możesz zaakceptować to interaktywnie lub po prostu przekazać „y” do strumienia wejściowego, tak jak poniżej (w przypadku dwóch umów):

echo -ne "y\ny" | ./tools/bin/sdkmanager --install 'system-images;android-29;default;x86_64'

I oczywiście dla Twojej wygody możesz wyeksportować zmienne, takie jak ANDROID_HOME lub ANDROID_SDK_ROOT (w tym robiąc to w ~ / .profile lub ~ / .bash_profile) lub załatać ścieżkę PATH zmienną - wszystko to zależy od ciebie.

Przykład skryptu:

mkdir /opt/android-sdk
cd /opt/android-sdk
curl --output sdk-tools-linux.zip https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip
unzip sdk-tools-linux.zip
echo -ne "y" | ./tools/bin/sdkmanager --install 'build-tools;29.0.2' 'platform-tools' 'platforms;android-29' 'tools'

Wymagania: curl (lub wget) i rozpakuj

Rozwiązywanie problemów:

jeśli widzisz Warning: Could not create settings, musisz mieć toolskatalog wewnątrz cmdline-toolskatalogu wewnątrz ANDROID_HOME (utwórz go w razie potrzeby z tą dokładną nazwą) zobacz Narzędzia wiersza poleceń systemu Android sdkmanager zawsze pokazuje: Ostrzeżenie: Nie można utworzyć ustawień

Максим Шатов
źródło
2

Narzędzia do budowania nie mogły zostać automatycznie pobrane automatycznie, jak powiedział Nate w https://stackoverflow.com/a/19416222/1104031 postu.

Ale napisałem małe narzędzie, które stworzy wszystko dla Ciebie

Użyłem narzędzia „expect” jako danb w https://stackoverflow.com/a/17863931/1104031 postu. Trzeba tylko Android SDK i python27, expect.

Ten skrypt zainstaluje wszystkie narzędzia do budowania, wszystkie dyski SDK i wszystko, czego potrzebujesz do automatycznej kompilacji:

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)
Jacek Marchwicki
źródło
Jak o echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6?
schemacs
1
Popraw mnie, jeśli się mylę, ale wygląda na to, że ten skrypt ponownie pobiera wszystko za każdym razem, gdy jest uruchamiany. Próbowałem z parametrem -u, ale nie działało: /
gbero
1

Jak stwierdzono w innych odpowiedziach, narzędzia kompilacji wymagają zainstalowania --allflagi. Lepiej również użyj -tflagi filtru, aby uniknąć instalowania WSZYSTKICH pakietów, ale nie ma możliwości filtrowania wszystkich narzędzi do budowania.

Są już prośby o funkcje dla tych dwóch punktów w narzędziu do śledzenia błędów AOSP. Głosujcie na nich, może to kiedyś sprawić, że:

Sylfo
źródło
1

Próbowałem tego do aktualizacji wszystkich i zadziałało!

echo y | $ANDROID_HOME/tools/android update sdk --no-ui
Ting
źródło
0

Próbować

1. Wyświetl wszystkie pakiety

android list sdk --all

2. Zainstaluj pakiety za pomocą następującego polecenia

android update sdk -u -a -t package1, package2, package3 //comma seperated packages obtained using list command 
Pehlaj - programista aplikacji mobilnych
źródło
-1

Aktualizacja Androida SDK

To polecenie zaktualizuje i zainstaluje wszystkie najnowsze wydania dla narzędzi SDK, narzędzi do budowania, narzędzi platformy SDK.

To praca dla mnie.

Chirag
źródło