[android] 명령 행에 Android SDK 빌드 도구를 설치하는 방법은 무엇입니까?
명령 줄에서 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가 필요합니다.
답변
기본적으로 명령 행의 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 명령으로 나열된 패키지 번호입니다.
답변
다른 답변에서 언급했듯이 --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
기타
답변
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.
답변
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
답변
커맨드 라인에서 Android SDK와 관련된 모든 것을 설치하려고 할 때 얻은 많은 정보 소스 가이 Dockerfile이었습니다. Dockerfile 내부는 저자가 설치 한 명령을 실행하는 것을 볼 수 있습니다 platform tools
및 build tools
다른 상호 작용없이합니다. OP가 제시된 경우 명령은 다음과 같이 조정됩니다.
echo y | $ANDROID_HOME/tools/android update sdk --all --filter build-tools-21.1.0 --no-ui
답변
방금 명령 줄을 통해 안드로이드 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
미쳤지 만 작동합니다.
답변
대부분의 답변은 수퍼 유저 권한이없는 헤드리스 환경에서 업데이트를 실행해야한다는 사실을 무시하는 것 같습니다. 즉, 스크립트가 모든 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 ), 관심이 있으시 다면 여기에서 자세한 내용을 확인하십시오.