web-dev-qa-db-de.com

Wie installiere ich eine alte Version von Android Build Tools von der Kommandozeile?

Ich installiere Android SDK, um einen automatisierten Build-Server zu erstellen. Ich bin auf ein Problem gestoßen, bei dem viele Gradle-basierte Android Projekte, die ich verwalte, auf verschiedene Build-Tools-Versionen angewiesen sind Einige der Projekte erfordern noch alte Build-Tools (zB v19.1.0).

Mein Android-SDK-Paket wurde heruntergeladen, als Build-Tools Version 20 veröffentlicht wurde. Dies ist die einzige Version, die über Android update sdk -u --filter build-tools Heruntergeladen werden kann.

Ich habe versucht, Android update sdk -u --filter build-tools-19.1.0 Aufzurufen, aber es hat nicht funktioniert. Gibt es eine einfache Möglichkeit, alte Versionen von Android Build Tools über die Befehlszeile zu installieren?

Hinweis: Eine Installation über die GUI ist nicht möglich

32
akhy

Angenommen, Sie haben das Android SDK für Linux heruntergeladen, dann haben Sie zwei Möglichkeiten, über die Befehlszeile zu aktualisieren.

Download mit Android Tool vom SDK

Anstatt den Android sdk-Manager mit einer grafischen Benutzeroberfläche auszuführen, haben Sie auch die Möglichkeit, im Headless-Modus zu arbeiten. Sie müssen nur -u (Oder --no-ui) Angeben. ) Flagge.

So listen Sie Pakete auf, die für die Installation oder das Upgrade verfügbar sind:

$ 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

Um bestimmte Pakete herunterzuladen, müssen Sie die Nummer des zu installierenden Elements aus der Liste im folgenden Befehl angeben:

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

Beispiel: Wenn ich andorid sdk build tools revision 23.0.1 installieren wollte, würde ich Folgendes eingeben:

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

Manueller Download

Da beim Ausführen von Android sdk list Nicht jedes Paket (insbesondere die alten) aufgelistet wird, können Sie die Dinge auch manuell herunterladen. Sie können die angezeigte XML-Datei manuell öffnen, wenn Android sdk list - https://dl.google.com/Android/repository/repository-11.xml

Dort finden Sie Links zu verschiedenen Arten von Dingen zum Herunterladen, z.

Zum manuellen Herunterladen von z. Version 19.0.1 der Build-Tools

$ 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

Randnotiz (Ubuntu):

Wenn Sie Debian/Ubuntu 64-Bit ausführen, müssen Sie zum Ausführen von aapt zusätzliche Pakete installieren:

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

Wenn Sie CentOs (RedHat) ausführen, müssen Sie zum Ausführen von aapt zusätzliche Pakete installieren:

Sudo yum install zlib.i686 libstd++.i686

Wenn Sie beim Ausführen von aapt eine Fehlermeldung mit GLIBC 2.14 erhalten und Ihr Gebietsschema GLIBC nicht aktualisieren möchten. Dann müssen Sie die folgenden Pakete für sdk herunterladen (Build-Tool, Plattform-Tool):

build-Tool: http://dl.google.com/Android/repository/build-tools_r23.0.2-linux.Zip

plattform-Tool: https://dl.google.com/Android/repository/platform-tools_r23.0.1-linux.Zip

60
wtekiela

Sie möchten in der Lage sein, die gleiche Funktionalität der SDK Manager-GUI in einer Befehlszeile abzurufen.

Setzen Sie diesen Befehl ab, um alle verfügbaren Pakete aus dem Repository abzufragen. Die Abfrage gibt die Pakete mit einer Indexnummer auf der linken Seite zurück.

[[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
  ….

Sie können einen grep-Befehl verwenden, um Ihre Suche einzugrenzen. Beispielsweise:

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

Installieren Sie abschließend das gewünschte Paket, indem Sie die Indexnummer in diesem Befehl angeben.

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

Die Optionen haben folgende Bedeutung:

-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 
7
rgulia

Bei der Beantwortung meiner eigenen Frage habe ich festgestellt, dass der beste Weg, mein Ziel zu erreichen, die Verwendung von SDK-Manager Gradle-Plugin von Jake Wharton ist.

Es ist so einfach wie das Hinzufügen eines Gradle-Plugins. Alle erforderlichen SDK-Pakete werden bei Bedarf an dem in local.properties Angegebenen SDK-Speicherort installiert.

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'

Dieser Ansatz eignet sich besonders in einer Umgebung mit kopfloser CI. Vergessen Sie jedoch nicht, die Umgebungsvariable Android_HOME Hinzuzufügen, falls Sie noch nicht local.properties Haben (was höchstwahrscheinlich in einer CI-Umgebung der Fall ist).

3
akhy

Basierend auf: Wie installiere ich Android SDK Build Tools in der Befehlszeile? und anderen hier ist meine Version:

#!/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 $?
}
2
uthomas