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.
android
sdk
android-build
aapt
build-tools
Zhenguo Yang
źródło
źródło
--all
opcji w oficjalnych wskazówkach . Dziękuję Ci.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 zyes
poleceniem bez powodzenia.Jak wspomniano w innych odpowiedziach, możesz użyć
--filter
opcji 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
--filter
opcji:android list sdk --all --extended
: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źródło
--extended
opcji, wyjaśniając, co należy zainstalować dla skryptów CI.android update
będzie również wymagać tej--all
opcji, 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--extended
opcji, która pozwala zobaczyć aliasy takie jakbuild-tools-21.1.0
)--filter
i--extended
?--extended
opcji, 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!Wersja 25.2.3 (i wyższa)
Android SDK Tools
pakietu zawiera nowe narzędzie - sdkmanager - które upraszcza to zadanie instalowania narzędzi do budowania z wiersza poleceń.Znajduje się w
android_sdk/tools/bin
folderze.Zastosowanie (z dokumentacji ):
Przykładowe użycie (na moim komputerze Mac):
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
--help
flagi. Na moim komputerze (Mac) wyniki są następujące:źródło
Warning: Unknown argument --package_file
?--package_file=packages.txt
.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):
Zapamiętaj numer podany przed pozycją i wykonaj następujące czynności:
polecenia należy wpisać w / YourFolder / android-sdk-linux / tools
Również dla folderu zdalnego (serwer otwarty na przykład przez ssh) wpisz:
Aby wyświetlić prostą listę pakietów ADB, wpisz w terminalu:
do instalacji wszystkich pakietów:
Lub z filtrami (przecinek to separator):
źródło
Ś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 tools
ibuild tools
bez żadnej innej interakcji. W przypadku przedstawienia PO, polecenie zostanie dostosowane do:źródło
--all
flagiWł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.1
dlalinux
. 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 3
jako pakiet,#3
a 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 zandroid list sdk
i
android update sdk -u -a -t
używa numerów paczek zandroid 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.
źródło
-a
jest krótką wersją--all
, dlatego używa tego numeru pakietu. (-u
jest skrótem od--no-ui
i-t
jest skrótem od--filter
.)usage()
aktualizuje tekstu w rzeczywistości.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.
Bez względu na liczbę podpowiedzi otrzymasz odpowiedzi na wszystkie. Ta
while/sleep
pętla wygląda jak symulacja polecenia tak , a właściwie jest prawie całkowicie . Problemyes
polega 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 towhile/sleep
robi 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.
źródło
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
źródło
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ć.
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ą
-t
przełącznika.Na przykład:
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ą
--all
przełącznika.źródło
Wolę umieścić skrypt instalujący moje zależności
Coś jak:
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
źródło
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:
źródło
Zainspirowany odpowiedziami @ i4niac i @ Aurélien Lambert, właśnie to wymyśliłem
Wyjaśnienie
android list sdk --all
polecenia (Ignorowanie przestarzałych pakietów).źródło
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.
sdkmanager
enter.sdkmanager
(spacja), podwójny łącznik (--
), wpisz listęsdkmanager --list
(wyświetla wszystkie pakiety w menedżerze SDK)Aby uzyskać więcej informacji, skorzystaj z oficjalnego dokumentu tutaj
Mam nadzieję, że to pomoże. :)
źródło
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:
lub
Następnie wystarczy rozpakować archiwum do folderu docelowego
A teraz możemy zainstalować wszystko, czego potrzebujesz ...
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):
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:
Wymagania: curl (lub wget) i rozpakuj
Rozwiązywanie problemów:
jeśli widzisz
Warning: Could not create settings
, musisz miećtools
katalog wewnątrzcmdline-tools
katalogu 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
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:
źródło
echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6
?Jak stwierdzono w innych odpowiedziach, narzędzia kompilacji wymagają zainstalowania
--all
flagi. Lepiej również użyj-t
flagi 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:
źródło
Próbowałem tego do aktualizacji wszystkich i zadziałało!
źródło
Próbować
1. Wyświetl wszystkie pakiety
2. Zainstaluj pakiety za pomocą następującego polecenia
źródło
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.
źródło