Quels sont les outils de construction, les outils de plate-forme et les outils du SDK Android? Et quelle version utiliser?

331

Je sais que c'est une question très rudimentaire, mais à ma grande surprise, je n'ai trouvé aucun document sur les outils de construction du SDK Android. Outre les outils SDK Android et les outils de la plate-forme SDK Android, il existe un tas d'outils de construction SDK Android, comme indiqué dans la capture d'écran ci-jointe. Quelqu'un pourrait-il indiquer une source qui les explique tous et aider à clarifier comment une certaine version des outils de construction du SDK Android est choisie pour être utilisée?

entrez la description de l'image ici

Modifié (2014-02-27) :

Je ne comprends toujours pas tous les outils. Ce qui suit est ma compréhension limitée basée sur les derniers documents de Google:

  • Les outils de construction du SDK Android étaient auparavant des composants des outils de la plateforme du SDK Android . Ils ont été découplés des outils de la plateforme SDK Android, de sorte que les outils de génération peuvent être mis à jour indépendamment des composants de l'environnement de développement intégré (IDE).
  • Les outils de plateforme Android SDK sont personnalisés pour prendre en charge les fonctionnalités de la dernière plateforme Android. Ils sont rétrocompatibles afin que vous utilisiez toujours la dernière mise à jour des outils de la plate-forme SDK Android, même si votre application cible les anciennes plates-formes Android.
  • Les outils SDK sont indépendants de la plateforme et sont requis quelle que soit la plateforme Android sur laquelle vous développez.

Je ne comprends toujours pas la raison de retirer les outils de construction du SDK Android des outils de la plate-forme du SDK Android qui ont une seule instance et sont faciles à gérer la mise à jour. La seule raison possible à laquelle je peux penser est que certaines applications doivent s'appuyer sur des composants de construction plus anciens pour les construire. Le document de Google le mentionne, mais n'explique pas pourquoi. En regardant les notes de version, vous remarquerez que les mises à jour des outils de construction du SDK Android sont principalement destinées à corriger des bogues ou à ajouter la prise en charge de nouvelles plateformes. La seule raison pour laquelle je peux penser que certaines applications utilisent d'anciennes versions des outils de construction du SDK Android est qu'elles reposent sur certains bogues des outils de construction du SDK Android. Ces applications ne fonctionneraient pas normalement sans être construites avec ces bogues. Je souhaite que Google puisse mieux expliquer cela en donnant un ou deux exemples montrant pourquoi ces bogues dans les outils sont critiques pour certaines applications.

Hong
la source

Réponses:

88

À propos de la version des outils de construction du SDK Android , la réponse est

Par défaut, le SDK Android utilise la version téléchargée la plus récente des outils de génération.

La source

Dans Eclipse, vous pouvez choisir une version spécifique en utilisant la sdk.buildtoolspropriété dans le project.propertiesfichier.

Il ne semble pas y avoir de page officielle expliquant tous les outils de construction. Voici ce que l'équipe Android en dit.

Les outils [build], tels que aidl, aapt, dexdump et dx, sont généralement appelés par les outils de build Android ou les outils de développement Android (ADT), vous n'avez donc que rarement besoin d'appeler ces outils directement. En règle générale, vous devez vous fier aux outils de génération ou au plugin ADT pour les appeler selon vos besoins.

La source

Quoi qu'il en soit, voici une synthèse des différences entre les outils, les outils de plateforme et les outils de build:

  • Outils SDK Android
    • Emplacement: $ANDROID_HOME/tools
    • Outils principaux: scripts ant (pour construire vos APK) et ddms(pour le débogage)
  • Outils de plate-forme SDK Android
    • Emplacement: $ANDROID_HOME/platform-tools
    • Outil principal: adb(pour gérer l'état d'un émulateur ou d'un appareil Android)
  • Outils de construction du SDK Android
    • Emplacement: $ANDROID_HOME/build-tools/$VERSION/
    • Documentation
    • Outils principaux: aapt(pour générer R.java et APK non alignés et non signés), dx(pour convertir le bytecode Java en bytecode Dalvik), et zipalign(pour optimiser vos APK)
lacton
la source
Je suis vraiment content qu'il existe un journal des modifications pour différentes versions d'outils de construction
Ewoks
@lacton J'ai utilisé l'ancien outil de build (version 17) pour mon projet. Puis-je le reconstruire avec le dernier outil de build?
user1156041
Pouvons-nous utiliser les mêmes outils de construction sdk + pour eclipse et studio?
Muhammad Babar
38

Les outils de construction du SDK Android sont utilisés pour déboguer, créer, exécuter et tester une application Android.

Les outils de construction Android peuvent être utilisés pour développer et travailler à partir de la ligne de commande ou de l'IDE (c'est-à-dire Eclipse ou Android Studio).

Également utilisé pour connecter des appareils Android et les rooter (fastboot, adb et plus ..)

Utilisez toujours la dernière version (recommandée)

Plus d'informations sur les outils et commandes Android Build

mi-préambule
la source
Merci pour l'info. Voulez-vous dire que les outils de construction Android sont "utilisés pour connecter des appareils Android et les rooter"? adbis une partie des outils de plate-forme Android. Adb dépend-il des outils de build Android pour fonctionner? Si c'est le cas, comment? Je suis curieux.
Hong
adb peut être utilisé pour pousser et extraire des fichiers à partir de la ligne de commande. (Plus de fonctionnalités.) Fastboot peut être utilisé pour flasher des chargeurs de démarrage personnalisés. Cependant, ces commandes ne sont pas utiles pour le développement Android, sauf si vous utilisez un terminal pour le développement. Tout est disponible dans l'IDE lui-même.
mipreamble
1
Ma compréhension est qu'Eclipse utilise adb.exe en arrière-plan.
Hong
@mipreamble alors quelle est la différence entre le sdk Android: outils, outils de plateforme et outils de build? Je peux créer et exécuter mon application sans outils de génération.
kreker
1
@CJBS Oui. Rester avec les outils définis pour une version fonctionnera. Les outils de construction sont mis à jour au fur et à mesure de l'arrivée de la nouvelle version d'Android. Vous souhaitez compiler et tester l'application pour les dernières versions d'Android.
mipreamble
16

Je laisse la discussion de la différence entre les outils de construction, les outils de plate-forme et les outils à d'autres. D'un point de vue pratique, il vous suffit de connaître la réponse à votre deuxième question:

Quelle version utiliser?

Réponse: utilisez la version la plus récente.

Pour ceux qui utilisent Android Studio avec Gradle, le buildToolsVersiondoit être défini dans le build.gradlefichier (Module: app).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

Où puis-je obtenir le numéro de version le plus récent des outils de génération?

Ouvrez le Gestionnaire de SDK Android.

  • Dans Android Studio, accédez à Outils > Android > Gestionnaire de SDK > Apparence et comportement > Paramètres système > SDK Android
  • Choisissez l' onglet SDK Tools .
  • Sélectionnez Android SDK Build Tools dans la liste
  • Cochez Afficher les détails du package .

Le dernier élément affichera la version la plus récente.

entrez la description de l'image ici

Assurez-vous qu'il est installé, puis écrivez ce numéro comme buildToolsVersiondans build.gradle(Module: app).

Suragch
la source
1
S'il existe la version 24.0.2, pourquoi les versions 24.0.1 et 24 ne sont-elles pas marquées comme obsolètes (le gestionnaire autonome permet d'afficher / masquer les packages obsolètes)?
user1803551
3
@ user1803551, il n'est pas toujours souhaitable d'utiliser automatiquement la version la plus récente des outils de build. Par exemple, supposons que vous ayez déjà testé votre application en profondeur avec une version particulière des outils de construction. Si vous mettez à jour vos outils de génération, il est possible qu'un changement à cet endroit puisse casser quelque chose dans votre application. Permettre aux développeurs de continuer à utiliser les anciennes versions des outils de build leur permet de s'assurer que leur build continuera de fonctionner comme prévu. Si vous regardez le modèle de ce qui est déclaré obsolète, vous pouvez voir que 24 et 24.0.1 seront finalement déclarés obsolètes.
Suragch
13

Vous pouvez trouver des détails à ce sujet dans cet Android - Outils de ligne de commande


tl; dr:

Outils SDK:

  1. Gestionnaire de SDK Android (sdkmanager)
  2. Gestionnaire AVD (avdmanager)
  3. Serveur Dalvik Debug Monitor (ddms)

Outils de construction:

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

Outils de la plateforme:

  1. adb
  2. aidl, aapt, dexdump et dx
  3. bmgr
  4. logcat
Suhaib
la source
1
aidl, aapt, dexdump et dx ce sont des composants d'outils de build et non des outils de plateforme
Masum
9

La bonne réponse est

Découplé les composants spécifiques au build du SDK Android du composant platform-tools, afin que les outils de build puissent être mis à jour indépendamment des composants de l'environnement de développement intégré (IDE).

lien (développer la révision 17)

kreker
la source
4
Merci pour l'information. Si les versions plus récentes ne sont que des versions plus anciennes améliorées, pourquoi Google n'a-t-il pas un seul Build-tools et continue de le mettre à jour comme SDK Tools et Platform-tools? En d'autres termes, quelle est la raison d'avoir des versions plus anciennes là-bas?
Hong
2
J'ai juste essayé de voter pour cette réponse mais il s'avère que je l'ai déjà votée l'année dernière! @Hong, ils conservent les anciens outils de construction, car à mesure qu'ils mettent à jour les outils, certaines fonctionnalités deviennent obsolètes. Mais les développeurs d'applications peuvent avoir du code source qui repose sur ces fonctionnalités afin qu'ils gardent les anciennes versions disponibles pour prendre en charge ces anciennes bases de code.
maté
1
Dans ce cas, devraient-ils avoir une liste de fonctionnalités obsolètes afin que les développeurs puissent savoir exactement s'ils doivent encore utiliser les anciennes versions?
Hong
@Hong: C'est exactement la question que je cherchais. Maintenant ... off pour trouver une réponse :)
DerpyNerd
2

Les outils de construction du SDK Android sont exactement ce que leur nom l'indique; outils pour créer des applications Android.Il est très important d'utiliser la dernière version des outils de construction (sélectionnée automatiquement par votre IDE via le SDK Android), mais la raison pour laquelle les anciennes versions sont conservées est de prendre en charge la compatibilité descendante, c'est-à-dire si vos projets dépendent de anciennes versions des outils de construction.

Ojonugwa Jude Ochalifu
la source