명령 행에 Android SDK 빌드 도구를 설치하는 방법은 무엇입니까?


292

명령 줄에서 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

결과적으로 폴더 빌드 도구에는 아무것도 없으며 개미없이 명령 줄에서 apk를 빌드하려고하기 때문에 aapt 및 apkbuilder가 필요합니다.

답변:


479

기본적으로 명령 행의 SDK 관리자는 목록에 빌드 도구를 포함하지 않습니다. 그들은 "폐기 된"카테고리에 있습니다. 사용 가능한 모든 다운로드를 보려면

android list sdk --all

그런 다음 명령 행에서 해당 목록에있는 패키지 중 하나를 가져 오려면 다음을 사용하십시오.

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

-u는 --no-ui를, -a는 --all을, -t는 --filter를 나타냅니다.

여러 패키지를 설치해야하는 경우 다음을 수행하십시오.

안드로이드 업데이트 SDK -u -a -t 1,2,3,4, .., n 

여기서 1,2, .., n은 위의 list 명령으로 나열된 패키지 번호입니다.


4
18.1.1과 같은 빌드 도구가 없으면 명령 행을 사용하여 설치하는 올바른 방법입니다.
Cray

19
좀 짜증나, 그들은 공식 팁--all 에서 옵션을 언급하지 않았습니다 . 감사합니다.
Alexander Malakhov

4
@DanielJonker 네, 그렇습니다. 명령에 "yes"를 에코하십시오 (예 : echo yes | 안드로이드 갱신 SDK --all --filter 도구 --no-UI --force>을 / dev / null
핵 공급국 그룹 (NSG)

4
echo "yes"로 단축 할 수 echo "y"있지만 모든 경우에 작동하지는 않습니다. 경우에 따라 필터 및 특정 패키지에 따라 둘 이상의 y / n 라이센스 프롬프트가 표시 될 수 있습니다. echo "y"첫 번째 프롬프트에만 응답하지만 나머지는 응답하지 않습니다. 나는 지금 yes까지 성공하지 못한 명령으로 작동하도록 노력하고 있습니다.
i4niac

3
@AlexanderMalakhov 호스트 OS에 유틸리티가 있으면 사용하는 것이 가장 좋습니다. 먼저 expect를 보았지만 제 경우에는 AWS 클라우드에서 실행되는 특정 Linux 배포판에서 스크립트를 실행해야합니다. 그 배포판은 설치를 기대하지 않았으며 빌드 계획의 일부로 설치할 수있는 권한이 없습니다. 둘러 본 후 가장 좋은 해결책은 <pre> <code> # 헤드리스 서버의 Android SDK 업데이트입니다. FILTER = tool, platform, android-20 (sleep 5 && while [1]; sleep 1; echo y; done ) \ | 안드로이드 갱신 SDK --no-UI --all \ --filter $ {FILTER} </ 코드> </ 사전>
i4niac

140

다른 답변에서 언급했듯이 --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

그런 다음 문자열 ID를 필터 옵션으로 사용하여 원하는 버전을 정확하게 지정할 수 있습니다.

android update sdk --filter tools,platform-tools,build-tools-19.0.3 기타


27
--extended옵션에 +1을 지정하면 CI 스크립트를 위해 무엇을 설치해야하는지 명확하게 알 수 있습니다.
nhaarman

16
android update--all옵션 도 필요합니다 . 그렇지 않으면 사용 도움말이 표시됩니다. 예를 들면 다음 android update sdk --no-ui --all --filter build-tools-21.1.0과 같습니다 ((와 --extended같이 별명을 볼 수 있는 옵션의 경우 +1 build-tools-21.1.0)
Petrus Repo

1
--filter--extended옵션 담당자는 어디에 있습니까 ?
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

2
나는 고정되지 않은 숫자보다 문자열을 사용하는 것이 훨씬 낫다는 데 동의합니다.
wisbucky

1
--extended스크립트를 작성하고 Continuous Integration Server에서 SDK 리소스 자체를 새로 고칠 수있는 스크립트를 사용할 수 있도록 해당 옵션 을 찾고 있었습니다. 좋은 팁!
osayilgan

73

Android SDK Tools패키지 버전 25.2.3 이상 에는 새로운 도구가 포함되어 있습니다. sdkmanager 있어 명령 줄에서 빌드 도구를 설치하는이 작업을 단순화합니다.
그것은에 위치한 android_sdk/tools/bin폴더에 있습니다.

사용법 ( 문서에서 ) :

sdkmanager packages [options]

그만큼 packages인수는 (예를 들어, 따옴표로 싸서 SDK 스타일의 경로입니다 "build-tools;25.0.0"또는 "platforms;android-25"). 공백으로 구분 된 여러 패키지 경로를 전달할 수 있지만 각각 고유 한 따옴표로 묶어야합니다.

사용 예 (내 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/

다양한 옵션을 지정할 수도 있습니다예를 들어 모든 연결에서 HTTP ( --no_https)를 사용하도록하거나 프록시 서버 ( --proxy_host=address--proxy_port=port) 를 사용하기 위해 .

사용 가능한 옵션을 확인하려면 --help플래그를 사용하십시오 . 내 컴퓨터 (Mac)에서 출력은 다음과 같습니다.

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.

1
다른 사람이 Warning: Unknown argument --package_file있습니까?
ulidtko

3
@ulidtko 사용 설명서에 버그가 있습니다. 올바른 방법은 등호를 추가하는 것입니다 (예 :) --package_file=packages.txt.
Alex Lipov

불행히도 설치 작업을 단순화하지는 않습니다. 모든 안드로이드 프로그래머가 GUI없이 리눅스에서 프로그래밍을하는 것은 아닙니다. 우리 중 일부는 Windows에서이를 수행하고 다른 모든 Windows 응용 프로그램처럼 실행되는 UI를 선호합니다. 이것은 앞으로가 아니라 뒤로 이동합니다
AaA

2
@AaA 명령 줄 에서 설치하는 작업을 단순화 합니다 . OP는 명령 행 솔루션을 찾고 있다고 명시 했기 때문에 귀하의 의견은이 맥락과 관련이 없습니다.
Alex Lipov 2019

55

android update sdk --no-ui 명령으로 ADB Build-Tools가 자동으로 다운로드되지 않습니다

따라서 콘솔에서 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

더 이상 사용되지 않는 오래된 SDK의 경우 --all을 사용해야합니다. 예를 들어 android-8 sdk --no-ui --all --filter 27로 플랫폼 8을 설치하십시오.
fluke

GUI를 사용할 때 SDK 설치 관리자가 계속 충돌했기 때문에 명령 줄로 전환해야했기 때문에 실제로 도움이되었습니다. 감사.
Yvonne Aburrow

32

커맨드 라인에서 Android SDK와 관련된 모든 것을 설치하려고 할 때 얻은 많은 정보 소스 가이 Dockerfile이었습니다. Dockerfile 내부는 저자가 설치 한 명령을 실행하는 것을 볼 수 있습니다 platform toolsbuild tools다른 상호 작용없이합니다. OP가 제시된 경우 명령은 다음과 같이 조정됩니다.

echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui

모든 패키지를 원하지 않으면 어떻게합니까? 21.1.0 만 원 하십시오 .
IgorGanapolsky

@IgorGanapolsky은 아마도 당신은없이 시도해야 --all플래그
geoand

21

방금 명령 줄을 통해 안드로이드 SDK 종속성을 설치하는 데 많은 시간을 보냈으며 도구와 온라인과 함께 제공되는 문서가 너무 부족하기 때문에 여기서 발견 한 것을 게시 할 것이라고 생각했습니다.

에 협력하고 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

미쳤지 만 작동합니다.


1
-a의 짧은 버전 --all이므로 패키지 번호를 사용하는 이유입니다. ( -u약어로 --no-ui-t약자이다 --filter.)
darthmaim

Ips의 말을 믿습니다. Google은 usage()텍스트를 실제로 최신 상태로 유지하지 않는 것으로 알려져 있습니다.
not2qubit

우분투에서 내가 실행 : $ echo y | $ ANDROID_HOME / tools / android 업데이트 sdk -u -a -t 27 이제 Android 8로 업데이트되었는지 확인하는 방법은 무엇입니까?
Ashish Karpe

$ ANDROID_HOME / tools / android 목록 대상 | grep "Android 기반"Android 4.0.3 (API 레벨 15) 기반 Android 4.1.2 (API 레벨 16) 기반 Android 4.2.2 (API 레벨 17) 기반 Android 4.3.1 (API 레벨 18) 기반 Android 4.4.2 (API 레벨 19) 기반 Android 4.4.2 (API 레벨 19) 기반 Android 5.0.1 (API 레벨 21) 기반 Android 5.1.1 (API 레벨 22) 기반 Android 6.0 (API 레벨 23) 안드로이드 7.0을 기반으로 (API 레벨 24)
인 Ashish Karpe

내가 실행했을 때의 원인 : $ ANDROID_HOME / tools / android list sdk 설치 또는 업데이트가 가능한 패키지 : 1 1- SDK Platform Android 8.1.0, API 27, 개정 1
Ashish Karpe

20

대부분의 답변은 수퍼 유저 권한이없는 헤드리스 환경에서 업데이트를 실행해야한다는 사실을 무시하는 것 같습니다. 즉, 스크립트가 모든 y/n라이센스 프롬프트에 자동으로 응답해야합니다 .

트릭을 수행하는 예는 다음과 같습니다.

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}

아무리 많은 프롬프트가 표시 되더라도 모든 응답이 응답됩니다. 이 while/sleep루프는 yes 명령의 시뮬레이션처럼 보이지만 실제로는 거의 비슷 합니다. 문제 yes는 stdout에 홍수가 발생하고 'y'실제로 해당 문자를 보내는 데 지연이 없으며 처리 해야하는 버전에 어떤 종류의 시간 제한 옵션도 없다는 것입니다. stdout을 "pollute"하고 스크립트는 잘못된 입력에 대해 불평하지 않습니다. 해결책은 'y'stdout으로 전송하는 것을 지연시키는 것 while/sleep입니다. 이것이 바로 콤보입니다.

expect 일부 Linux 배포판에서 기본적으로 사용할 수 없으며 CI 스크립트의 일부로 설치 할 수있는 방법이 없었으므로 가장 일반적인 솔루션을 사용해야했으며 간단한 bash 스크립트보다 더 일반적인 것은 없습니다.

사실, 나는 그것에 대해 블로그를 만들었 습니다 ( NSBogan ), 관심이 있으시 다면 여기에서 자세한 내용을 확인하십시오.


--all 은 가능한 모든 SDK를 설치합니다. 특정 필터로 제한하려는 경우에는 적합하지 않습니다.
IgorGanapolsky

17

당신이 경우 sdkmanager설치 (I는 MAC을 사용하고 있습니다)

sdkmanager --list사용 가능한 패키지를 나열하기 위해 실행 합니다.

빌드 도구를 설치하려면 사용 가능한 패키지 목록에서 선호하는 버전을 복사하십시오.

기본 버전을 설치하려면

sdkmanager "build-tools;27.0.3"

1
감사. 효과가있다! "android"명령은 이제 최신 버전의 Android-sdk에서 더 이상 사용되지 않습니다. / tools / bin 디렉토리에서 ./sdkmanager를 사용해야합니다.
JLavoie

8

그러나 실행 속도가 너무 느립니다.

예, 같은 문제가 있습니다. 일부 파일 다운로드 속도가 매우 느리거나 적어도 지난 며칠이 지났습니다. 모든 것을 다운로드하려면 할 수있는 일이 많지 않습니다.

결과적으로 폴더 빌드 도구에는 아무것도 없으며 개미없이 명령 줄에서 apk를 빌드하려고하기 때문에 aapt 및 apkbuilder가 필요합니다.

당신은 완료까지 실행 했습니까?

-t스위치를 사용하여 다운로드중인 패키지를 필터링하면됩니다 .

예를 들면 다음과 같습니다.

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

다른 날 이것을 시도했을 때 버전 18.0.0의 빌드 도구가 설치되었습니다. 어떤 이유로 최신 버전 18.0.1이이 필터에 포함되어 있지 않으며이를 얻는 유일한 방법은 --all스위치로 모든 것을 설치하는 것입니다 .


2
사용 가능한 필터를 가져 오려면 다음을 실행하십시오. "android update sdk -h"... [플랫폼, 시스템 이미지, 도구, 플랫폼의 쉼표로 구분 된 목록 형식으로 지정된 패키지 유형으로 업데이트를 제한하는 필터 -도구, 문서, 샘플, 소스]. 이것은 'list sdk --extended'에 의해 반환 된 식별자도 받아들입니다.
aleb

6

종속성을 설치하는 스크립트를 선호합니다

다음과 같은 것 :

#!/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


감사합니다. 시간을 많이 절약 할 수 있습니다.
utzcoz 2016 년

4

방금이 문제가 있었기 때문에 마침내 실행 가능한 도구 목록을 읽고 파싱하여 1 줄 bash 더러운 솔루션을 작성했습니다.

 tools/android update sdk -u -t $(android list sdk | grep 'Android SDK Build-tools' | sed 's/ *\([0-9]\+\)\-.*/\1/')

서비스를 재생하도록 프로젝트를 전환했는데, 단지 도구를 구축하는 것 이상의 라이센스를 요구했기 때문에이 솔루션은 매우 제한적입니다.
nurettin

버전이 발전함에 따라 시간이 지남에 따라 변경 될 수있는 인덱스보다 훨씬 더 결정적인 느낌이
듭니다

4

@ 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'를 계속 던지십시오.

4

developer.android.com (현재 Windows OS 용 149mb 파일)에서 Android SDK를 다운로드하십시오. 안드로이드가 sdkmanager GUI를 제거했지만 도구 폴더 안에있는 bin 폴더에 sdkmanager의 명령 줄 버전이 있음을 주목할 가치가 있습니다.

  1. bin 폴더 안에있을 때 Shift 키를 누른 상태에서 마우스 오른쪽 단추를 클릭 한 후 여기에서 명령 행 열기를 선택하십시오. Shift + 오른쪽 클릭 >> >> 명령 행 열기를여십시오.
  2. 명령 행이 열리면 sdkmanagerclick enter를 입력하십시오.
  3. 그런 다음 유형 sdkmanager(공백), 이중 하이픈 ( --), 유형 목록 sdkmanager --list (SDK 관리자의 모든 패키지를 나열)을 실행하십시오.
  4. sdkmanager (공백)를 입력 한 다음 패키지 이름을 입력하고 Enter를 누르십시오. 예 : sdkmanager platform-tools (press enter) 라이센스 계약을로드합니다. 옵션 사용 (y / n). 수락하려면 y를 입력하면 지정한 패키지가 다운로드됩니다.

자세한 내용은 공식 문서를 참조 하십시오.

이게 도움이 되길 바란다. :)


4

"android"명령은 더 이상 사용되지 않습니다.

명령 행 도구의 경우 tools / bin / sdkmanagertools / bin / avdmanager를 사용하십시오.

Android Studio가 필요하지 않은 경우 developer.android.com 에서 기본 Android 명령 행 도구 섹션의 명령 행 도구 만 다운로드 할 수 있습니다 .

CLI에서 다음과 같이 솜씨가 있어야합니다.

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

또는

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

그런 다음 아카이브를 대상 폴더로 압축 해제하십시오.

unzip sdk-tools-linux.zip

이제 필요한 모든 것을 설치할 수 있습니다 ...

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

다음 명령을 사용하여 전체 패키지 목록을 얻을 수 있습니다 ./tools/bin/sdkmanager --list

일부 패키지는 라이센스 계약에 동의해야합니다. 대화식으로 수락하거나 다음과 같이 입력 스트림에 "y"를 전달하면됩니다 (이 경우 두 개의 동의).

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

물론 편의상 ANDROID_HOME 또는 ANDROID_SDK_ROOT 와 같은 변수를 내보내 거나 (~ / .profile 또는 ~ / .bash_profile에서 수행하는 것을 포함하여) PATH 변수를 패치 할 수 있습니다.

스크립트 예 :

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'

요구 사항 : curl (또는 wget) 및 압축 해제

문제 해결:

이 표시 Warning: Could not create settings되면 ANDROID_HOME 내의 디렉토리 내에 tools디렉토리 가 있어야합니다 cmdline-tools(필요한 경우이 정확한 이름으로 작성). sdkmanager가 항상 표시하는 Android 명령 줄 도구를 .


2

Nate가 https://stackoverflow.com/a/19416222/1104031 에서 말한 것처럼 기본적으로 빌드 도구를 자동으로 다운로드 할 수 없습니다. 게시물 .

그러나 나는 당신을 위해 모든 것을 만드는 작은 도구를 썼습니다

https://stackoverflow.com/a/17863931/1104031 게시물 에서 "expect"도구를 danb로 사용 했습니다. android-sdk 및 python27, 필요합니다 expect.

이 스크립트는 모든 빌드 도구, 모든 SDK 및 자동화 된 빌드에 필요한 모든 것을 설치합니다.

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)

어때요 echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6?
schemacs

1
내가 틀렸다면 정정하십시오.하지만이 스크립트는 실행될 때마다 모든 것을 다시 다운로드하는 것 같습니다. 나는 -u param으로 시도했지만 작동하지 않는 것 같습니다 : /
gbero

1

다른 응답에서 언급했듯이 빌드 도구에는 --all플래그를 설치 해야합니다 . 또한 -t모든 패키지를 설치하지 않으려면 필터 플래그를 사용하는 것이 좋지만 모든 빌드 도구를 필터링하는 방법은 없습니다.

AOSP 버그 추적기에는이 두 지점에 대한 기능 요청이 이미 있습니다. 그들에게 투표 해주세요. 언젠가는 일어날 수 있습니다.


1

나는 이것을 모두 업데이트하려고 시도했지만 효과가 있었다!

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

0

시험

1. 모든 패키지 목록

android list sdk --all

2. 다음 명령을 사용하여 패키지를 설치

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

-1

안드로이드 업데이트 SDK

이 명령은 SDK 도구, 빌드 도구, SDK 플랫폼 도구의 모든 최신 릴리스를 업데이트하고 설치합니다.

그것은 나를 위해 일합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.