2014-09-24 8 views
30

자동화 된 빌드 서버를 생성하기 위해 android SDK를 설치하려고합니다. 내가 관리하는 많은 Gradle 기반 Android 프로젝트가 다른 빌드 도구 버전에 의존하는 문제가 발생했습니다. 일부 빌드 툴 버전 (예 : v19.1.0)이 필요한 프로젝트가 있습니다.이전 버전의 Android 빌드 도구를 명령 줄에서 설치하는 방법은 무엇입니까?

build-tools 버전 20이 방금 출시되었을 때 android-sdk 패키지가 다운로드되었으므로 android update sdk -u --filter build-tools을 통해 다운로드 할 수있는 유일한 버전입니다.

android update sdk -u --filter build-tools-19.1.0을 호출하려했지만 작동하지 않았습니다. 명령 줄에서 이전 버전의 Android 빌드 도구를 쉽게 설치할 수 있습니까?

참고 : GUI를 통해 설치하는 Linux 용 안드로이드 SDK를 다운로드 한 가정

답변

54

수 없습니다, 당신이 명령 줄에서 업데이트하는 두 가지 옵션이 있습니다. SDK를에서 안드로이드 도구를 사용하여

대신의 GUI와 안드로이드 SDK 관리자를 실행

다운로드, 당신은 또한 헤드리스 (headless) 모드에서 실행 할 수있는 옵션이 있습니다. -u (또는 --no-ui) 플래그 만 지정하면됩니다.

설치에 사용 가능한 패키지를 나열하거나 업그레이드하려면

$ ./tools/android update sdk -u -a -t [NO_OF_ITEM_TO_BE_INSTALLED] 
:

$ cd android-sdk-linux 
$ ./tools/android list sdk --all 
Refresh Sources: 
    (...) 
    Fetching URL: https://dl.google.com/android/repository/repository-11.xml 
    (...) 
Packages available for installation or update: 166 
    1- Android SDK Tools, revision 24.4.1 
    2- Android SDK Tools, revision 25.0.9 rc10 
    3- Android SDK Platform-tools, revision 23.1 
    4- Android SDK Platform-tools, revision 24 rc1 
    5- Android SDK Build-tools, revision 24 rc1 
    6- Android SDK Build-tools, revision 23.0.2 
    7- Android SDK Build-tools, revision 23.0.1 
    8- Android SDK Build-tools, revision 23 (Obsolete) 
    (...) 
162- Google Play Billing Library, revision 5 
163- Google Play Licensing Library, revision 2 
164- Android Auto API Simulators, revision 1 
165- Google Web Driver, revision 2 
166- Intel x86 Emulator Accelerator (HAXM installer), revision 6.0.1 

당신이 다음 명령의 목록에서 설치하려는 항목의 번호를 지정해야 특정 패키지를 다운로드하려면

예 : 나는의 Andorid SDK 빌드 도구 버전 23.0.1를 설치하기를 원한다면, 난에 입력합니다 :

$ ./tools/android update sdk -u -a -t 7 

하지 모든 패키지 (특히 오래 된 것)으로 수동 다운로드

는 당신이 android sdk list을 수행 할 때, 당신은 수동으로 일을 다운로드 할 수 있습니다 나열됩니다. android sdk list - https://dl.google.com/android/repository/repository-11.xml

XML 파일을 수동으로 열 수 있습니다. 다운로드 할 다양한 유형의 링크가 있습니다. e.g :

$ cd android-sdk-linux/build-tools 
$ wget http://dl.google.com/android/repository/build-tools_r19.0.1-linux.zip 
$ unzip build-tools_r19.0.1-linux.zip 
$ mv android-4.4.2 19.0.1 
$ rm build-tools_r19.0.1-linux.zip 

사이드 노트 빌드 도구의 버전 19.0.1 (우분투) : 여러분이 데비안/우분투 64 비트를 실행하는 경우

, 실행 aapt 추가 패키지를 설치해야합니다

sudo apt-get install lib32stdc++6 
sudo apt-get install lib32z1 

당신이 aapt를 실행하는 가상 코어 (레드햇)를 실행하는 경우 추가 패키지를 설치해야합니다

aapt을 실행하는 동안 GLIBC 2.14에서 오류가 발생하고 GLIBC 로캘을 업그레이드하지 않겠습니까?

빌드 도구 : http://dl.google.com/android/repository/build-tools_r23.0.2-linux.zip

플랫폼 도구 : 그럼 u는 SDK (빌드 툴, 플랫폼 도구)에 대해 다음 패키지를 다운로드해야 내 자신의 질문에 대답 https://dl.google.com/android/repository/platform-tools_r23.0.1-linux.zip

+0

당신이 안드로이드 SDK를 다운로드 한 후, 처음으로 우리가 실행해야했다

[[email protected] ~]$ android update sdk -u -a -t 5 

옵션이 의미가 "android update sdk -u". 필터없이 작업 할 때 거대한 거대한 거치대를 다운로드 할 것입니다 .... 특정 버전이 필요합니다 .... –

+0

@DoronShai 나는 답변을 업데이트했으며, 지금 당장 완료되기를 바랍니다! – wtekiela

+0

@wtekiela "사이드 노트"는 매우 도움이되었습니다. 감사! 그것은 그 자체로 대중적인 질문 일 것입니다. – BrianTheLion

3

, 난 그냥이 내 목표를 달성하는 가장 좋은 방법 중 하나는 SDK manager Gradle plugin by Jake Wharton을 사용하는 것임을 알았습니다.

Gradle 플러그인을 추가하는 것만 큼 간단합니다. 필요한 SDK 패키지는 local.properties에 지정된 SDK 위치에 주문형으로 설치됩니다.

buildscript { 
    repositories { 
    mavenCentral() 
    } 
    dependencies { 
    classpath 'com.android.tools.build:gradle:0.12.+' 
    classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' 
    } 
} 

apply plugin: 'android-sdk-manager' 
apply plugin: 'com.android.application' 

이 접근법은 헤드리스 CI 환경에서 특히 효과적입니다. local.properties을 이미 가지고 있지 않은 경우에만 ANDROID_HOME 환경 변수를 추가하는 것을 잊지 마십시오 (CI 환경에서 발생할 가능성이 가장 높음)

7

원하는 것은 SDK 관리자 GUI의 동일한 기능을 얻을 수있는 것입니다. 명령 줄에서.

저장소에서 사용 가능한 모든 패키지를 쿼리하려면이 명령을 사용하십시오. 쿼리는 왼쪽에 인덱스 번호가있는 패키지를 반환합니다.

[[email protected] ~]$ android list sdk --all 
Refresh Sources: 
    Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml 
    Validate XML 
    Parse XML 
    Fetched Add-ons List successfully 
    … 
    Validate XML: https://dl-ssl.google.com/android/repository/sys-img/x86/addon-x86.xml 
    Parse XML: https://dl-ssl.google.com/android/repository/sys-img/x86/addon-x86.xml 
    Packages available for installation or update: 138 
    1- Android SDK Tools, revision 24.1.2 
    2- Android SDK Platform-tools, revision 22 
    3- Android SDK Build-tools, revision 22.0.1 
    4- Android SDK Build-tools, revision 22 (Obsolete) 
    5- Android SDK Build-tools, revision 21.1.2 
    …. 

검색 범위를 좁히기 위해 grep 명령을 사용할 수 있습니다. 예 :

[[email protected] ~]$ android list sdk --all | grep -i tools | grep 21 
    5- Android SDK Build-tools, revision 21.1.2 
    6- Android SDK Build-tools, revision 21.1.1 (Obsolete) 
    7- Android SDK Build-tools, revision 21.1 (Obsolete) 
    8- Android SDK Build-tools, revision 21.0.2 (Obsolete) 
    9- Android SDK Build-tools, revision 21.0.1 (Obsolete) 
    10- Android SDK Build-tools, revision 21 (Obsolete) 

마지막으로이 명령에서 색인 번호를 제공하여 원하는 패키지를 설치하십시오.

-u (--no-ui) # Headless mode 
-a (--all) # Includes all packages, included the obsolete ones 
-t (--filter) # in this example we have filtered by package index, i.e. 5 
2

을 바탕으로 : How to install Android SDK Build Tools on the command line? 여기에 다른 사람이 내 버전 :

#!/bin/bash -e 

installAndroidSdk() { 
    local url=http://dl.google.com/android/android-sdk_r24.3-linux.tgz 

    sudo apt-get install -y lib32stdc++6 lib32z1 

    # Install android SDK 
    (
     cd /opt 

     curl -o android.tgz -sL $url 

     tar xzf android.tgz 

     mv android-sdk-linux/ android 

     rm android.tgz 

     echo "export ANDROID_HOME=/opt/android" > /etc/profile.d/android.sh 
     echo "export PATH=\$PATH:\$ANDROID_HOME/tools:\$ANDROID_HOME/platform-tools" >> /etc/profile.d/android.sh 
     source /etc/profile.d/android.sh 

     android list sdk --all --extended > /tmp/android-skds 

     modules=(platform-tools build-tools-22.0.1 android-22) 
     for module in ${modules[@]}; do 
      moduleId=$(less /tmp/android-skds | sed -n "s/id: \(.*\) or \"$module\"/\1/p") 
      if [[ ! -z "$moduleId" ]]; then 
       expect -c " 
        set timeout -1 ; 
        spawn android update sdk -u -a -t $moduleId; 
        expect { 
         \"Do you accept the license\" { exp_send \"y\r\" ; exp_continue } 
         eof 
        } 
       " 
      else 
       echo "[WARNING] - $module was not installed." 
      fi 
     done 

     echo "export PATH=\$PATH:\$ANDROID_HOME/build-tools/22.0.1" | sudo tee -a /etc/profile.d/android.sh 

     rm -f /tmp/android-skds 
     sudo apt-get install -y android-tools-adb 
    ) 
    return $? 
}