¿Qué son las herramientas de compilación, herramientas de plataforma y herramientas de Android SDK? ¿Y qué versión debería usarse?

331

Sé que esta es una pregunta muy rudimentaria, pero para mi sorpresa, no pude encontrar ningún documento sobre Android SDK Build-tools. Además de Android SDK Tools y Android SDK Platform-tools, hay un montón de Android SDK Build-tools como se muestra en la captura de pantalla adjunta. ¿Podría alguien señalar una fuente que los explique a todos y ayudar a aclarar cómo se elige una determinada versión de Android SDK Build-tools para su uso?

ingrese la descripción de la imagen aquí

Editado (2014-02-27) :

Todavía no entiendo completamente todas las herramientas. Lo siguiente es mi comprensión limitada basada en los últimos documentos de Google:

  • Las herramientas de compilación del SDK de Android solían ser componentes de las herramientas de la plataforma del SDK de Android . Se han desacoplado de las herramientas de la plataforma Android SDK, para que las herramientas de compilación se puedan actualizar independientemente de los componentes del entorno de desarrollo integrado (IDE).
  • Las herramientas de la plataforma Android SDK están personalizadas para admitir las características de la última plataforma Android. Son compatibles con versiones anteriores, por lo que siempre usa la última actualización de las herramientas de la plataforma Android SDK, incluso su aplicación se dirige a plataformas Android más antiguas.
  • Las herramientas de SDK son independientes de la plataforma y son necesarias, independientemente de la plataforma de Android en la que esté desarrollando.

Todavía no entiendo la lógica de sacar las herramientas de compilación del SDK de Android de las herramientas de la plataforma del SDK de Android, que tiene una única instancia y es fácil de administrar la actualización. La única razón posible en la que puedo pensar es que algunas aplicaciones tienen que depender de componentes de compilación anteriores para construirlas. El documento de Google menciona esto, pero no explica por qué. Al observar las notas de la versión, notará que las actualizaciones de las herramientas de compilación del SDK de Android son principalmente para corregir errores o agregar soporte para nuevas plataformas. La única razón por la que puedo pensar en algunas aplicaciones para usar versiones anteriores de las herramientas de compilación del SDK de Android es que dependen de ciertos errores de las herramientas de compilación del SDK de Android. Estas aplicaciones no funcionarían normalmente sin estar construidas con estos errores. Desearía que Google pudiera explicar esto mejor dando uno o dos ejemplos que muestren por qué estos errores en las herramientas son críticos para ciertas aplicaciones.

Hong
fuente

Respuestas:

88

Sobre la versión de Android SDK Build-tools , la respuesta es

De manera predeterminada, el SDK de Android utiliza la versión descargada más reciente de Build Tools.

Fuente

En Eclipse, puede elegir una versión específica utilizando la sdk.buildtoolspropiedad en el project.propertiesarchivo.

Parece que no hay una página oficial que explique todas las herramientas de compilación. Esto es lo que el equipo de Android dice sobre esto.

Las herramientas [compilar], como aidl, aapt, dexdump y dx, generalmente son llamadas por las herramientas de compilación de Android o las Herramientas de desarrollo de Android (ADT), por lo que rara vez necesita invocar estas herramientas directamente. Como regla general, debe confiar en las herramientas de compilación o el complemento ADT para llamarlos según sea necesario.

Fuente

De todos modos, aquí hay una síntesis de las diferencias entre herramientas, herramientas de plataforma y herramientas de compilación:

  • Herramientas de Android SDK
    • Ubicación: $ANDROID_HOME/tools
    • Herramientas principales: scripts de hormigas (para construir sus APK) y ddms(para depurar)
  • Android SDK Platform-tools
    • Ubicación: $ANDROID_HOME/platform-tools
    • Herramienta principal: adb(para administrar el estado de un emulador o un dispositivo Android)
  • Android SDK Build-tools
    • Ubicación: $ANDROID_HOME/build-tools/$VERSION/
    • Documentación
    • Herramientas principales: aapt(para generar R.java y APK sin alinear, sin firmar), dx(para convertir el bytecode de Java a Dalvik bytecode) y zipalign(para optimizar sus APK)
lacton
fuente
Estoy muy contento de que haya un registro de cambios para diferentes versiones de herramientas de compilación
Ewoks
@lacton Usé la herramienta de compilación anterior (versión 17) para mi proyecto. ¿Puedo reconstruirlo con la última herramienta de compilación?
user1156041
¿Podemos usar las mismas herramientas de compilación sdk + para eclipse y studio?
Muhammad Babar
38

Las herramientas de compilación del SDK de Android se utilizan para depurar, compilar, ejecutar y probar una aplicación de Android.

Las herramientas de compilación de Android se pueden usar para desarrollar y trabajar desde la línea de comandos o IDE (es decir, Eclipse o Android Studio).

También se utiliza para conectar dispositivos Android y rootearlos (fastboot, adb y más ...)

Siempre use lo último. (Recomendado)

Más información sobre herramientas y comandos de Android Build

mipreamble
fuente
Gracias por la info. ¿Quiere decir que Android Build Tools se "usa para conectar dispositivos Android y rootearlos"? adbis una parte de las herramientas de la plataforma Android. ¿Adb depende de Android Build Tools para funcionar? ¿Si es así, cómo? Tengo curiosidad
Hong
adb se puede usar para empujar y extraer archivos de la línea de comandos. (Más funcionalidades). Fastboot puede usarse para flashear cargadores de arranque personalizados. Sin embargo, estos comandos no son útiles para el desarrollo de Android a menos que use la terminal para el desarrollo. Todo está disponible en el propio IDE.
mipreamble
1
Entiendo que Eclipse usa adb.exe en segundo plano.
Hong
@mipreamble, ¿cuál es la diferencia entre Android SDK: herramientas, herramientas de plataforma y herramientas de compilación? Puedo compilar y ejecutar mi aplicación sin herramientas de compilación.
kreker
1
@CJBS Sí. Seguir con las herramientas establecidas para una versión funcionará. Las herramientas de compilación se actualizan cuando aparece la nueva versión de Android. Desea compilar y probar la aplicación para las últimas versiones de Android.
mipreamble
16

Dejaré la discusión de la diferencia entre Build Tools, Platform Tools y Tools a otros. Desde un punto de vista práctico, solo necesita saber la respuesta a su segunda pregunta:

¿Qué versión se debe usar?

Respuesta: use la versión más reciente.

Para aquellos que usan Android Studio con Gradle, buildToolsVersiondebe configurarse en el build.gradlearchivo (Módulo: aplicación).

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"

    ...
}

¿Dónde obtengo el número de versión más reciente de Build Tools?

Abra el Administrador de Android SDK.

  • En Android Studio, vaya a Herramientas > Android > SDK Manager > Apariencia y comportamiento > Configuración del sistema > Android SDK
  • Elija la pestaña Herramientas del SDK .
  • Seleccione Android SDK Build Tools de la lista
  • Marque Mostrar detalles del paquete .

El último elemento mostrará la versión más reciente.

ingrese la descripción de la imagen aquí

Asegúrese de que esté instalado y luego escriba ese número como buildToolsVersionen build.gradle(Módulo: aplicación).

Suragch
fuente
1
Si hay 24.0.2, ¿por qué 24.0.1 y 24 no están marcados como obsoletos (el administrador independiente permite mostrar / ocultar paquetes obsoletos)?
user1803551
3
@ user1803551, no siempre es deseable usar automáticamente la versión más reciente de herramientas de compilación. Por ejemplo, supongamos que ya ha probado a fondo su aplicación con una versión particular de herramientas de compilación. Si actualiza sus herramientas de compilación, es posible que un cambio allí rompa algo en su aplicación. Permitir que los desarrolladores sigan utilizando versiones antiguas de herramientas de compilación les permite asegurarse de que su compilación seguirá funcionando como se esperaba. Si observa el patrón de lo que se declara obsoleto, puede ver que 24 y 24.0.1 eventualmente se declararán obsoletos.
Suragch
13

Puede encontrar detalles sobre estos en este Android - Herramientas de línea de comandos


tl; dr:

Herramientas SDK:

  1. Administrador de SDK de Android (sdkmanager)
  2. Administrador de AVD (avdmanager)
  3. Servidor de monitor de depuración Dalvik (ddms)

Herramientas de construcción:

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

Herramientas de plataforma:

  1. adb
  2. aidl, aapt, dexdump y dx
  3. bmgr
  4. logcat
Suhaib
fuente
1
aidl, aapt, dexdump y dx son componentes de herramientas de compilación, no herramientas de plataforma
Masum
9

La respuesta correcta es

Desacopla los componentes específicos de compilación del SDK de Android del componente de herramientas de plataforma, de modo que las herramientas de compilación se pueden actualizar independientemente de los componentes del entorno de desarrollo integrado (IDE).

enlace (ampliar Revisión 17)

kreker
fuente
44
Gracias por la información. Si las versiones más recientes son solo versiones mejoradas, ¿por qué Google no tiene solo una herramienta de compilación y sigue actualizándola como SDK Tools y Platform-tools? En otras palabras, ¿cuál es la razón para tener versiones anteriores allí?
Hong
2
¡Intenté votar esta respuesta pero resulta que ya la voté el año pasado! @Hong, conservan las herramientas de compilación antiguas porque, a medida que actualizan las herramientas, algunas funciones quedan obsoletas. Pero los desarrolladores de aplicaciones pueden tener código fuente que se basa en esas características para que mantengan las versiones anteriores disponibles para admitir esas bases de código antiguas.
mateor
1
En este caso, ¿deberían tener una lista de características obsoletas para que los desarrolladores puedan saber exactamente si todavía tienen que usar versiones antiguas?
Hong
@Hong: Esa es exactamente la pregunta que estaba buscando. Ahora ... fuera para encontrar una respuesta :)
DerpyNerd
2

Android SDK Build Tools son exactamente lo que el nombre dice que son; herramientas para crear aplicaciones de Android. Es muy importante utilizar la última versión de herramientas de compilación (seleccionada automáticamente por su IDE a través del SDK de Android), pero la razón por la que quedan las versiones anteriores es para admitir la compatibilidad con versiones anteriores, es decir, si sus proyectos dependen de versiones anteriores de las herramientas de compilación.

Ojonugwa Jude Ochalifu
fuente