Was sind die Android SDK Build-Tools, Plattform-Tools und Tools? Und welche Version soll verwendet werden?

330

Ich weiß, dass dies eine sehr rudimentäre Frage ist, aber zu meiner Überraschung konnte ich kein Dokument über Android SDK Build-Tools finden. Neben den Android SDK-Tools und den Android SDK Platform-Tools gibt es eine Reihe von Android SDK Build-Tools, wie im beigefügten Screenshot gezeigt. Könnte jemand auf eine Quelle verweisen, die alle erklärt, und dabei helfen, zu klären, wie eine bestimmte Version der Android SDK Build-Tools für die Verwendung ausgewählt wird?

Geben Sie hier die Bildbeschreibung ein

Bearbeitet (27.02.2014) :

Ich verstehe immer noch nicht alle Werkzeuge. Folgendes ist mein begrenztes Verständnis, das auf den neuesten Dokumenten von Google basiert:

  • Android SDK Build-Tools waren früher Komponenten von Android SDK Platform-Tools . Sie wurden von den Android SDK Platform-Tools entkoppelt, sodass die Build-Tools unabhängig von den IDE-Komponenten (Integrated Development Environment) aktualisiert werden können.
  • Android SDK Platform-Tools wurden angepasst, um die Funktionen der neuesten Android-Plattform zu unterstützen. Sie sind abwärtskompatibel, sodass Sie immer das neueste Update der Android SDK Platform-Tools verwenden, auch wenn Ihre App auf ältere Android-Plattformen abzielt.
  • SDK-Tools sind plattformunabhängig und werden unabhängig von der Android-Plattform benötigt, auf der Sie entwickeln.

Ich verstehe immer noch nicht, warum Android SDK Build-Tools aus Android SDK Platform-Tools entfernt werden sollen, die eine einzige Instanz haben und das Update einfach zu verwalten ist. Der einzige mögliche Grund, an den ich denken kann, ist, dass einige Apps auf ältere Build-Komponenten angewiesen sind, um sie zu erstellen. Das Google-Dokument erwähnt dies, erklärt jedoch nicht, warum. Wenn Sie sich die Versionshinweise ansehen, werden Sie feststellen, dass Updates von Android SDK Build-Tools hauptsächlich dazu dienen, Fehler zu beheben oder Unterstützung für neue Plattformen hinzuzufügen. Der einzige Grund, warum ich mir vorstellen kann, dass einige Apps ältere Versionen von Android SDK Build-Tools verwenden, ist, dass sie auf bestimmten Fehlern von Android SDK Build-Tools beruhen. Diese Apps würden nicht normal funktionieren, ohne mit diesen Fehlern erstellt zu werden. Ich wünschte, Google könnte dies besser erklären, indem es ein oder zwei Beispiele gibt, die zeigen, warum diese Fehler in den Tools für bestimmte Apps kritisch sind.

Hong
quelle

Antworten:

88

Über die Version der Android SDK Build-Tools lautet die Antwort

Standardmäßig verwendet das Android SDK die neueste heruntergeladene Version der Build Tools.

Quelle

In Eclipse können Sie mithilfe der sdk.buildtoolsEigenschaft in der project.propertiesDatei eine bestimmte Version auswählen .

Es scheint keine offizielle Seite zu geben, auf der alle Build-Tools erklärt werden. Hier ist, was das Android-Team dazu sagt.

Die [Build] -Tools wie aidl, aapt, dexdump und dx werden normalerweise von den Android-Buildtools oder den Android Development Tools (ADT) aufgerufen, sodass Sie diese Tools selten direkt aufrufen müssen. In der Regel sollten Sie sich auf die Build-Tools oder das ADT-Plugin verlassen, um sie nach Bedarf aufzurufen.

Quelle

Wie auch immer, hier ist eine Synthese der Unterschiede zwischen Tools, Plattform-Tools und Build-Tools:

  • Android SDK-Tools
    • Standort: $ANDROID_HOME/tools
    • Hauptwerkzeuge: Ant-Skripte (zum Erstellen Ihrer APKs) und ddms(zum Debuggen)
  • Android SDK Plattform-Tools
    • Standort: $ANDROID_HOME/platform-tools
    • Hauptwerkzeug: adb(um den Status eines Emulators oder eines Android-Geräts zu verwalten)
  • Android SDK Build-Tools
    • Standort: $ANDROID_HOME/build-tools/$VERSION/
    • Dokumentation
    • Hauptwerkzeuge: aapt(zum Generieren von R.java und nicht ausgerichteten, nicht signierten APKs), dx(zum Konvertieren von Java-Bytecode in Dalvik-Bytecode) und zipalign(zum Optimieren Ihrer APKs)
Lacton
quelle
Ich bin wirklich froh, dass es ein Änderungsprotokoll für verschiedene Build-Tools-Versionen gibt
Ewoks
@lacton Ich habe das alte Build-Tool (Version 17) für mein Projekt verwendet. Kann ich es mit dem neuesten Build-Tool neu erstellen?
user1156041
Können wir dieselben SDK + Build-Tools für Eclipse und Studio verwenden?
Muhammad Babar
38

Android SDK-Build-Tools werden zum Debuggen, Erstellen, Ausführen und Testen einer Android-Anwendung verwendet.

Android Build Tools können zum Entwickeln und Arbeiten über die Befehlszeile oder IDE (z. B. Eclipse oder Android Studio) verwendet werden.

Wird auch verwendet, um Android-Geräte anzuschließen und zu rooten (Fastboot, ADB und mehr ..)

Verwenden Sie immer die neueste (empfohlen)

Weitere Informationen zu Android Build-Tools und -Befehle

Mipreamble
quelle
Danke für die Information. Meinen Sie damit, dass Android Build Tools "verwendet wird, um Android-Geräte zu verbinden und sie zu rooten"? adbis ein Teil der Android Platform Tools. Ist adb auf Android Build Tools angewiesen, um zu funktionieren? Wenn das so ist, wie? Ich bin neugierig.
Hong
Mit adb können Dateien über die Befehlszeile verschoben und abgerufen werden. (Weitere Funktionen.) Fastboot kann zum Flashen von benutzerdefinierten Bootloadern verwendet werden. Diese Befehle sind jedoch für die Android-Entwicklung nur nützlich, wenn Sie das Terminal für die Entwicklung verwenden. Alles ist in der IDE selbst verfügbar.
Mipreamble
1
Nach meinem Verständnis verwendet Eclipse im Hintergrund adb.exe.
Hong
@mipreamble also was ist der unterschied zwischen android sdk: tools, plattform-tools und build-tools? Ich kann meine App ohne Build-Tools erstellen und ausführen.
Kreker
1
@ CJBS Ja. Das Festhalten an den eingestellten Werkzeugen für eine Version funktioniert. Build-Tools werden aktualisiert, sobald die neue Version von Android verfügbar ist. Sie möchten die Anwendung für die neuesten Android-Versionen kompilieren und testen.
Mipreamble
16

Ich überlasse die Diskussion über den Unterschied zwischen Build Tools, Platform Tools und Tools anderen. Aus praktischer Sicht müssen Sie nur die Antwort auf Ihre zweite Frage kennen:

Welche Version soll verwendet werden?

Antwort: Verwenden Sie die neueste Version.

Für diejenigen mit Android Studio mit Gradle, das buildToolsVersionhat in der festgelegt werden build.gradle(Modul: App - Datei).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

Woher bekomme ich die neueste Versionsnummer von Build Tools?

Öffnen Sie den Android SDK Manager.

  • Gehen Sie in Android Studio zu Extras > Android > SDK-Manager > Darstellung und Verhalten > Systemeinstellungen > Android SDK
  • Wählen Sie die Registerkarte SDK-Tools .
  • Wählen Sie Android SDK Build Tools aus der Liste aus
  • Aktivieren Sie die Option Paketdetails anzeigen .

Das letzte Element zeigt die neueste Version.

Geben Sie hier die Bildbeschreibung ein

Stellen Sie sicher, dass es installiert ist, und schreiben Sie diese Nummer als buildToolsVersionin build.gradle(Modul: App).

Suragch
quelle
1
Wenn es 24.0.2 gibt, warum werden 24.0.1 und 24 nicht als veraltet markiert (der eigenständige Manager ermöglicht das Ein- / Ausblenden veralteter Pakete)?
user1803551
3
@ user1803551, es ist nicht immer wünschenswert, automatisch die neueste Version der Build-Tools zu verwenden. Angenommen, Sie haben Ihre App bereits gründlich mit einer bestimmten Version der Build-Tools getestet. Wenn Sie Ihre Build-Tools aktualisieren, ist es möglich, dass eine Änderung dort etwas in Ihrer App beschädigt. Wenn Entwickler weiterhin alte Versionen von Build-Tools verwenden können, können sie sicher sein, dass ihr Build wie erwartet funktioniert. Wenn Sie sich das Muster dessen ansehen, was für veraltet erklärt wurde, können Sie sehen, dass 24 und 24.0.1 schließlich für veraltet erklärt werden.
Suragch
13

Details dazu finden Sie in diesen Android - Command Line Tools


tl; dr:

SDK-Tools:

  1. Android SDK Manager (sdkmanager)
  2. AVD Manager (avdmanager)
  3. Dalvik Debug Monitor Server (ddms)

Build-Tools:

  1. Unterzeichner
  2. proGuard
  3. zipalign
  4. jobb

Plattform-Tools:

  1. adb
  2. aidl, aapt, dexdump und dx
  3. bmgr
  4. logcat
Suhaib
quelle
1
aidl, aapt, dexdump und dx dies sind Komponenten von Build-Tools, keine Plattform-Tools
Masum
9

Die richtige Antwort ist

Entkoppelte die Build-spezifischen Komponenten des Android SDK von der Plattform-Tools-Komponente, sodass die Build-Tools unabhängig von den IDE-Komponenten (Integrated Development Environment) aktualisiert werden können.

Link (erweitern Sie Revision 17)

Kreker
quelle
4
Danke für die Information. Wenn neuere Versionen nur verbesserte ältere Versionen sind, warum hat Google dann nicht nur ein Build-Tool und aktualisiert es ständig wie SDK-Tools und Platform-Tools? Mit anderen Worten, was ist der Grund, ältere Versionen dort zu haben?
Hong
2
Ich habe gerade versucht, diese Antwort zu verbessern, aber es stellte sich heraus, dass ich sie bereits letztes Jahr positiv bewertet habe! @Hong, sie behalten die alten Build-Tools bei, da beim Aktualisieren der Tools einige Funktionen veraltet sind. App-Entwickler verfügen möglicherweise über Quellcode, der auf diesen Funktionen basiert, sodass die alten Versionen verfügbar bleiben, um diese alten Codebasen zu unterstützen.
Mateor
1
Sollten sie in diesem Fall eine Liste veralteter Funktionen haben, damit Entwickler genau wissen, ob sie noch alte Versionen verwenden müssen?
Hong
@ Hong: Das ist genau die Frage, nach der ich gesucht habe. Jetzt ... ab, um eine Antwort zu finden :)
DerpyNerd
2

Android SDK Build Tools sind genau das, was der Name sagt; Tools zum Erstellen von Android-Anwendungen. Es ist sehr wichtig, die neueste Version der Build-Tools zu verwenden (die von Ihrer IDE automatisch über das Android SDK ausgewählt wird). Der Grund, warum die alten Versionen dort verbleiben, ist die Unterstützung der Abwärtskompatibilität, dh wenn Ihre Projekte davon abhängen ältere Versionen der Build Tools.

Ojonugwa Jude Ochalifu
quelle