programing

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

lastmoon 2023. 7. 26. 22:22
반응형

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

명령줄에서 Android 개발 환경을 설정하려고 하는데 다음과 같은 문제가 발생합니다.

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

결과적으로 폴더 빌드 도구에는 아무것도 없으며, 개미 없이 명령줄에서 pk를 빌드하고 싶기 때문에 apt와 apk빌더를 원합니다.

기본적으로 명령줄의 SDK Manager는 빌드 도구를 목록에 포함하지 않습니다.그들은 "더 이상 쓸모없는" 범주에 속합니다.사용 가능한 모든 다운로드를 보려면 다음을 사용합니다.

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 명령과 함께 나열된 패키지 번호입니다.

했듯이, 은 다답변에것다수사있용다습니할음을처럼언을 할 수 .--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

§ 25.2.3 ()의버전 )Android SDK Tools패키지에는 명령줄에서 빌드 도구를 설치하는 이 작업을 간소화하는 새 도구 sdkmanager가 포함되어 있습니다.
은 위는치에 .android_sdk/tools/bin폴더를 누릅니다.

사용법(문서 참조):

설치되고 사용 가능한 패키지 나열:

sdkmanager --list [options] \
      [--channel=channel_id] // Channels: 0 (stable), 1 (beta), 2 (dev), or 3 (canary)

channel_id를 포함한 채널의 패키지를 포함하려면 channel 옵션을 사용합니다.예를 들어 모든 채널의 패키지를 나열할 카나리아 채널을 지정합니다.

패키지 설치:

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).

옵션을 하려면 사용가한확다사다니용합음을을 합니다.--helpflag.machine(다음과 . flag. 내에서기(Mac) 은다과같다습니음력출계▁flag다같.

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.

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

명령줄에서 Android SDK와 관련된 모든 것을 설치하려고 시도하는 동안 알게 된 훌륭한 정보 소스는 이 Docker 파일입니다.도커 파일 안에서 작성자가 설치할 단일 명령을 실행하는 것을 볼 수 있습니다.platform tools그리고.build tools다른 상호 작용 없이.OP가 제시한 경우, 명령은 다음과 같이 적용됩니다.

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

가지고 계신다면,sdkmanager (MAC 파일)

려달을 sdkmanager --list사용 가능한 패키지를 나열합니다.

빌드 도구를 설치하려면 사용 가능한 패키지 목록에서 기본 버전을 복사합니다.

기본 버전을 설치하려면 실행

sdkmanager "build-tools;27.0.3"

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

명령줄 도구의 경우 tools/bin/sdkmanager tools/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'

요구 사항: 컬(또는 wget) 압축 풀기

문제 해결:

을 보면Warning: Could not create settings당신은 그것을 가질 필요가 있습니다.tools 내의 cmdline-toolsAndroid 내부 디렉터리_HOME(이 정확한 이름으로 필요한 경우 생성) Android 명령줄 도구 sdkmanager 항상 표시: 경고: 설정을 만들없음

명령줄을 통해 Android 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>

install 명령어가 각각 package #을 매개 변수로 사용할 수 있다고 가정할 때, 어떤 package number of 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

미친 짓이지만 효과가 있어요.

대부분의 답변은 슈퍼 사용자 권한이 없는 헤드리스 환경에서 업데이트를 실행해야 할 수 있다는 사실을 무시하는 것 같습니다. 이는 스크립트가 모든 문제에 응답해야 한다는 것을 의미합니다.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이 "오염"되고 스크립트가 잘못된 입력에 대한 불만을 제기하며 실패합니다.은 발송 사이에 지연 을 두는 입니다. 입것니다두는지연을해이결에사것보를 보내는 에 지연을 두는 것입니다.'y'눈에 띄기 위해, 그리고 그것이 바로 그것입니다.while/sleep콤보는 그렇습니다.

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

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

그러나, 그것은 달리는 것이 너무 느립니다.

네, 저도 같은 문제를 겪었습니다.일부 파일 다운로드 속도가 매우 느리거나 최소한 최근 며칠 동안 다운로드한 파일이 있습니다.모든 것을 다운로드하려면 할 수 있는 일이 많지 않습니다.

결과적으로 폴더 빌드 도구에는 아무것도 없으며, 개미 없이 명령줄에서 pk를 빌드하고 싶기 때문에 apt와 apk빌더를 원합니다.

당신은 그것이 완성되도록 내버려 두었습니까?

할 수 한 한가방다음사용다패다것운입니필키는터는을 입니다.-t스위치를 켜다

예:

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

일전에 이것을 시도했을 때 18.0.0 버전의 빌드 도구가 설치되었습니다. 18은 이 되어 있지 이 은 어떤이서최 18.0.▁with▁the▁every▁for▁and▁to다▁18어떤▁was▁way▁install니▁it▁only습▁latest▁the▁to것▁filter▁version었이는▁this▁the와 함께 모든 것이었습니다.--all스위치를 켜다

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

다음과 같은 것:

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

저는 방금 이 문제가 있어서, 사용 가능한 도구 목록을 읽고 구문 분석하여 마침내 1줄 바시 더티 솔루션을 작성했습니다.

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

@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'를 계속 던집니다.

developer.android.com 에서 Android SDK를 다운로드합니다(현재 Windows OS용 149MB 파일).Android가 sdkmanager GUI를 제거했지만 툴 폴더 안에 있는 bin 폴더에 sdkmanager의 명령줄 버전이 있다는 점에 주목할 필요가 있습니다.

  1. bin 폴더 안에 있으면 Shift 키를 누른 상태에서 마우스 오른쪽 단추를 클릭한 다음 여기에서 명령줄 열기를 선택합니다.Shift+우클릭 >> 여기서 명령줄을 엽니다.
  2. 명줄이열다면같입이니다합력음과리령을 입력합니다.sdkmanagerEnter를 클릭합니다.
  3. 그런 다음 실행 유형sdkmanager으), 이공하픈이()-- list), 목록sdkmanager --list관리자의 됩니다.)
  4. sdkmanager(스페이스)를 입력한 다음 패키지 이름을 입력하고 Enter 키를 누릅니다.예: sdkmanager platform-tools(엔터 누름)라이센스 계약을 로드합니다.옵션(y/n) 포함.y를 입력하여 수락하면 지정한 패키지가 다운로드됩니다.

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

이것이 도움이 되길 바랍니다.:)

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

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

저는 https://stackoverflow.com/a/17863931/1104031 게시물에서 "danb" 도구를 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)

다른 응답에서 언급한 바와 같이, 빌드 도구에는 다음과 같은 기능이 필요합니다.--all설치할 플래그입니다.또한 사용하는 것이 좋습니다.-t필터 플래그를 사용하여 모든 패키지를 설치하지 않도록 하지만 모든 빌드 도구를 필터링할 수는 없습니다.

AOSP 버그 트래커에 이 두 지점에 대한 기능 요청이 이미 있습니다.자유롭게 그들에게 투표하세요, 이것이 언젠가 그들을 일어나게 할 수도 있습니다.

모두 업데이트하려고 시도해봤는데 효과가 있었어요!

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

해라

모든 패키지 나열

android list sdk --all

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

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

안드로이드 업데이트 sdk

이 명령은 SDK Tools, Build Tools, SDK Platform Tools에 대한 모든 최신 릴리스를 업데이트하고 설치합니다.

나를 위한 일입니다.

전체 Android 스튜디오를 설치하지 않고 Android 환경을 설정하려면:

  1. JDK 다운로드(8 이상 버전)
  2. https://gradle.org/install/ 에서 Gradle 다운로드
  3. https://developer.android.com/studio 에서 명령줄 도구 다운로드 스크롤 다운 및 명령줄 도구만 다운로드
  4. 필요한 환경 변수 설정
  5. 필요한 SDK 도구 다운로드

언급URL : https://stackoverflow.com/questions/17963508/how-to-install-android-sdk-build-tools-on-the-command-line

반응형